Sí, usando ProxyCommand
en su configuración SSH.
Cree un archivo de configuración SSH en su directorio de inicio (a menos que quiera hacer esto en todo el sistema) ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
Ahora puede llegar a la Máquina A directamente usando
ssh user@internalmachine
También tenga en cuenta que ahora tiene un único nombre de destino de host SSH para él, también puede usarlo en otras aplicaciones. P.ej:
SCP para copiar archivos.
scp somefile user@internalmachine:~/
En sus aplicaciones GUI:
utilizar sftp://user@internalmachine/
como ubicación para navegar en la máquina.
Basado en KDE (Dolphin): uso fish://user@internalmachine/
Notas
Cambie hostname.or.IP.address.internal.machine
y el puerto ( 22
) a la máquina que desea alcanzar como si fuera desde la unibroker
máquina.
Dependiendo de las versiones de netcat en el host unibroker, la -q0
opción debe omitirse. En cuanto a la autenticación; básicamente está configurando dos conexiones SSH desde su estación de trabajo. Esto significa que tanto el host del unibroker como el host de la máquina interna se verifican / autentican uno tras otro (tanto para el par de claves / contraseña como para la verificación de la clave del host).
Explicación
Este enfoque del uso de ProxyCommand
y 'netcat' es solo una forma de hacerlo. Me gusta esto, porque mi cliente SSH habla directamente con la máquina de destino para que pueda verificar la clave de host de mi cliente y puedo usar mi autenticación de clave pública sin usar otra clave en el intermediario.
Cada uno Host
define el inicio de una nueva sección de host. Hostname
es el nombre de host de destino o la dirección IP de ese host. User
es lo que proporcionaría como parte del usuario ssh user@hostname
.
ProxyCommand
se utilizará como tubería para la máquina de destino. Al usar SSH en la primera máquina y configurar directamente un 'netcat' ( nc
) al objetivo desde allí, esto es básicamente un texto sin formato hacia la máquina interna desde el intermediario entre ellos. Las -q
opciones son silenciar cualquier salida (solo una preferencia personal).
Asegúrese de tener netcat instalado en el agente (generalmente disponible de forma predeterminada en Ubuntu), ya sea netcat-openbsd o netcat-traditional .
Tenga en cuenta que todavía está utilizando SSH con cifrado dos veces aquí. Si bien el canal netcat es de texto sin formato, su cliente SSH en su PC configurará otro canal cifrado con la máquina de destino final.