Servidor de retransmisión SSH con OpenSSH

10

¿Es posible usar OpenSSH para retransmitir a otros dispositivos habilitados para SSH, como conmutadores de enrutadores, etc. Si esto es algo que se puede hacer sin crear una aplicación a medida en Linux para hacerlo?

Gracias

un cazador
fuente

Respuestas:

9

Seguro; solo use el reenvío / túnel de puerto SSH. Inicie una conexión ssh a la máquina "proxy" con 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 usted no. Use un nombre de host o IP que $PROXYHOSTpueda 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 también desee agregar -Nal comando para que esta conexión no muestre 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 $REMOTEHOSTpuerto SSH del.

Brad Beyenhof
fuente
3

Si está dispuesto a actualizar la configuración de su cliente, puede configurarlo para usar su caja de puerta de enlace como proxy . Su caja de retransmisión necesitará instalar netcat, y para obtener los mejores resultados querrá tener una configuración de autenticación basada en claves.

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 username@ssh-relay-host "/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 incorporado.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
Zoredache
fuente
Lo sentimos, pero esto no está usando OpenSSH, ¿estás usando netcat para hacer la retransmisión entre el servidor cliente y el servidor?
aHunter
Está utilizando OpenSSH combinado con una utilidad muy común que está disponible en casi todas partes. No es puro ssh, pero no lo llamaría a medida.
Zoredache el
No, estoy de acuerdo en que no es a medida, pero quería saber si es posible retransmitir usando OpenSSH para que use un cliente ssh estándar y ssh en una caja que ejecute OpenSSH que luego automáticamente proporcione acceso ssh a otra máquina o varias máquinas. Gracias
aHunter
1
@aHunter, para el registro ahora hay un 'modo netcat' integrado en openssh 5.4 que ofrece una conexión pura de openssh - blog.rootshell.be/2010/03/08/openssh-new-feature-netcat-mode sin herramientas externas Se necesitan.
Zoredache
3

De las respuestas presentadas, 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 -tindicador 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
bahamat
fuente
solución más simple sin editar archivos
Kartoch
2

Puede reenviar conexiones automáticamente con OpenSSH. En su ~/.ssh/authorized_keysarchivo, puede especificar un comando para ejecutar, que podría ser un SSH para 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 Password:: una para el servidor de retransmisión y otra para el servidor de destino. Siempre puede eliminar este comportamiento mediante el uso de certificados.

sybreon
fuente
eso suena perfecto ¿cómo configurarías el sshd en openssh?
aHunter
Consulte la sección sobre [Comandos forzados] [1] en [1] eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
sybreon
Esta es una idea increíble. Lo último que quiero hacer es abrir 100 puertos discretos en mi firewall con rutas. Luego repita para la redundancia. Esto sugiere que puedo crear 100 claves ssh y vincular cada una a su propio servidor. Esto también sugiere que puedo bloquear completamente el servidor de retransmisión. Algunos podrían llamar a esto una VPN, pero lo veo de manera diferente.
Richard