MÉTHODE 1 (utilisez la touche ssh sur inter)
Si vous souhaitez conserver le flux d'authentification
local -- authenticate --> inter -- authenticate (ask password) --> final
Cela ne peut pas être fait avec .ssh / config proxyhost.
Vous avez besoin d'un alias shell bash (j'espère que vous utilisez bash).
Dans ~/.bashrc, ajoutez la ligne suivante
alias ssh-final='ssh -t inter ssh user2@final.com'
Dans l'invite de commande, tapez simplement ce qui suit
ssh-final
finalla section dans ~/.ssh/confign'est pas utilisée.
Détails de connexion (1)
ssh -t inter ssh user2@final.com peut être vu comme suit
local# ssh inter
inter# ssh user2@final.com
localne fait que "parler" à inter. Il n'y a pas de connexion ssh directe ou indirecte entre localet final. localaffiche simplement la sortie de ssh user2@final.com.
MÉTHODE 2 (utilisez la clé ssh sur le local)
Authentification avec la même clé ssh
Host inter
User user1
HostName inter.example.com
Host final
User user2
Hostname <final.com / final IP Address>
Port 22
ForwardAgent yes
ProxyCommand ssh inter nc %h %p
Copier local ~/.ssh/id_ras.pub vers
/home/user1/.ssh/authorized_keys in `inter`
/home/user2/.ssh/authorized_keys in `final`
Détails de connexion (2)
tunneling ssh
Avant d'entrer dans le détail de ProxyCommand, regardons l'exemple suivant
Étape 1, sur la fenêtre du terminal 1
local# ssh inter -L 2000:final.com:22
Étape 2, sur la fenêtre du terminal 2
local# ssh localhost -p 2000
Dans le terminal 1, un tunnel est installé entre le port local 2000 et le port final.com 22. Tout ce qui est envoyé au port local 2000 sera transmis au port final.com 22 et vice versa.
Dans le terminal 2, ssh se connecte au port local 2000, mais communique en réalité avec le port final.com 22, qui est le sshd.
Avec le tunneling, le client ssh local à l'étape 2 est directement connecté à final.com sshd.
La "sortie" du port local 2000 est le trafic démon ssh "brut".
L'utilisation courante d'un tel tunnel est d'accéder au serveur Web interne ou au serveur de messagerie. Voici un exemple de serveur Web
local# ssh inter -L 2000:final.com:80
Dans le navigateur, utilisez l'URL suivante
http://localhost:2000
Les deux points d'extrémité du tunnel sont le port local 2000 et le port final.com 80.
Trafic entrant et sortant du point d'extrémité du tunnel "TEL QUEL". Permet d'appeler ce trafic "brut".
ProxyCommand
Host final
User user2
Hostname <final.com / final IP Address>
Port 22
ForwardAgent yes
ProxyCommand ssh inter nc %h %p
Le ProxyCommandprendre un peu plus loin. Il saute l'étape de création d'un port local et s'y connecte.
Un client ssh exécutera la commande jamais donnée derrière ProxyCommandet traitera la sortie de cette commande comme du trafic "brut". Il conserve le point de terminaison local, puis démarre une connexion ssh avec lui.
Pourquoi l'un ne fonctionne pas l'autre?
La commande suivante
ssh inter nc final.com 22
signifie essentiellement (1) se connecter à inter, puis (2) sur inter, exécuter la commande nc final.com 22.
nc - arbitrary TCP and UDP connections and listens
Il nc final.com 22se connectera donc au port final.com 22, imprimera tout le trafic entrant sur stdout et enverra tous les stdin de l'autre côté. Il s'agit d'un "tunnel" entre nc stdin / out et le port final.com 22.
Puisqu'il ncest exécuté dans la session ssh, toute sa sortie standard est retransmise au client ssh, sous forme de trafic "brut". Et le client ssh peut transmettre le trafic à nc stdin, qui se terminera au port final.com 22.
Grâce au "tunnel" ci-dessus, le client ssh local démarrera final.comdirectement une session ssh .
La commande suivante
ssh -t inter ssh user2@final.com
ne fonctionne pas avec ProxyCommandcar le trafic n'est pas "brut" à partir d'un démon ssh. C'est la sortie standard d'un client ssh . Le client parle au client signifie pas d'affaires.
Authentification avec une clé ssh différente (configuration d'origine OP)
Host inter
User user1
HostName inter.com
IdentityFile ~/.ssh/id_rsa
Host final
User user2
HostName final.com
IdentityFile ~/.ssh/id_rsa_2
ProxyCommand ssh inter nc %h %p
Copier local ~/.ssh/id_ras.pub vers
/home/user1/.ssh/authorized_keys in `inter`
Copier local ~/.ssh/id_ras_2.pub vers
/home/user2/.ssh/authorized_keys in `final`
Les deux ci-dessus permettront l'utilisation suivante
local# ssh final
Vérification supplémentaire
Utilisez verbeux
local# ssh -v final
Cela devrait aider à identifier le problème ssh.
Vérifier nc
ProxcyCommandest l' exécution ncsur inter. Vérifiez si ncest réellement disponible sur inter.
local# ssh inter
inter# nc final.com 22
Vérifiez que la clé rsa est configurée correctement
Si différentes clés doivent être utilisées pour interet final, les fichiers suivants doivent exister sur la machine locale
local# ls ~/.ssh
id_rsa id_rsa_2 id_rsa.pub id_rsa_2.pub
Comme vous pouvez interdéjà utiliser ssh , vérifiez la configuration des touches final. Depuis votre machine locale
local# ssh -t inter ssh user2@final
final# cat .ssh/authorized_keys
Vous devriez en voir le contenu id_rsa_2.pub.
ssh -t, mais ce que j'aimerais faire, c'est simuler exactement le comportement que j'ai de l'utilisation enssh -tutilisant uniquement la configuration sur le.ssh/config.