前にOpenSSHでパスワードなしでログインする方法を書きました。
パスワードなしの鍵束を作る方法ですが、もっと安全で便利なkeychainを使う方法がありました。
ssh-keygen -pですぐにパスワードを付けて、この方法に切り替えましょう。
前回の記事でauthorized_keysを作るところまでは、一緒でパスフレーズは設定したあとにkeychainを使います。
keychainのインストール
$ sudo aptitude install keychain [sudo] password for ksaito: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています Reading state information... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 タグのデータベースを構築しています... 完了 以下の新規パッケージがインストールされます: keychain 0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 33.1kB のアーカイブを取得する必要があります。 展開後に 156kB のディスク領域が新たに消費さ れます。 拡張状態情報を書き込んでいます... 完了 取得:1 http://jp.archive.ubuntu.com gutsy/universe keychain 2.6.6-1 [33.1kB] 33.1kB を 0s 秒でダウンロードしました (168kB/s) 未選択パッケージ keychain を選択しています。 (データベースを読み込んでいます ... 現在 118075 個のファイルとディレクトリがインストールされています。) (.../keychain_2.6.6-1_all.deb から) keychain を展開しています... keychain (2.6.6-1) を設定しています ... パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています Reading state information... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 拡張状態情報を書き込んでいます... 完了 タグのデータベースを構築しています... 完了 $
keychainの設定
keychainを実行するとkeychainを使うために必要な環境変数を設定するファイルを~/.keychainに作成します。
引数に指定した秘密鍵のパスフレーズを入力するとssh-agentが起動します。
.keychainに生成されたファイルには、SSH_AUTH_SOCKとSSH_AGENT_PIDという環境変数が設定されます。
sshは、環境変数に設定されたssh-agentから秘密鍵パスフレーズを聞くのでパスワードの入力を求められません。
$ keychain ~/.ssh/id_rsa KeyChain 2.6.6; http://www.gentoo.org/proj/en/keychain/ Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL * Initializing ~/.keychain/debian-sh file... * Initializing ~/.keychain/debian-csh file... * Initializing ~/.keychain/debian-fish file... * Starting ssh-agent * Adding 1 ssh key(s)... Enter passphrase for ~/.ssh/id_rsa: Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa) $ source ~/.keychain/`hostname`-sh $ ps x | grep ssh-agent 14801 ? Ss 0:00 ssh-agent 14832 pts/0 S+ 0:00 grep ssh-agent $ ssh debian10 hostname debian10 ksaito@ubuntu:~$ $ $
.bash_profileへの設定
.bash_profileに設定するとパスワードの入力は、求められなくなります。
マシンがリブートされたときには、再度、keychainを実行する必要がありますが、パスワードなしの鍵束よりセキュアです。
$ grep keychain .bash_profile source ~/.keychain/debian10-sh $ hostname debian10 $ ssh ubuntu hostname ubuntu $
keychainのクリア
clearオプションでメモリ上のパスフレーズをクリアすることができます。
$ keychain --clear KeyChain 2.6.6; http://www.gentoo.org/proj/en/keychain/ Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL * Found existing ssh-agent (14801) * ssh-agent: All identities removed. $ ssh ubuntu hostname Enter passphrase for key '~/.ssh/id_rsa': ubuntu $