Tips記事
» 2002年02月06日 00時00分 UPDATE

ノンパスワードでログインしたい〜sshプロトコルバージョン2編〜

[木田佳克,ITmedia]

 ここではsshプロトコルバージョン2で実現するノンパスワード環境の構築手順を紹介する。詳細なログは省略している個所もあるため「ノンパスワードでログインしたい〜sshプロトコルバージョン1編〜」Tipsも合わせて参考にしてほしい。読んでいく上で注意すべき点は,次の通りだ。

接続元: speed-ps (プロンプトをパープルで表示)
接続先: speed-rh (プロンプトをイエローで表示)
アカウント: ykida

1. まず最初に接続先と接続元でssh-keygenを実行して暗号認証ファイルを作成しよう

[ykida@speed-rh]$ cd
[ykida@speed-rh]$ ssh-keygen -t rsa

〜中略〜

[ykida@speed-ps]$ cd
[ykida@speed-ps]$ ssh-keygen -t rsa

〜中略〜

※ここまでの操作で秘密鍵ファイル「.ssh/id_rsa」と,公開鍵ファイル「.ssh/id_rsa.pub」が生成される。別にそれぞれのマシンの前で操作する必要は無く,接続先にはログイン後にssh-keygenを実行すればよい

2. 生成された公開鍵内容を接続先のauthorized_keys2ファイルに追加する

[ykida@speed-ps]$ scp ~/.ssh/id_rsa.pub ykida@speed-rh:~/.ssh/authorized_keys2
ykida@speed-rh's password:
id_rsa 100% |*************************************************| 951 00:00

※ここで注目しておきたいのは,「パスフレーズ」ではなく「パスワード」(password:)が要求されている点だ

 接続先にauthorized_keys2ファイルが存在することも考えられる。その場合には,次のように中間ファイルとしてコピーすればよいだろう。万全を考える場合上記の直コピーは危険かもしれない。次の手順では,上記の例とは異なり接続先のホームディレクトリにコピーしている点に注意してほしい。

[ykida@speed-ps]$ scp ~/.ssh/id_rsa.pub ykida@speed-rh:.
ykida@speed-rh's password:
identity.pub 100% |*************************************************| 333 00:00

※ 次に,接続先(speed-rh)へログインして「id_rsa.pub」の内容を「authorized_keys2」に追加しよう。追加後には,id_rsa.pubファイルを削除することを忘れずに

[ykida@speed-rh]$ cd
[ykida@speed-rh]$
cat id_rsa.pub >> .ssh/authorized_keys2
[ykida@speed-rh]$ rm id_rsa.pub
rm: remove `id_rsa.pub'? y

 以上の操作によって,接続元から接続先にログインする際,次のようにパスフレーズの問い合わせのみでログインができるようになる(パスワードはスキップされた)。

3. 接続先にログインを試みるとパスフレーズだけの問い合わせになる

[ykida@speed-ps]$ ssh speed-rh
Enter passphrase for key '/home/ykida/.ssh/id_rsa':
[ykida@speed-rh]$

※ パスフレーズの変更は接続元で「ssh-keygen -p」を実行すればよい。ここでの表現が「パスワード」ではなく「パスフレーズ」と呼ぶ理由には,文字列にスペースを含んでも構わないためだ。スペースを混在させるとパスワードクラックを防止できる確立が高くなるだろう

4. authorized_keys2ファイルのパーミッションを600に設定しておこう

[ykida@speed-rh]$ chmod 600 ~/.ssh/authorized_keys2

※ 他のユーザーなどに中身を見られないようパーミッションを変更しておく

 パスフレーズを空で設定していた場合(もちろん薦められない),この時点でパスワード入力無しにログインができるようになっているはずだ。しかし,パスフレーズを設定した場合には,前述のようにログイン時に「Enter passphrase for key ...」といった「パスフレーズ」を要求されるようになる。これではノンパスワードが実現されていない。ノンパスを実現するには,自力でパスフレーズを入力する代わりに「ssh-agent」と呼ばれるデーモンを利用して入力代行させるのが一般的だ。

 詳細は,「ssh-agentでパスフレーズを記憶させる」Tipsを参考にしてほしい。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ