Je cherche un moyen simple de passer à SSH à partir de ma machine locale, A, via un proxy, B, vers un hôte de destination, C. La clé privée associée à la clé publique de C est sur B, et je ne peux pas mettre cette clé sur ma machine locale. Des conseils?
Aussi, j'aimerais pouvoir faire ceci en utilisant ~ / .ssh / config.
Merci!
Réponses:
Schématique:
Conditions préalables:
A
exécute ssh-agent;A
peut accéderB
;B
peut accéderC
;A
La clé publique ssh de est présente dansB:~/.ssh/authorized_keys
B
La clé publique ssh de est présente dansC:~/.ssh/authorized_keys
Dans
~/.ssh/config
leA
, ajoutezSi votre clé privée ssh sur B est dans un emplacement non standard, ajoutez son chemin après
ssh-add
.Vous devriez maintenant pouvoir accéder à
C
partir deA
:la source
ProxyJump B
. source: wikibooksnc
?ForwardAgent yes
avant laProxyJump
commande.Vérifiez si suivre fonctionne.
Utilisez la commande suivante si vous souhaitez utiliser la clé stockée sur B.
Ici, nous spécifions que la commande
ssh -i /path/to/identity_on_B C
est exécutée sur B au lieu d’un shell de connexion.la source
J'ai travaillé ça maintenant. Voici la solution, qui est plutôt simple. J'aurais dû le voir plus tôt:
~ / .ssh / config:
«B» est le serveur proxy par lequel vous passez. Il doit être configuré comme vous le feriez normalement pour configurer l'accès à un serveur.
'C' est l'hôte de destination. Il doit être configuré pour utiliser 'B' dans le processus de connexion. Le fichier d'identité en 'C' est le chemin d'accès à la clé ssh sur 'B'. ProxyCommand utilise Netcat pour ouvrir la connexion à "C" à partir de "B". Netcat, ou nc, devra être installé sur "B".
J'espère que cela aide les autres.
la source
J'ai écrit un script simple pour répertorier mes clés ssh sur l'instance distante, puis ajouter celle que j'ai sélectionnée à mon agent ssh local. Ce n’est pas très propre, mais me permet de conserver toutes les clés sur un emplacement distant plutôt que localement.
Voici le script si quelqu'un est intéressé:
la source
la source
Faire:
ssh someuser@IP_D
tel que
A -> B-> C -> D
où A est l'hôte sur lequel vous vous trouvez,éditez votre ~ / .ssh / config local comme ceci:
Cette réponse est basée sur la réponse choisie. Je devais comprendre comment divers utilisateurs s’intégraient dans le scénario.
Cela fonctionne pour moi. HTH.
la source
La réponse de Snowball a beaucoup aidé. Cependant, j'ai apporté quelques modifications à la commande et je voulais expliquer son fonctionnement. Compte tenu de cette situation:
Modifiez votre
~/.ssh/config
fichier et ajoutez l'hôteB
par lequel vous souhaitez passer, comme vous le feriez normalement pour configurer un hôte:Ensuite, vous ajoutez l'hôte sur
C
lequel vous souhaitez vous retrouver:Notez le
ProxyCommand
, où:ssh -T -q
indique qu'il ne doit pas allouer de pseudo-TTY (-T
) ni être silencieux (-q
);B
, nous ajoutons la clé aux clés SSH deA
throughssh-add
;-o 'ForwardAgent yes'
.ssh-add -t 1
indique que je souhaite que la clé ne soit ajoutée que pendant la seconde nécessaire à l'authentification auprès de l'hôte final C;nc %h %p
initie unenetcat
connexion au dernier hôte%h
au port%p
(les deux seront renseignés par SSH en fonction des informations contenues dans le~/.ssh/config
fichier).Si vous devez spécifier une clé personnalisée
B
à utiliser, vous pouvez le faire en modifiant lassh-add
pièce:la source