在本地,我打開了 SSH 代理並添加了我的金鑰:
-
$ eval $(ssh-agent) Agent pid 80
-
$ 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).