2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ssh-agentのすゝめ

Last updated at Posted at 2020-11-10

ssh-agentのすゝめ

ssh-agentは大体のsshクライアントに付属されている鍵管理ツールです。結構昔からある気がしますが、時代とともに忘れ去れてる気がするのでまとめておきます。
Bastion(踏み台)経由の多段SSHが楽になるし、proxyCommandを~/.ssh/configを書きなぐらなくてよくなります。
焦ってBastionに鍵を置いちゃうなんていう手抜きをしなくて済みますよ。

TL;DR

3OSでのopensshインストール方法とそのあとの設定方法を記載しています。

インストール

一番末端のクライアントに入れます。(ふつうは自端末かな?)

Windowsの場合

  1. OpenSSHクライアントを有効にします。
  2. サービスのOpenSSH Authentication Agentを自動起動にする。

これの通りで問題なし。
https://qiita.com/akiakishitai/items/9e661a126b9c6ae24a56

Macの場合

最近のMacOSの場合以下の手順で設定する.

  • ~/.ssh/configUseKeychain yes,AddKeysToAgent yes を設定する。
  • ssh-add -K
    • デフォルトは /Users/${username}/.ssh/id_rsa をKeyChain Accessに登録する
    • デフォルト以外を使う場合は引数に追加する ssh-add -K [/path/to/id]

Linux(WSL)の場合

opensshのクライアントが入っていればOKです。(ふつうはデフォルトで入ってる)

設定手順

  1. 自端末で鍵を作ります。すでにある人はそれで。
  2. Bastionとターゲットの ~/.ssh/authorized_keys に登録します。(別ユーザーsshしてやる)
  3. 自端末でssh-agentを起動させます。eval `ssh-agent` Serviceの自動起動できてる人は必要なし。
  4. 自端末で ssh-add 鍵ファイル します。(複数いけます
  5. ssh -A xxx でサーバに接続します。-Aで ssh-add -l で出てくる鍵を上から順に試します。

-Aを入れるのがめんどくさい人は
~/.ssh/config に ForwardAgent yes を追加します。
Bastionのrootユーザーに悪いやつがいるとその先で乗っ取られるので、そういう環境にいる人はhost毎に設定したほうがいいと思います。(環境を何とかするんだ)

※注意事項
ForwardAgent yes は、下記のようにHostの下に書かないと機能しないっぽいので注意。(Hostを * とすると全体となるハズ。

Host xxx
  ForwardAgent yes

確認

ssh-add -L で利用する鍵の公開鍵一覧を見れます。-lだとフィンガープリントがでる。

[derori@murata ~]$ ssh-add -L
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGa8KIhyYreW9GxW1Y+fzVo07Hy2ca/4ffnuJ2mrfjUr First key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRSbSkJBU5sJujSanjbcCgcOFIr+KPI0Ed1NzOalkax 2nd key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjRoj8NUOwadeJr23O6cB0wXF8jqufAnS5LSc1QaqsL 3rd key

これは中間サーバでも見ることができます。(ForwardAgent yes にした次のホストまでこうなる。)
↓の場合、192.168.0.206まで。192.168.0.203ではssh-agentは起動しない。192.168.0.33でしかForwardAgent yesにしていない。

image.png

[derori@192.168.0.33 ~]$ ssh-add -L
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGa8KIhyYreW9GxW1Y+fzVo07Hy2ca/4ffnuJ2mrfjUr First key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRSbSkJBU5sJujSanjbcCgcOFIr+KPI0Ed1NzOalkax 2nd key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjRoj8NUOwadeJr23O6cB0wXF8jqufAnS5LSc1QaqsL 3rd key
[derori@192.168.0.33 ~]$ ssh deroru@192.168.0.206

Last login: Tue Nov 10 17:12:08 2020 from 192.168.0.33
[deroru@192.168.0.206 ~]$ ssh-add -L
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGa8KIhyYreW9GxW1Y+fzVo07Hy2ca/4ffnuJ2mrfjUr First key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRSbSkJBU5sJujSanjbcCgcOFIr+KPI0Ed1NzOalkax 2nd key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjRoj8NUOwadeJr23O6cB0wXF8jqufAnS5LSc1QaqsL 3rd key
[deroru@192.168.0.206 ~]$ ssh deropi@192.168.0.203

Last login: Tue Nov 10 17:26:42 2020 from 192.168.0.206
[deropi@192.168.0.203 ~]$ ssh-add -L
Could not open a connection to your authentication agent.

Tips

  • 自端末って普通は電源を切るので、毎度ssh-addするのめんどくさいですよね。下記のように ~/.bashrc に登録しています。
eval `ssh-agent`
ssh-add ~/.ssh/xxxxxxx
ssh-add ~/.ssh/xxxxxxx

Windowsだと大丈夫な気がする。

  • BastionのsshdがAllowAgentForwarding yesとなっている必要がある。
  • gitの鍵が複数ある場合にはどうにもならないので、~/.ssh/configにホストを分けて書くか GIT_SSH_COMMAND で渡す。https://blog.dnpp.org/git_environment
  • macの場合Keychainに登録できて、それで管理できるらしい。
  • 中間やターゲットでtmuxを貼っている場合、ssh-agentが渡している鍵ファイルのsymlinkと環境変数がずれておかしくなるので、~/.bashrc等で張り替えてあげる。 https://qiita.com/sonots/items/2d7950a68da0a02ba7e4
  • ssh-add -D で全消しできます。-d で個別です。

これで、~/.ssh/config にProxyCommandを毎度毎度書く必要はなくなりますね。(書けばいいじゃん)
ちょっと雑になっちゃいましたが、鍵ファイルを散りばめてしまうリスクを減らしましょうというお話でした。

2
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?