ssh公開鍵認証の設定
Webに溢れている情報ではあるがメモしておく。 ssh通信時にパスワード入力が不要になる。
SSH鍵ペア作成
ssh接続元の環境で、
~/.ssh/id_rsa, id_rsa.pub が存在しないなら
ssh-keygen
で公開鍵、秘密鍵を制せする。パスフレーズを入力が求められる。
公開鍵をリモートマシンに設置
scp ~/.ssh/id_rsa.pub user_name@host_name:~
リモートマシンにログインして.ssh/authorized_keys
に公開鍵を書き込む。
モードの設定も適切に。
mkdir -p -m 700 .ssh
cat id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
rm id_rsa.pub
認証エージェント(ssh-agent)に秘密鍵を覚えさせる
ssh-agentはOSX, Ubuntuの場合、OSにログインした時から常駐している。 起動させるには
eval `ssh-agent`
ssh-add
コマンドで、ssh-agentに秘密鍵を覚えさせる。
コマンドを実行すると秘密鍵を解くためのパスフレーズ入力を求められる。
以上設定すると、以後、sshでリモートホストにログインする際にパスワード入力が不要になる。
期待通り動作しない場合は、.sshディレクトリの所有権やモードが正しいか調べてみる。
リモートホストのユーザ認証関連のログを調べてみるのも良い。
安全のためにPCの前から離れる時はssh-add -D
で全ての秘密鍵を忘れさせると良い。
SSHクライアントの設定ファイル(~/.ssh/config)
Host example.com
User your_name
Port 22 # デフォルト22なのでこれは書かなくても良いが
Host *
ForwardAgent yes
ServerAliveInterval 300
ForwardAgent
をyesにすると、リモートホストから更に別のリモートホストに接続、を繰り返しても認証エージェントを引き継げる。リモートホストには公開鍵を設置しておけば、秘密鍵を設置する必要はない。
ServerAliveInterval
はSSHクライアントからリモートホストに返答を要求するメッセージを送る感覚を指定する(秒単位)。デフォルトは0で、メッセージは送られない。ネットワーク環境によりssh接続が切れやすい場合、設定しておくと良い。
参考書籍
Ruby on Rails環境構築ガイド, 黒田努, 2013
- 作者: 黒田努
- 出版社/メーカー: インプレス
- 発売日: 2013/03/22
- メディア: Kindle版
- この商品を含むブログを見る