Solución 1:
Por supuesto; simplemente use el reenvío/tunelización de puertos SSH. Inicie una conexión ssh a la máquina "proxy" usando el siguiente comando:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
:la máquina a la que tienes acceso SSH$REMOTEHOST
:la máquina a la que $PROXYHOST se puede conectar, pero tú no. Use un nombre de host o IP que$PROXYHOST
puede usar para referirse a la máquina$SSHPORT
:el puerto que sshd está escuchando en remotehost; muy probablemente 22$LOCALPORT
:el puerto de salida local SSH se está abriendo en su máquina local que reenvía al puerto 22 en$REMOTEHOST
Deje esa conexión para mantener el túnel funcionando. Es posible que desee agregar también -N
al comando para que esta conexión no abra un shell remoto y no lo cierre accidentalmente más tarde.
Una vez establecido el túnel, haga lo siguiente:
ssh -p $LOCALPORT localhost
Esto intenta una conexión SSH a su máquina local en el puerto que se reenvía al $REMOTEHOST
Puerto SSH de .
Solución 2:
Si está dispuesto a actualizar la configuración de su cliente, puede configurar su cliente para usar su caja de puerta de enlace como un proxy. Su caja de retransmisión necesitará netcat instalado, y para obtener los mejores resultados querrá tener una configuración de autenticación basada en clave.
Esto es lo que uso en mi .ssh/config para conectarme a través de otro host.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] "/bin/netcat -w 1 internal-ssh-host 22"
Con lo anterior, simplemente puede ejecutar el comando ssh internal-ssh-host-proxy desde su máquina cliente.
Si el host proxy SSH tiene el cliente OpenSSH 5.4 o superior, no necesita netcat y, en su lugar, puede usar el modo netcat integrado.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh [email protected] -W internal-ssh-host:22
Solución 3:
De las respuestas presentadas, la de Zordache es la mejor solución general. Sin embargo, para la posteridad, si simplemente desea conectarse ad-hoc sin editar su configuración, use el -t
bandera para asignar un pseudo terminal junto con la ejecución de ssh directamente en el relé.
ssh -t relay.example.com ssh internal.example.com
Solución 4:
Puede reenviar conexiones automáticamente usando OpenSSH. En tu ~/.ssh/authorized_keys
archivo, puede especificar un comando para ejecutar, que podría ser un SSH a una segunda máquina.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
Lo que terminará viendo son dos indicaciones para Password:
:uno para el servidor de retransmisión y otro para el servidor de destino. Siempre puede eliminar este comportamiento mediante el uso de certificados.