“愚蠢” SSH 代理

“愚蠢” SSH 代理

我们的大多数开发人员都需要通过 SSH 访问我们的一些内部 Google Cloud 基础架构。我们目前处理这个问题的方式是使用堡垒主机并让用户修改他们的 SSH 配置以包含以下内容:

Host *
    ProxyCommand ssh -q bastion.hostname.com 'nc %h %p'

我们正在从堡垒主机 + 元数据 SSH 密钥转向使用操作系统登录,但我们正努力将对开发人员的干扰降到最低。理想情况下,我希望能够使用类似这样的方法:

Host *
    ProxyCommand gcloud compute ssh --ssh-key-file="${HOME}/.ssh/id_rsa" --internal-ip "%h"

但是,这不起作用。在启用详细设置的情况下运行时,它会挂起:

debug1: Next authentication method: publickey
debug1: Offering public key: /Users/mrllama/.ssh/id_rsa RSA SHA256:[SNIP] explicit
debug1: Server accepts key: /Users/mrllama/.ssh/id_rsa RSA SHA256:[SNIP] explicit
debug1: Authentication succeeded (publickey).
Authenticated to [INTERNAL_IP] (via proxy).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: proc
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Requesting authentication agent forwarding.

请注意,此gcloud compute ssh命令可以独立运行,并将用户置于命令提示符下,但当用作 ProxyCommand 时,它会挂起。有没有办法让 SSH 在运行 ProxyCommand 后跳过所有身份验证例程,而只是返回提示?

相关内容