Hatena::Grouplinux2

server_setting_memo このページをアンテナに追加 RSSフィード

2009-12-20 (Sunday)

[]sshで公開鍵認証を使ってログイン sshで公開鍵認証を使ってログイン - server_setting_memo を含むブックマーク はてなブックマーク - sshで公開鍵認証を使ってログイン - server_setting_memo sshで公開鍵認証を使ってログイン - server_setting_memo のブックマークコメント

今更ながら、RSA公開鍵認証方式を使ったsshログインについてまとめておきたいと思います。


windowsでのsshクライアントにはputtyを使うことにします。

他の環境については、下の方にある環境セクションに書いておきました。

また、SSHプロトコルにはSSH2 RSAを使うことにします。


windowsからlinuxログインする方法

linuxでの作業は、ログインさせたいユーザで行います。

最後の方に出てくるauthorized_keysの内容が

ログインの可否に関わってきます。


[Windows側]

1. puttygen.exeを使ってSSH2鍵ペア作成

# 各々の鍵ファイルの名前は以下とします。

# 公開鍵をid_rsa_putty.pub

秘密鍵をid_rsa.ppk


2. id_rsa_putty.pubをフラッシュメモリ等でlinux側へ移動

# See also google:man-in-the-middle Attack


[linux側]

3. id_rsa_putty.pubをOpenSSH形式に変換

変換した公開鍵ファイルの名前をid_rsa_ssh.pubとします。

$ ssh-keygen -i -f id_rsa_putty.pub > id_rsa_ssh.pub

4. id_rsa_ssh.pubをauthorized_keysに追記する

authorized_keysのフォーマットの詳細についてはsshd(8)を調べてください。

$ cat id_rsa_ssh.pub >> ~/.ssh/authorized_keys

5. パーミッションを600にしておく

$ chmod 600 ~/.ssh/authorized_keys

man sshによると、

This file is not highly sensitive, but the

recommended permissions are read/write for the user, and not

accessible by others.

とあるので、600にしておきましょう。


公開鍵は、一回の鍵生成について共通である(あるユーザ専用のものではない)ため、

今回セットアップしたユーザ以外のユーザでも、

.ssh/authorized_keysの中に同じエントリを持っていれば

ログインができるようになります。


つまり、ユーザAのauthorized_keysをユーザBにコピーしてあげれば

ユーザBは同じwindowsマシンからログインできるようになります。

# ただしwindows側でputtyログインユーザを変更する必要があります

しかし逆を言えば、authorized_keysを誰からも読めるようにしてしまうと、

許可していないユーザもログインできるようになるため、

authorized_keysのパーミッションはきちんと設定しておきましょう。

# 通常はauthorized_keysが納められている

ディレクトリ.sshパーミッションは700になっているので

# その心配はないと思いますが。


環境

  • windows(putty)の環境
    • Release 0.60-jp20070603
  • linuxの環境
    • OpenSSH_5.2p1, OpenSSL 0.9.8k 25 Mar 2009

linuxAからlinuxBへログインする方法

1. ssh-keygenを使ってSSH2鍵ペア作成

linuxAで、

$ ssh-keygen

とします。

鍵ファイルの名前が聞かれますが、デフォルト名でよければそのままEnter。

その後パスフレーズを聞かれます。


パスフレーズは認証する際にログインパスワードの代わりに必要なものです。

ログインパスワードは、ログインする度に入力する必要がありますが、

このパスフレーズは、ssh-agentを起動しておくことによって

最初に一回入力し認証された後は、入力する必要がなくなります。

# 余談ですが、gnomeを使っていればgnome-keyringと組み合わせて

# もっと手間を省けるかもしれません。


2. id_rsa.pubをフラッシュメモリ等でlinuxBへ移動

上記1.の鍵ファイルの生成時に、デフォルト名を使用していれば

$HOME/.ssh/id_rsaと$HOME/.ssh/id_rsa.pubが作成されているはずです。

id_rsaが秘密鍵、id_rsa.pubが公開鍵です。

ちなみにputtyで作った鍵と違って、公開鍵形式の変換はきっと必要ありません。


3. linuxAから移動してきたid_rsa.pubをlinuxBのauthorized_keysに追記する

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

4. パーミッションを600にしておく

$ chmod 600 ~/.ssh/authorized_keys

環境

  • linuxAの環境
    • OpenSSH_5.1p1, OpenSSL 0.9.8h 28 May 2008
  • linuxBの環境
    • OpenSSH_5.2p1, OpenSSL 0.9.8k 25 Mar 2009

参考

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/429usekeyssh.html

ゲスト



トラックバック - http://linux2.g.hatena.ne.jp/pneumaster/20091220