如何從遠端伺服器檢查 SSH 代理轉發是否正在運行?

如何從遠端伺服器檢查 SSH 代理轉發是否正在運行?

在本地,我打開了 SSH 代理並添加了我的金鑰:

  1. $ eval $(ssh-agent)
    Agent pid 80
    
  2. $ ssh-add
    Identity added: /c/Users/...../.ssh/id_rsa (.....@........)
    

在我的 中~/.ssh/config,我有這個:

Host example
    User root
    HostName 123.45.678.912
    ForwardAgent yes

一旦我運行ssh example,我就成功連接了,如果我與 GitHub 建立遠端測試連接,我可以看到我使用轉發金鑰進行了身份驗證:

root@example:~# ssh -vT [email protected]
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1j  16 Feb 2021
...
debug1: Will attempt key: .....@........ RSA SHA256:abc123/123456abcdefghi/abcdefg12+abcdefghij agent
...
debug1: Offering public key: .....@........ RSA SHA256:abc123/123456abcdefghi/abcdefg12+abcdefghij agent
debug1: Server accepts key: .....@........ RSA SHA256:abc123/123456abcdefghi/abcdefg12+abcdefghij agent
debug1: Authentication succeeded (publickey).
...
Hi ......! You've successfully authenticated, but GitHub does not provide shell access.

有沒有辦法確定,在遠端機器上,如果代理轉發有效,無需這樣的測試連接?

這個答案建議使用$SSH_AGENT_PID,但在本地和遠端電腦上它都是空的。

答案1

如果伺服器上未設定該變量,則表示代理轉送不起作用

轉發工作範例。

$ echo "$SSH_AUTH_SOCK"
# Print out the SSH_AUTH_SOCK variable
> /tmp/ssh-6hNGMk10AZC/agent.89543

不工作的例子

$ echo "$SSH_AUTH_SOCK"
# Print out the SSH_AUTH_SOCK variable
> [No output]
$ ssh -T [email protected]
# Try to SSH to github
> Permission denied (publickey).

相關內容