configuration ssh pour plusieurs sauts plus «sudo su»

Oct 16 2020

J'ai une configuration particulière qui nécessite cette séquence d'étapes:

ssh me@host1
ssh me@host2
sudo su otheruser

J'ai:

  • une clé ssh sur mon ordinateur portable qui me permet de ssh me@host1
  • une clé ssh sur host1 qui me permet de ssh me@host2.

Je n'ai pas la permission de ssh otheruser@host2.

Mon objectif est: puis-je automatiser cela? De préférence dans le fichier ~ / .ssh / config de mon ordinateur portable, je peux donc simplement faire:

ssh otheruser

... et laisser la configuration s'occuper des détails, idéalement y compris le mot de passe?

Je peux déjà obtenir 2/3 du chemin avec la configuration ssh suivante:

Host host1
HostName host1.example.com

Host host2
HostName host2.example.com

Host mostly_there
HostName host2.example.com
ProxyJump host1 host2

Ce qui précède me le permet ssh mostly_theremais je dois encore le faire sudo su otheruser.

Réponses

1 jeb Oct 20 2020 at 06:17

Vous pouvez utiliser ceci dans .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

Pour vous connecter à host2 avec un autre utilisateur, utilisez simplement:

ssh otheruser

Il a actuellement l'inconvénient de ne pas être un shell interactif complet, mais cela pourrait être corrigé par une meilleure invocation que /bin/bash -i

ArkadiuszDrabczyk Oct 16 2020 at 18:10

Si vous avez root, vous pouvez déployer votre clé publique sur otheruserles authored_keys de et vous connecter sans utiliser de mot de passe. Après avoir changé pour otheruserfaire ceci:

mkdir -p ~/.ssh

et mettez votre clé publique dans ~ / .ssh / authorized_keys. Vous devriez maintenant pouvoir vous connecter à distance otherusersimplement en le faisant ssh otheruser@host.