SSH接続が確立されているかどうか(プロキシ転送の有無にかかわらず)確認する方法は?
私は次のことをしようとしています:
ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something
出力を比較しますが、微妙な違いしか見えません。
答え1
ForwardAgent yes
SSHプロキシ転送がクライアント(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_SOCK
SSHキーはすべてのホストに設定され、「含まれています」local
。
今ではプロキシ転送は無効になっていますが、それはhostB
有効になっているとしますhostC
。SSH_AUTH_SOCK
open に設定されますが、hostD
実際には「空です」。もちろん、プロキシはからのみに渡さhostC
れますhostD
。チェーンが切れました。
キーが実際に利用可能であることを確認するには、をhostD
呼び出すだけですssh-add
。とにかくコード1で終了してもキーが利用できない場合は、次のようになりますstderr
。
認証プロキシへの接続を開くことができません。
したがって、SSH_AUTH_SOCK
プラス記号をチェックしてssh_add
出力がないことを確認できます。