SSH mit ProxyJump nicht möglich, aber mit ssh -J funktioniert es

SSH mit ProxyJump nicht möglich, aber mit ssh -J funktioniert es

Meine Frage ist:Wie richte ich mit einer Ubuntu-Instanz einen Bastion-Host für SSH auf AWS ein?

Folgendes kann ich erfolgreich tun:

root@e183d80cdabc# ssh -J [email protected] [email protected]
Last login: Sat Sep  4 13:14:17 2021 from 10.240.0.30
==> SUCCESS! ==> ubuntu@ip-10-240-0-20:~$

Aber es schlägt fehl, wenn ich den Ansatz über die Datei ~/.ssh/config versuche. Verwendete Befehle:

# ssh 10.240.0.20
# ssh [email protected]
# ssh -i ~/.ssh/id_rsa [email protected]

ssh: connect to host 10.240.0.20 port 22: Connection refused

Meine ~/.ssh/config sieht folgendermaßen aus:

root@e183d80cdabc# cat $HOME/.ssh/config
Host bastion
  HostName 54.170.186.144
Host remote
  HostName 10.240.0.20
  ProxyJump bastion

Ich verwende Ubuntu auf AWS wie folgt:

ubuntu@ip-10-240-0-30:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Ich habe versucht, das User ubuntuFeld hinzuzufügen, aber das hilft nicht.

Meins /etc/ssh/ssh_configauf dem Server sieht folgendermaßen aus:

Host *
    ForwardX11Trusted yes
    IdentityFile ~/.ssh/id_rsa
    Port 22
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes

AKTUALISIEREN Ich verwende jetzt die ausführliche Option, d. h.

root@e183d80cdabc# ssh -vvv 10.240.0.20
OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 2: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname 10.240.0.20 is address
debug2: ssh_connect_direct
debug1: Connecting to 10.240.0.20 [10.240.0.20] port 22.
debug1: connect to address 10.240.0.20 port 22: Connection refused
ssh: connect to host 10.240.0.20 port 22: Connection refused

Es scheint keinen Sprunghost zu verwenden (d. h. es überspringt die Bastion) und geht direkt weiter und SCHLÄGT FEHL.

Für alle Ideen bin ich sehr dankbar! Danke

=========================================================

UPDATE: 2021-09-04-15-44 - mit LÖSUNG Vielen Dank an alle, ich habe es unten als Antwort markiert.

Die korrekte Konfiguration verwendet keinen HostName, da der Abgleich aufGastgeber. Ich konnte auch ein Platzhalterzeichen in die IP-Adresse einfügen, was ich eigentlich wollte.

SSH-Konfiguration

root@e183d80cdabc# cat $HOME/.ssh/config
Host bastion
  HostName 63.33.206.201
  User ubuntu
Host 10.240.0.*
  ProxyJump bastion
  User ubuntu

Undvoilà!

# ssh 10.240.0.20
...
ubuntu@ip-10-240-0-20:~$

Antwort1

Der Abgleich erfolgt auf HostStrophe-Ebene, nicht auf HostName.

Versuchen:

ssh ubuntu@remote

Antwort2

Der Unterschied zwischen Ihrer Befehlszeile

ssh -J [email protected] [email protected]

und was ich Ihnen empfehle, um auf Ihre Konfiguration zu verweisen

ssh remote

ist, dass letztere weder IPs nochder Benutzer, mit dem sich beide Rechner anmeldenin der Befehlszeile - Sie müssen Ihre SSH-Konfiguration bearbeiten, um Folgendes einzuschließen:alledie Informationen, die Sie nicht mehr über die Befehlszeile weitergeben:

# $HOME/.ssh/config
### The Bastion Host
Host bastion
  HostName 54.170.186.144
  User ubuntu

### The Remote Host
Host remote
  HostName 10.240.0.20
  User ubuntu
  ProxyJump bastion

Update: Während ja, in der TheoriedürfenKonfigurieren Sie Ihre HostStrophen so, dass sie mit IP-Adressen übereinstimmen. Ich empfehlegegendabei.

Wenn ein Host unter einer bestimmten IP-Adresse nicht direkt erreichbar ist, dann sollte er mitName- stellen Sie sich nur vor, was passiert, wenn Sie mehreren Hosts denselben (privaten) IP-Bereich zuweisen und es Ihnen unmöglich ist, jedem Host die richtige ProxyJump-Konfiguration zuzuweisen.

Ein weiterer Grund, warum die Verwendung von Adressen zum Verweisen auf Hosts ungünstig ist, sind Hosts, die über mehrere Adressfamilien erreichbar sind: Wenn ein Host über IPv4 und IPv6 erreichbar ist, möchten Sie wahrscheinlich, dass Ihre SSH-Verbindung protokollunabhängig bleibt und nur dann ein Flag hinzufügen, wenn Sie die (automatischen) Auswahlmöglichkeiten wirklich einschränken möchten.

verwandte Informationen