Ich versuche, ein SSH-Gateway einzurichten. Ich habe einen physischen Host (H) und eine Reihe von VMs darauf. Der Host kann per SSH auf eine der VMs (A) zugreifen und von dort aus per SSH auf andere (nennen wir ihn B) zugreifen. Ich habe dies in .ssh/config
H
Host B
User foo
ProxyCommand ssh foo@A nc %h %p
Wenn ich ssh -vvv -l foo B
das jetzt mache H
, wird mir dieser Fehler angezeigt:ssh_exchange_identification: Connection closed by remote host
cat /var/log/auth.log
zu A sagt:
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
auf einen
sshd: ALL
ssh: 0.0.0.0/0.0.0.0
Es scheint, als würde H sagen, dass A die Verbindung geschlossen hat, und A sagt, dass H die Verbindung geschlossen hat!
/etc/ssh/ssh_config
AnH
Host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
Was kann hier noch schiefgehen?
Antwort1
Sie sollten sicherstellen, dass „Host B“ A nicht einschließt, wenn B ein Muster und kein einzelner Host ist. Ich musste A explizit aus dem Muster ausschließen.
Host *.example.com !gateway.example.com
ProxyCommand ssh -q -W %h:%p [email protected]
Antwort2
Versuchen Sie die folgende Konfiguration im H-Host:
Host B
ProxyCommand ssh -q -W %h:%p A
Bei mir funktioniert es. Fügen Sie bei Bedarf einfach den Benutzer foo hinzu:
Host B
User foo
ProxyCommand ssh -q -W %h:%p foo@A
Und stellen Sie sicher, dass der Benutzer foo auf A und B vorhanden ist.