无法设置 ssh 网关

无法设置 ssh 网关

我正在尝试设置 ssh 网关。我有一个物理主机 (H) 和一些虚拟机。主机可以 ssh 到其中一个虚拟机 (A),然后从该虚拟机 ssh 到其他虚拟机(我们称之为 B)。我在.ssh/configH 中安装了这个

Host B
  User foo
  ProxyCommand ssh foo@A nc %h %p

现在当我执行时,ssh -vvv -l foo BH看到这个错误:ssh_exchange_identification: Connection closed by remote host

cat /var/log/auth.log在 A 上说:

Jun  7 18:54:00 ubuntu sshd[846]: Received disconnect from 192.168.129.1: 11: disconnected by user
Jun  7 18:54:00 ubuntu sshd[834]: pam_unix(sshd:session): session closed for user foo
Jun  7 18:54:11 ubuntu sudo: foo : TTY=pts/6 ; PWD=/home/foo ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Jun  7 18:54:11 ubuntu sudo: pam_unix(sudo:session): session opened for user root by foo(uid=30000)

/etc/hosts.allow在A

sshd: ALL
ssh: 0.0.0.0/0.0.0.0

好像H说A关闭了连接,而A说H关闭了连接!

/etc/ssh/ssh_configH

Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no

这里还会有什么问题?

答案1

如果 B 是一个模式而不是单个主机,您可能希望确保“主机 B”不应包含 A。我必须明确地将 A 从模式中排除。

Host *.example.com !gateway.example.com
  ProxyCommand ssh -q -W %h:%p [email protected]

答案2

在H主机中尝试以下配置:

Host B
    ProxyCommand ssh -q -W %h:%p A

它对我来说是有效的。如果需要,只需添加用户 foo:

Host B
    User foo
    ProxyCommand ssh -q -W %h:%p foo@A

并确保用户 foo 在 A 和 B 上都存在。

相关内容