ssh config für mehrere hops plus "sudo su"

Oct 16 2020

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

1 jeb Oct 20 2020 at 06:17

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

ArkadiuszDrabczyk Oct 16 2020 at 18:10

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.