ssh config für mehrere hops plus "sudo su"
Ich habe ein bestimmtes Setup, das diese Abfolge von Schritten erfordert:
ssh me@host1
ssh me@host2
sudo su otheruser
Ich habe:
- Ein SSH-Schlüssel auf meinem Laptop, der es mir ermöglicht
ssh me@host1 - Ein SSH-Schlüssel auf Host1, der es mir ermöglicht
ssh me@host2.
Ich habe keine Erlaubnis dazu ssh otheruser@host2.
Mein Ziel ist: Kann ich das automatisieren? Am besten in der ~ / .ssh / config-Datei meines Laptops, damit ich einfach Folgendes tun kann:
ssh otheruser
... und die Konfiguration sich um die Details kümmern lassen, idealerweise einschließlich des Passworts?
Mit der folgenden ssh-Konfiguration kann ich bereits 2/3 des Weges dorthin zurücklegen:
Host host1
HostName host1.example.com
Host host2
HostName host2.example.com
Host mostly_there
HostName host2.example.com
ProxyJump host1 host2
Das obige erlaubt mir ssh mostly_thereaber ich muss noch sudo su otheruser.
Antworten
Sie können dies in .ssh / config verwenden:
HOST host1
user me
HOST host2
USER me
ProxyCommand ssh host1 -W %h:%p
HOST otheruser
USER me
ProxyCommand ssh host1 -W %h:%p
RemoteCommand sudo su -c '/bin/bash -i' otheruser
Um mit dem Benutzer otheruser eine Verbindung zu host2 herzustellen, verwenden Sie einfach:
ssh otheruser
Es hat derzeit den Nachteil, dass es keine vollständige interaktive Shell ist, aber das könnte durch einen besseren Aufruf als behoben werden /bin/bash -i
Wenn Sie über root verfügen, können Sie Ihren öffentlichen Schlüssel für otheruserdie autorisierten Schlüssel bereitstellen und sich ohne Kennwort anmelden. Nach dem Umschalten otheruserdazu:
mkdir -p ~/.ssh
und setzen Sie Ihren öffentlichen Schlüssel in ~ / .ssh / authorized_keys. Sie sollten sich jetzt remote anmelden können, otheruserindem Sie dies einfach tun ssh otheruser@host.