Comment puis-je réécrire la commande suivante avec ProxyCommand
?
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3 \
ssh -l username4 server
Ça ne marche pas
ssh -o ProxyCommand="\
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3" \
-l username4 server
username1@jumphost1's password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ssh_exchange_identification: Connection closed by remote host
Je suis conscient de son utilisation avec nc
, mais je cherche un moyen de l'utiliser avec 3+ sauts, et j'utilise également cette option avec scp
. J'ai vérifié la ssh_config
page de manuel, mais les informations sont assez rares, du moins pour moi.
ÉDITER
J'ai essayé d'utiliser ProxyCommand
imbriqué dans un autre ProxyCommand
comme suggéré ci-dessous, mais j'obtiens toujours quelque chose dans le sens suivant
debug3: ssh_init_stdio_forwarding: 192.17.2.2:2222
debug1: channel_connect_stdio_fwd 192.17.2.2:2222
debug1: channel 0: new [stdio-forward]
debug2: fd 4 setting O_NONBLOCK
debug2: fd 5 setting O_NONBLOCK
debug1: getpeername failed: Bad file descriptor
debug3: send packet: type 90
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
Heureusement, depuis 7.3
-J
ou ProxyJump
sert mon but - même si je dois encore contourner la configuration de mes clés.
ssh -q -J user1@jumphost1,user2@jumphost2,user3@jumphost3 user@server
scp
, car SCP attend des messages de contrôle SCP, mais obtient à la place des messages de contrôle SSH et échoue. D'un autre côté, leProxyCommand
fait de manière transparente et donc le plus à l'extérieurssh
(ouscp
) recevra les messages directement de l'autre extrémité.>
invite où attend pour interrompre la suite de la ligne, je suppose - c'est-à-dire que la commande ne s'exécute jamais.%
devrait fonctionner:%%h
dans votre casJe l'ai fait avec deux sauts, mais cela devrait fonctionner pour trois. Le moyen le plus simple consiste à
~/.ssh/config
définir le fichier sur chaque hôte. Donc, si vous voulez être alluméhosta
et accéder àhostd
viahostb
et hostc`, vous pouvez définir vos configurations de la manière suivante:Dans
hosta:~/.ssh/config
:Dans
hostb:~/.ssh/config
:Dans
hostc:~/.ssh/config
:Vous pouvez ensuite
ssh hostd
accéder à l'un des hôtes de la chaîne et vous vous dirigerez vershostd
.L'utilisation de netcat pour le proxy n'interfère pas avec
scp
.Si pour une raison quelconque vous ne voulez vraiment pas utiliser de
~/.ssh/config
fichiers locaux , vous pouvez le faire surhosta
:la source
nc
utilisation. Pouvez-vous réellement réécrire la commande avec laquelle j'ai postéProxyCommand
en option?scp
". Cela n'interfère pas avecscp
. Mais je vais vous donner la commande comiquement longue sous forme de montage sous peu.ProxyCommand
imbrication? Si vous relisez mon article, vous verrez que c'est l'essentiel. Je pensais que je pouvais, au lieu d'imbriquer comme vous, enchaîner tous les nœuds du milieuProxyCommand
. Je me demande toujours si c'est possible.ProxyCommand
directives avec vous vers le prochain hôte de la chaîne.