ここではsshプロトコルバージョン2で実現するノンパスワード環境の構築手順を紹介する。詳細なログは省略している個所もあるため「ノンパスワードでログインしたい〜sshプロトコルバージョン1編〜」Tipsも合わせて参考にしてほしい。読んでいく上で注意すべき点は,次の通りだ。
接続元: speed-ps (プロンプトをパープルで表示)
接続先: speed-rh (プロンプトをイエローで表示)
アカウント: ykida
1. まず最初に接続先と接続元でssh-keygenを実行して暗号認証ファイルを作成しよう
[ykida@speed-rh]$ cd [ykida@speed-ps]$ cd ※ここまでの操作で秘密鍵ファイル「.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 ※ここで注目しておきたいのは,「パスフレーズ」ではなく「パスワード」(password:)が要求されている点だ |
接続先にauthorized_keys2ファイルが存在することも考えられる。その場合には,次のように中間ファイルとしてコピーすればよいだろう。万全を考える場合上記の直コピーは危険かもしれない。次の手順では,上記の例とは異なり接続先のホームディレクトリにコピーしている点に注意してほしい。
[ykida@speed-ps]$ scp ~/.ssh/id_rsa.pub ykida@speed-rh:. ※ 次に,接続先(speed-rh)へログインして「id_rsa.pub」の内容を「authorized_keys2」に追加しよう。追加後には,id_rsa.pubファイルを削除することを忘れずに [ykida@speed-rh]$ cd |
以上の操作によって,接続元から接続先にログインする際,次のようにパスフレーズの問い合わせのみでログインができるようになる(パスワードはスキップされた)。
3. 接続先にログインを試みるとパスフレーズだけの問い合わせになる
[ykida@speed-ps]$ ssh 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.