SSH:调试“获取协议 1 的身份时出错:代理拒绝操作”/“未知消息 1”

SSH:调试“获取协议 1 的身份时出错:代理拒绝操作”/“未知消息 1”

此诊断消息显然会因多种不同原因而被打印,这使得调试变得非常困难。它之前在 SO 上出现过:

我的本地主机是运行 OpenSSH_9.0p1 的 Cygwin,我从 Bash 配置文件中执行标准ssh-agent舞蹈,然后执行ssh-add privkey1 privkey2 ...ssh-add -L本地运行打印密钥时没有任何错误。

此 Cygwin 安装中没有/etc/ssh/ssh_config或等效项。相关行~/.ssh/config

IdentitiesOnly yes
ForwardAgent yes

# There are multiple remote hosts, but they all use identical
# configurations (and different keys)
Host remote-host
  Hostname 12.34.56.78, User, etc, elided
  IdentityFile path/to/private/key
  ForwardAgent yes       # redundant, I know
  AddKeysToAgent yes

以详细模式连接到远程主机显示提供和接受的正确身份

debug1: identity file path/to/private/key type -1
debug1: identity file path/to/private/key-cert type -1
... [all the host key exchange stuff]
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Next authentication method: publickey
debug1: Trying private key: path/to/private/key
debug1: identity added to agent: path/to/private/key
Authenticated to 12.34.56.78 ([12.34.56.78]:22) using "publickey".
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: filesystem
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: client_input_hostkeys: searching known_hosts for 12.34.56.78 / (none)
debug1: Requesting authentication agent forwarding.
debug1: client_global_hostkeys_private_confirm: server used untrusted RSA signature algorithm ssh-rsa for key 0, disregarding

我加上了最后一句,因为它是仅有的登录期间打印的诊断消息;因为它与主机密钥有关,所以我不认为它与代理问题有关,但我愿意接受建议。

一些远程主机正在运行 Ubuntu 22.04 和 OpenSSH_8.9p1,并且没有任何问题:

$ ssh-add -L
ssh-rsa AAAAB3Nza...ZyzLVJ3ylFeGDMfb path/to/private/key

但是,其他远程主机正在运行 Amazon Linux 2(CentOS 的仿制品)和 OpenSSH_7.4p1:

$ ssh-add -L
error fetching identities for protocol 1: agent refused operation
ssh-rsa AAAAB3Nza...ZyzLVJ3ylFeGDMfb path/to/private/key

OpenSSH_7.4p1 版本比我理想中的版本要旧一些。我查看了https://www.openssh.com/releasenotes.html对于所有提及 ssh-add/ssh-agent 的内容,自 7.4 版发布以来似乎没有任何东西可以解决这个问题。所以也许这是我的问题。

远程服务器上的和ssh_config文件sshd_config是相同的(极其简单的)设置,除了

Protocol 2
GSSAPIAuthentication no
AllowAgentForwarding yes

以下内容未受任何影响。特别注意,我们限制客户端使用 SSH 协议 2。

在我的本地主机上,~/.ssh是 0700,没有 Windows ACL。所有私钥文件都使用 Windows ACL 来锁定权限,这样 PuTTY/Pageant 就不会抱怨域管理员可以看到密钥,哦不;该文件夹位置是使用“acl”安装选项安装在 Cygwin 内部的,因此它们都在 Cygwin 中显示为 0400,没有其他getfacl权限。所以我不思考这是一个权限问题,因为它们都受到严格限制,就像 SSH 通常喜欢的那样。

在远程主机上,~/.ssh是 0700,~/.ssh/authorized_keys是 0600。

我启动了本地 ssh-agent 来-d查看其调试消息,添加了适当的密钥,然后登录到 AWS Linux / CentOS 框。跟踪ssh-add -L远程框上的进程产生了以下代码片段:

socket(AF_UNIX, SOCK_STREAM, 0)         = 3
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
connect(3, {sa_family=AF_UNIX, sun_path="/tmp/ssh-5uCspahMpL/agent.27042"}, 110) = 0
write(3, "\0\0\0\1", 4)                 = 4
write(3, "\1", 1)                       = 1
read(3, "\0\0\0\1", 4)                  = 4
read(3, "\5", 1)                        = 1
write(2, "error fetching identities for pr"..., 66error fetching identities for protocol 1: agent refused operation) = 66

ssh-agent在当地印刷了以下内容:

debug1: new_socket: type = CONNECTION
debug3: fd 5 is O_NONBLOCK
debug1: process_message: socket 1 (fd=5) type 27
debug2: process_extension: entering
debug2: process_ext_session_bind: entering
debug1: process_ext_session_bind: recorded ED25519 SHA256:wKemf...long...VaNY (slot 0 of 16)
debug1: process_message: socket 1 (fd=5) type 1
Unknown message 1
debug1: process_message: socket 1 (fd=5) type 11
debug2: process_request_identities: entering
debug3: identity_permitted: entering: key RSA comment "path/to/private/key", 1 socket bindings, 0 constraints
debug2: process_request_identities: replying with 1 allowed of 1 available keys

我一直在谷歌上搜索,试图弄清楚“未知消息 1”是什么意思,但没有太多解释。所以某物从 ssh-add 到 ssh-agent 触发未知消息响应,从而导致“代理拒绝连接”。

这是我可以修复/解决的问题吗,或者答案真的只是“7.4 和 8.9 之间悄悄发生了一些变化,而 Amazon Linux 2 不会升级主要软件包,因此会出现虚假警告,生活有时就是这么糟糕”?

答案1

尝试仅限制使用协议 2。Protocol在文件中添加一个节.ssh/config(在特定于主机的主机部分或全球节):

Host *
    Protocol 2

“协议 1”似乎是指SSH 协议版本本身。

您可以查看消息可能来自哪里ssh-代理源- 打印的行来自本地ssh-agent -l,但agent refused operation来自ssh_err打印从远程接收的数据包的内容ssh-agent

相关内容