ssh-agentを使ってsshのパスフレーズを省略する方法

公開鍵認証方式でSSH接続する時の話。

パスフレーズを登録した公開鍵を使う場合、毎回パスフレーズの入力を求められます。

fuka@techo:~$ ssh xsrv    #←接続1回目
Enter passphrase for key '/home/fuka/.ssh/****.xserver.jp.pem':
Last login: Mon Jan 30 10:07:36 2017 from *****.ne.jp
[ygkb@sv1507 ~]$ exit
logout
Connection to ****.xserver.jp closed.

fuka@techo:~$ ssh xsrv    #←接続2回目
Enter passphrase for key '/home/fuka/.ssh/****.xserver.jp.pem':    #←また入力。面倒くさい
Last login: Tue Jan 31 23:04:21 2017 from *****.ne.jp
:(略)

これはセキュリティ上望ましい動きですが、ぶっちゃけ面倒くさいです。

wordmoveの様なバッチ処理を流した日には、5回も6回もパスフレーズを打ち込まなければいけないのでたまりません。

これってまさか、パスフレーズを聞いてきたら都度入力するようなバッチ処理を作らなきゃいけないの? マゾなの?

…んなこたーなかった。

ssh-agentを使えば最初の一回目以降はパスフレーズを覚えておいてくれます。

もくじ(押すと各章に飛ぶ)

使い方

ssh-agentを起動する

eval `ssh-agent`

Agent pid 20045」の様な文字列が返ってくればOK。

これはログインの都度、実行しなければなりません。

自分は ~/.bashrc の末尾にこれを追記して自動実行されるようにしました。

パスフレーズを登録する

ssh-agent を起動した後は

ssh-add

を実行し、デフォルトの公開鍵(~/.ssh/id_rss)に対するパスフレーズを登録します。

fuka@techo:~$ ssh-add
Enter passphrase for /home/fuka/.ssh/id_rsa:
Identity added: /home/fuka/.ssh/id_rsa (/home/fuka/.ssh/id_rsa)

 

引数に複数の公開鍵ファイルを指定すると、一括登録の動きになります。

fuka@techo:~$ ssh-add ~/.ssh/file-a.pem ~/.ssh/file-b.pem
Enter passphrase for /home/fuka/.ssh/file-a.pem:
Identity added: /home/fuka/.ssh/id_rsa (/home/fuka/.ssh/file-a.pem)
Enter passphrase for /home/fuka/.ssh/file-b.pem:
Identity added: /home/fuka/.ssh/id_rsa (/home/fuka/.ssh/file-b.pem)

これにより「バッチ処理で矢継ぎ早に各サーバーからファイルを取ってくる(複数サーバに接続する)」みたいな処理を実行してもパスフレーズを聞かれずに済むようになります。

後はいつも通りsshを使うだけ

fuka@techo:~$ ssh-add    #パスフレーズ登録
Enter passphrase for /home/fuka/.ssh/id_rsa:
Identity added: /home/fuka/.ssh/id_rsa (/home/fuka/.ssh/id_rsa)
fuka@techo:~$ ssh xsrv    #SSH接続
Last login: Tue Jan 31 23:04:35 2017 from *****.vectant.ne.jp    #←スルーパス
[ygkb@sv1507 ~]$

5行目、最初の例と違いパスフレーズを聞かれていないのがお分かりでしょうか。

関連記事

server-memo.net様の記事で勉強しました。

当記事は必要最小限の事しか書いておりませんが、もう少し原理などを深掘りしたい場合は上記ページもご覧ください。

お役に立てたらシェアお願いします(^O^)/
  • URLをコピーしました!
もくじ(押すと各章に飛ぶ)