我有3台电脑。所有都运行 SSH,并且都启用无密码模式,仅 PKI。
第一个有一个密钥对,用于通过 SSH 访问另外两个,将此机器称为 A。
因此,B 和 C 的 中都有 A 的公钥authorized_keys
,并且 A 可以在没有密码的情况下通过 ssh 连接到其中任何一个。
但是,C 的文件中没有 B 的公钥authorized_keys
,但是,当我从 A -> B 进行 ssh,然后从 B -> C 进行 SSH 时,C 让 ssh 会话无需密码即可连接。
为什么会发生这种情况?
尽管我是从 A 通过 SSH 连接到 B,但 C 肯定应该拒绝来自 B 的会话请求吗?
答案1
你应该照顾ssh-agent
和AllowAgentForwarding
。
您 A 上的私钥必须加载到您的本地ssh-agent
.并且AllowAgentForwarding
必须被激活,以便C上生成的到B的挑战由B转发到A(在信任链中)。 Assh-agent
正在回复由 B 转发的 C 的加密挑战,该挑战在 C 上对您进行身份验证并让您从 B 进入其中。
在 B 和 C 上的 sshd 中禁止AllowAgentForwarding
,它就不会再发生了。