避免使用 SSH 代理

避免使用 SSH 代理

我使用 ProxyCommand 的目的是避免ssh 代理转发。今天我注意到 Gnome 正在启动ssh-agent,我试图避免使用它,所以我禁用了它。我不想运行代理,这样如果我在设置/配置 ssh 客户端时粗心大意,就不会意外地开始转发它。我是一名顾问,最可怕的噩梦之一就是有人盗用我的凭据做坏事,让它看起来像是我做了坏事,让我损失生意,甚至导致我被起诉。我遇到此问题的当前情况配置如下。我确定甚至不是 ProxyCommand 需要 ssh-agent。以下是我的匿名堡垒配置~/.ssh/config(实际上它包含在客户特定目录中,~/clients/foo/secrets/但之前这一切都有效,所以应该没有问题)

Host bastion
   HostName xxx.xxx.xxx.70
   User ubuntu
   IdentityFile ~/clients/foo/secrets/bastion.key
   IdentitiesOnly yes
   ForwardAgent no

当我做

ssh bastion -vvv

它停滞在:

debug1: Found key in /home/gus/.ssh/known_hosts:67
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks

Ask Different 上的这篇文章将其标识为“等待代理”问题。我使用的是 Ubuntu 18.04,但我认为相同的错误消息无论如何都表明相同的问题。不幸的是,该答案侧重于修复/启用代理,我想在没有它的情况下运行,这样它就不会被转发并随后被滥用。

我如何说服ssh使用配置中的密钥而不是向代理请求密钥。请注意,在我终止 ssh-agent 并将其从 Gnome 启动中删除之前,此连接工作正常。此后我唯一添加的内容(没有明显效果)是 ForwardAgent 行。请注意,我已注销并重新登录以确保最初终止代理时没有出现僵尸进程问题,并验证了名称中带有 ssh 的唯一运行进程是 sshd(这是预期的并且应该无关)。

作为参考,下一跳将如下所示:

Host target
   HostName xxx.xxx.xxx.152
   user ubuntu
   IdentityFile ~/clients/foo/secrets/target.key
   IdentitiesOnly yes
   ForwardAgent no
   ProxyCommand ssh -W %h:%p bastion

以前,这也运行良好,例如ssh target要求我输入每台机器的连续密码,然后将我登录到目标。

编辑:启动 ssh-agent 确实让我再次登录,但这不是我想要的。失败的尝试只留Connection closed by xxx.xxx.xxx.xxx port YYYY [preauth]在 auth.log 中。

答案1

https://man.openbsd.org/ssh_config#IdentityAgent或者man [5] ssh_config在你的系统上

身份代理
指定用于与身份验证代理进行通信的 UNIX 域套接字。...
将套接字名称设置为没有任何禁用身份验证代理。......

相关内容