Konfiguracja ssh dla wielu przeskoków plus „sudo su”
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
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
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.