configuração ssh para vários saltos mais “sudo su”
Tenho uma configuração específica que requer esta sequência de etapas:
ssh me@host1
ssh me@host2
sudo su otheruser
Eu tenho:
- uma chave SSH no meu laptop que me permite
ssh me@host1 - uma chave ssh no host1 que me permite
ssh me@host2.
Eu não tenho permissão para ssh otheruser@host2.
Meu objetivo é: posso automatizar isso? De preferência no arquivo ~ / .ssh / config do meu laptop, para que eu possa simplesmente fazer:
ssh otheruser
... e deixe a configuração cuidar dos detalhes, de preferência incluindo a senha?
Já consigo obter 2/3 do caminho com a seguinte configuração de ssh:
Host host1
HostName host1.example.com
Host host2
HostName host2.example.com
Host mostly_there
HostName host2.example.com
ProxyJump host1 host2
O acima me permite, ssh mostly_theremas ainda preciso sudo su otheruser.
Respostas
Você pode usar isso em .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
Para se conectar ao host2 com o usuário outro usuário, basta usar:
ssh otheruser
Atualmente tem a desvantagem de não ser um shell totalmente interativo, mas que poderia ser corrigido por uma invocação melhor do que /bin/bash -i
Se você tiver root, pode implantar sua chave pública em otheruserauthorized_keys e fazer o login sem usar uma senha. Depois de mudar para otheruserfazer isso:
mkdir -p ~/.ssh
e coloque sua chave pública em ~ / .ssh / authorized_keys. Agora você deve conseguir fazer login remotamente com otheruserapenas fazendo ssh otheruser@host.