如何确定是否已建立有代理转发的 SSH 连接?
我正在尝试执行以下操作:
ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something
Run Code Online (Sandbox Code Playgroud)
并比较输出,但我只能看到细微的差异。
Tor*_*ian 23
当在客户端 ( ForwardAgent yes
on ~/.ssh/config
)上启用 ssh 代理转发并在远程服务器上启用时AllowAgentForwarding yes
,当登录到远程服务器时,环境变量SSH_AUTH_SOCK
应该存在。然后,如果您登录到另一台服务器(您的公钥必须位于这台第三台服务器上),则不应提示您输入任何密码。
澄清:
home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$
Run Code Online (Sandbox Code Playgroud)
检查环境SSH_AUTH_SOCK
有利于直接 ssh 连接。
如果您使用代理 ( proxy_command
),您的连接可能如下所示:
local
-> hostA
-> hostB
-> hostC
->hostD
如果代理转发在所有这些主机上都处于活动状态,则将在所有主机SSH_AUTH_SOCK
上设置并“包含”您的 ssh 密钥local
。
现在假设代理转发在 上禁用hostB
但在上启用hostC
。SSH_AUTH_SOCK
将被设置,hostD
但它实际上是“空的”。当然,代理被转发,但仅从hostC
to转发hostD
。链条断了。
现在要检查密钥是否真的可用,hostD
您只需调用ssh-add
. 在任何情况下它都会以代码 1 退出,但如果密钥不可用,它将显示在stderr
:
无法打开与您的身份验证代理的连接。
因此,您可以检查SSH_AUTH_SOCK
加号以确保ssh_add
没有输出。
归档时间: |
|
查看次数: |
15634 次 |
最近记录: |