configuração ssh para vários saltos mais “sudo su”

Oct 16 2020

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

1 jeb Oct 20 2020 at 06:17

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

ArkadiuszDrabczyk Oct 16 2020 at 18:10

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.