ひさふぃの日記

DjangoとPythonとLaravelが好き。大阪でフリーランスエンジニアやってます。

ssh-agentで秘密鍵を自動起動・登録すると超便利

役に立つ人

  • 多段ssh接続で秘密鍵を踏み台サーバーに置いちゃってる人
  • ssh-agentに毎回秘密鍵を登録している人
  • ssh -A オプションめっちゃ使う人

あ、ちなみにZshなんでシェルが違う人は設定ファイル名は適宜読み替えてください

話すこと

ssh-agentって何?
ssh-agentの小ネタ
ssh-agentに秘密鍵を自動登録

ssh-agentって何?

ssh接続した際にssh接続元の秘密鍵を使うことができるコマンド
sshコマンドの仕様として踏み台サーバーから別サーバーにssh接続するときは接続元のローカルに置いてある秘密鍵は使えない
っていう不便利を解消してくれる

# 起動  
ssh-agent bash
# 秘密鍵登録  
ssh-add [private-key path]
# ssh接続時にオプションが必要  
ssh [-A] [host]

ssh-agentの小ネタ

ssh-agentは複数立ち上げることができるのでそれの確認用

ps -ef | grep ssh-agent

ssh-addしたときの秘密鍵のリストを表示

ssh-agent -l

ssh-agentに秘密鍵を自動登録

sshコマンドを実行するときに-Aオプションをつけた場合と同じ設定にする
~/.ssh/config

ForwardAgent yes

シェル立ち上げ時にssh-agentを立ち上げて秘密鍵を登録
ssh-addの方は自分の秘密鍵のパスを書いてください
~/.zshrc

eval `ssh-agent` > /dev/null 2>&1
eval `ssh-add [private-key path] > /dev/null 2>&1`

ssh-agentは毎回killしてあげないと無限にプロセスが発生する
シェルのログアウト時にkillする
~/.zlogout

eval `ssh-agent -k`

おすすめ書籍

sshってssh-agent以外にも便利機能がたくさんあって(ポートフォワーディング・トンネリングとか) その辺りの便利機能を漏れなくまとめてくれている書籍 OpenSSH自体の話とかもあるからインフラじゃないエンジニアが最初から読み通すとなると辛すぎるけども、 読み物的にパラパラ見る用として手元に置いておくべき一冊

OpenSSH[実践]入門 Software Design plus