LoginSignup
70
66

More than 5 years have passed since last update.

ssh agent forwardingを行うサーバー側の要点の備忘録

Last updated at Posted at 2017-05-10

ssh-agent forwardingするのにハマったので備忘録として残す。

ssh agent forwardingとは

ssh agentで登録させた情報を、接続後のssh接続に引き継ぐやり方である
よく、ssh秘密鍵をサーバーにコピーしないで、ssh秘密鍵認証する際に使われる

ssha1.jpg

上図を例にとると、

  • サーバーA上にのみあるssh秘密鍵をサーバーAのssh agentに登録
  • サーバーBにssh公開鍵認証で接続
  • そのままサーバーBからサーバーCに接続する際に
  • ssh秘密鍵をサーバーAのssh agentから引き継ぎ、ssh公開鍵認証する

そういう状態のことである

設定方法

クライアント側

putty なら agent forwardingを許可する設定をON
LinuxやMacOSなどなら eval `ssh-agent` と ssh-add などする

サーバー側

まず、sshdデーモン側でAgentForwardingを許可する必要がある

sshd_config

AllowAgentForwarding yes

このsshd_configのowner/groupとパーミッションは
root root -rw------- とする

つぎに、sshコマンドする際にAgentForwardingをする

  • 接続毎にコマンドライン許可する場合には -A オプション
  • ユーザー毎にデフォルトで許可する場合には ~/.ssh/config に ForwardAgent yes 設定
  • システム全体でデフォルトで許可する場合には /etc/ssh/ssh_config に ForwardAgent yes 設定 する必要があるを記載する

接続毎許可

ssh -A (接続先ユーザー)@(接続先サーバー)

ユーザー毎許可

~/.ssh/config
ForwardAgent yes

この~/.ssh/configのowner/groupとパーミッションは
(実行ユーザー) (実行グループ) -rw------- とする

システム全体許可

/etc/ssh/ssh_config
ForwardAgent yes

この/etc/ssh/ssh_configのowner/groupとパーミッションは
root root -rw-r--r-- とする
(実行ユーザーが参照できるパーミッションが必要)

ちなみに、これらの設定の参照順位については、下記となっている

  • 1番目に コマンドラインオプションを参照し
  • 2番目に ユーザー設定ファイル(~/.ssh/config)を参照し
  • 3番目に システム設定ファイル(/etc/ssh/ssh_config)を参照する

おまけ

踏み台以降のサーバーにssh秘密鍵をコピーしない(させない)のに、ユーザーとユーザー毎に公開鍵をauthorized_keysを設置するのは面倒なので、サーバー側の公開鍵管理はLDAPサーバーで集中管理でやるのがお薦め、既存のユーザーでも公開鍵のみLDAPサーバーで管理できる

70
66
1

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
70
66