Dropbear 代理密钥在 ssh 连接中可见,但无法使用 ssh_fetch_identitylist 获取它们:代理拒绝操作

Dropbear 代理密钥在 ssh 连接中可见,但无法使用 ssh_fetch_identitylist 获取它们:代理拒绝操作

我观察到有关使用转发密钥的一些奇怪的行为。

我通过 SSH 访问我的路由器(OpenWRT 22.03)并启用密钥转发:

ssh -A [email protected] -p 2222

代理连接套接字已成功创建并具有适当的权限:

root@gw-bsb:~/.ssh# env | grep SSH
SSH_AUTH_SOCK=/tmp/dropbear-19ec2148/auth-cea63dfa-6
SSH_TTY=/dev/pts/0

root@gw-bsb:~# ls -l  /tmp/dropbear-19ec2148/auth-cea63dfa-6
srwxr-xr-x 1 root root 0 Jan  8 00:55 /tmp/dropbear-19ec2148/auth-cea63dfa-6

密钥对于 ssh 客户端也是可见的:

root@gw-bsb:~/.ssh# ssh-add -v -l
1024 SHA256:xx yy (RSA)
256 SHA256:zz yy (ED25519)
2048 SHA256:xxx iii (RSA)

但是客户端无法在真正的 ssh 连接中使用密钥:

$ ssh -v [email protected]
debug1: rekey in after 134217728 blocks
debug1: get_agent_identities: ssh_fetch_identitylist: agent refused operation

OpenWRT 使用 dropbear 实现 ssh 客户端:

root@gw-bsb:~/.ssh# dropbear -V
Dropbear v2022.82

旧版本的OpenWRT没有密钥转发问题。

我怎样才能解决这个问题?

答案1

问题在于 ssh 客户端/服务器的混合实现。OpenWRT 使用了滴熊为传入的 sshd 连接提供服务,但使用 OpenSSH ssh 客户端从会话建立进一步的连接。对于某些不兼容性,ssh 代理能够列出密钥,但是远程控制客户无法做到这一点。

修复方法是删除 OpenSSH ssh 客户端,然后将 shell 恢复为使用 dropbear 实现的远程控制客户。

修复之前:

root@gw:~# ssh -V
OpenSSH_8.9p1, OpenSSL 1.1.1q  5 Jul 2022

因此,这不是滴熊客户。

安装了两个客户端 ssh 包:

root@gw:~# opkg list-installed | grep drop
dropbear - 2022.82-2
root@gw:~# opkg list-installed | grep ssh
openssh-client - 8.9p1-1
openssh-client-utils - 8.9p1-1
openssh-keygen - 8.9p1-1
openssh-sftp-server - 8.9p1-1

openssh-client删除包后:

root@gw:~/router-script# ssh -V
Dropbear v2022.82

是的,它成功了!

root@gw:~# ssh [email protected]
Hi 0anton! You've successfully authenticated, but GitHub does not provide shell access.

感谢伟大的 Dropbear ssh 包的作者 Matt,他帮助我快速找到了解决方案。

https://github.com/mkj/dropbear/issues/213

相关内容