Hosts de salto: SSH de múltiples saltos
Cree un laboratorio de tres máquinas virtuales y conéctese a un destino a través de dos hosts de salto SSH desde su Mac.
Antes de ejecutar
Utilice un entorno de prueba privado. Reemplace las direcciones IP de ejemplo con las direcciones de VM reales. Verifique cada clave de host SSH a través de Multipass antes de confiar en ella. ProxyJump autentica cada salto desde tu Mac; no requiere una clave privada en un host de salto. Los hosts de salto deben permitir el reenvío TCP y cada salto debe poder llegar al siguiente. Mantenga una sesión de recuperación disponible antes de cambiar las reglas del firewall.
Ejemplos
Instale Multipass, cree tres máquinas virtuales Ubuntu y registre sus direcciones IP reales.
brew install --cask multipass
multipass launch --name jump1
multipass launch --name jump2
multipass launch --name target
multipass listCrea una clave dedicada en Mac. Elija una frase de contraseña y no sobrescriba una clave existente.
ssh-keygen -t ed25519 -f ~/.ssh/securepipes_lab_ed25519Copie solo la clave pública a cada VM. Estos comandos crean el archivo temporal Securepipes-lab.pub en cada directorio de inicio de Ubuntu; compruebe que no exista antes de ejecutarlos.
for vm in jump1 jump2 target; do
multipass exec "$vm" -- test ! -e /home/ubuntu/securepipes-lab.pub || break
multipass transfer ~/.ssh/securepipes_lab_ed25519.pub "${vm}:/home/ubuntu/securepipes-lab.pub" || break
multipass exec "$vm" -- sh -c 'umask 077; mkdir -p "$HOME/.ssh"; chmod 700 "$HOME/.ssh"; cat "$HOME/securepipes-lab.pub" >> "$HOME/.ssh/authorized_keys" && chmod 600 "$HOME/.ssh/authorized_keys" && rm "$HOME/securepipes-lab.pub"' || break
doneCompare la huella digital de su clave pública con las claves instaladas. El archivo autorizado_keys también puede contener otras claves.
ssh-keygen -lf ~/.ssh/securepipes_lab_ed25519.pub
multipass exec jump1 -- ssh-keygen -lf /home/ubuntu/.ssh/authorized_keys
multipass exec jump2 -- ssh-keygen -lf /home/ubuntu/.ssh/authorized_keys
multipass exec target -- ssh-keygen -lf /home/ubuntu/.ssh/authorized_keysObtenga la huella digital de la clave del host de cada servidor a través de Multipass. Compárelo con la huella digital mostrada por SSH antes de aceptar una nueva clave de host.
multipass exec jump1 -- sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
multipass exec jump2 -- sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
multipass exec target -- sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubAgregue estas entradas a ~/.ssh/config en su Mac usando sus IP de VM reales. Preservar las entradas existentes; colóquelos antes de cualquier valor predeterminado de Host * coincidente. Ajuste IdentityFile si elige otra ruta clave.
Host jump1
HostName 192.168.252.2
User ubuntu
IdentityFile ~/.ssh/securepipes_lab_ed25519
IdentitiesOnly yes
Host jump2
HostName 192.168.252.3
User ubuntu
IdentityFile ~/.ssh/securepipes_lab_ed25519
IdentitiesOnly yes
Host target
HostName 192.168.252.4
User ubuntu
IdentityFile ~/.ssh/securepipes_lab_ed25519
IdentitiesOnly yesPruebe primero el acceso directo y luego conéctese a través de ambos hosts de salto. Acepte una clave de host solo después de verificar su huella digital. En Secure Pipes, configure los mismos dos hosts de salto para la conexión de destino.
ssh jump1
ssh jump2
ssh target
ssh -J jump1,jump2 targetPrueba de laboratorio controlada opcional: solo si el objetivo puede distinguir la IP de origen de Mac de jump2 y una política UFW existente permite SSH, permita jump2 antes de denegar la IP de origen de Mac real. Reemplace ambos marcadores de posición. No habilite ni cambie un firewall de producción según este ejemplo; mantenga el acceso a la consola y elimine las reglas después de la prueba.
# On the target VM, replace the placeholders first:
sudo ufw status numbered
sudo ufw insert 1 allow from <JUMP2_IP> to any port 22 proto tcp
sudo ufw insert 2 deny from <MAC_SOURCE_IP> to any port 22 proto tcpDespués de las reglas de firewall opcionales, SSH directo debería fallar mientras que ProxyJump tiene éxito. Elimine las dos reglas utilizando las mismas direcciones IP reales y luego verifique el acceso nuevamente.
ssh target
ssh -J jump1,jump2 target
# On target, remove the lab rules:
sudo ufw delete deny from <MAC_SOURCE_IP> to any port 22 proto tcp
sudo ufw delete allow from <JUMP2_IP> to any port 22 proto tcpReferencias oficiales
Revisado el 27 de octubre de 2026