Konfiguracja ssh dla wielu przeskoków plus „sudo su”

Oct 16 2020

Mam określoną konfigurację, która wymaga następującej sekwencji kroków:

ssh me@host1
ssh me@host2
sudo su otheruser

Mam:

  • klucz ssh na moim laptopie, który mi na to pozwala ssh me@host1
  • klucz ssh na hoście1, który mi na to pozwala ssh me@host2.

Mam nie masz uprawnień do ssh otheruser@host2.

Moim celem jest: czy mogę to zautomatyzować? Najlepiej w pliku ~ / .ssh / config mojego laptopa, więc mogę po prostu zrobić:

ssh otheruser

... i pozwól konfiguracji zająć się szczegółami, najlepiej łącznie z hasłem?

Mogę już przejść 2/3 drogi z następującą konfiguracją ssh:

Host host1
HostName host1.example.com

Host host2
HostName host2.example.com

Host mostly_there
HostName host2.example.com
ProxyJump host1 host2

Powyższe pozwala mi na to, ssh mostly_thereale nadal muszę sudo su otheruser.

Odpowiedzi

1 jeb Oct 20 2020 at 06:17

Możesz użyć tego w .ssh / config:

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

Aby połączyć się z hostem 2 z użytkownikiem otheruser, użyj:

ssh otheruser

Obecnie ma tę wadę, że nie jest w pełni interaktywną powłoką, ale można to naprawić lepszym wywołaniem niż /bin/bash -i

ArkadiuszDrabczyk Oct 16 2020 at 18:10

Jeśli masz roota, możesz wdrożyć swój klucz publiczny do otheruserautoryzowanych kluczy i zalogować się bez użycia hasła. Po przełączeniu się, aby otheruserto zrobić:

mkdir -p ~/.ssh

i umieść swój klucz publiczny w ~ / .ssh / Authorized_keys. Powinieneś teraz móc logować się zdalnie, tak jak otheruserpo prostu robiąc ssh otheruser@host.