SSHエージェント転送検出

SSHエージェント転送検出

SSH接続が確立されているかどうか(プロキシ転送の有無にかかわらず)確認する方法は?

私は次のことをしようとしています:

ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something

出力を比較しますが、微妙な違いしか見えません。

答え1

ForwardAgent yesSSHプロキシ転送がクライアント(on)で有効になっていてリモート~/.ssh/configサーバーでも有効になっている場合は、リモートAllowAgentForwarding yesサーバーにログインするときに環境変数がSSH_AUTH_SOCK必要です。その後、別のサーバーにログインしている場合(公開鍵はこの3番目のサーバーに存在する必要があります)、パスワードの入力を求められません。

言う:

home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh  hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$

答え2

SSH_AUTH_SOCK直接SSH接続の環境を確認することをお勧めします。

プロキシ(proxy_command)を使用している場合は、次のような接続がある可能性があります。

local-> hostA-> hostB-> hostC->hostD

これらのすべてのホストでプロキシ転送が有効になっている場合、SSH_AUTH_SOCKSSHキーはすべてのホストに設定され、「含まれています」local

今ではプロキシ転送は無効になっていますが、それはhostB有効になっているとしますhostCSSH_AUTH_SOCKopen に設定されますが、hostD実際には「空です」。もちろん、プロキシはからのみに渡さhostCれますhostD。チェーンが切れました。

キーが実際に利用可能であることを確認するには、をhostD呼び出すだけですssh-add。とにかくコード1で終了してもキーが利用できない場合は、次のようになりますstderr

認証プロキシへの接続を開くことができません。

したがって、SSH_AUTH_SOCKプラス記号をチェックしてssh_add出力がないことを確認できます。

関連情報