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