SSH
Terminal

keychainとssh-agentを使用しパスフレーズ無しにsshログイン

More than 5 years have passed since last update.

keychainとssh-agentを組み合わせると、一度ssh秘密鍵のパスフレーズの入力後、パスフレーズの入力無しにsshログインが可能になる。


  • ssh-agentは、秘密鍵をキャッシュし、

  • keychainは、ssh-agentを管理する。


前準備


sshの秘密鍵・公開鍵の生成

$ ssh-keygen -t dsa    # 強力なパスフレーズを入力するべき

下記に秘密鍵と公開鍵が生成される。


  • ~/.ssh/id_dsa

  • ~/.ssh/id_dsa.pub


生成した公開鍵をログイン先に登録(ssh-copy-idを使用)

手動でログイン先に公開鍵を登録するのはめんどくさいので、ヘルパーコマンド(ssh-copy-id)を使用して公開鍵を登録

$ ssh-copy-id -i ~/.ssh/id_dsa.pub remote_host


keychainの設定

~/.bash_profileや~/.zshenvなどのシェルのスタートアップスクリプトに下記設定を記述

keychain --nogui --quiet ~/.ssh/id_dsa

source ~/.keychain/$HOST-sh

次回のシェル起動時には下記の入力が指示される。

keychainは、デーモン動作するのでssh秘密鍵のパスフレーズの入力は最初のシェル起動時の一回だけですむ。

Enter passphrase for /home/your_name/.ssh/id_dsa: [パスフレーズを入力]


パスフレーズ無しにsshログインできなかったときの確認事項


  • ログイン先の~/.ssh/authorized_keys に生成した公開鍵が登録されていることを確認。

  • keychainコマンドを実行し、ssh-agentが動作しているか確認。


参考

Gentoo Linux keychainガイド

http://www.gentoo.org/doc/ja/keychain-guide.xml

ssh-agent & keychain の勉強

http://www.hasta-pronto.org/2006/12/10/sshagent-keycha.html