Estoy tratando de poner mi comando ssh de múltiples saltos en el archivo ssh .ssh / config.
Este es mi gráfico de conexión: laptop (estoy aquí) ------> userver -------> estación de trabajo
He puesto las claves rsa públicas ssh en 'userver' y 'workstation'. En este momento me puedo conectar escribiendo esta línea:
ssh -A -t userserver@userver ssh -A userworkstation@workstation
Sin embargo, me gustaría poder usar las capacidades del archivo de configuración en ~ / .ssh / config para lograr el mismo efecto pero usando un comando simple, que también me permitiría hacer una copia rápida con 'scp'. El único problema es que 'userver' no tiene el comando "nc" y no tengo superusuario allí, solo control de mi carpeta de inicio. Sin embargo, probé algunas cosas:
Tengo este archivo de configuración en mi computadora portátil (~ / .ssh / config):
# laptop config file
Host userver
Hostname userver_hostname
port 22
User server_user
También otro archivo de configuración en el usuario (~ / .ssh / config)
# userver config file
Host workstation
Hostname workstation_hostname
port 22
user workstation_username
Con estos archivos de configuración me puedo conectar como
ssh -A -t userver ssh -A workstation
lo cual es una mejora, pero no suficiente. Intenté agregar otro host en la configuración de mi computadora portátil, así:
Host hop
ProxyCommand ssh -A -t userver ssh -A workstation
Entonces, cuando lo hago
ssh hop
me sale el siguiente resultado con errores y no puedo conectarme:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_6.4\r': command not found
¿Algunas ideas?
fuente
Encontré que la siguiente solución funciona mucho mejor que usar netcat (
nc
) como en el otro ejemplo. Con netcat mi conexión fue muy lenta y se colgó repetidamente hasta que presioné algunas teclas. Además, no necesita tener instalado netcat.Agregue lo siguiente a su
~/.ssh/config
:Entonces puedes hacer algo así:
También tenga en cuenta que la razón por la
ProxyCommand
que no funciona es porque no está obteniendo lo queProxyCommand
sí funciona.ProxyCommand
debe crear una tubería sobre la cualssh
pueda hacer una conexión SSL. En otras palabras, el comando debe iniciar un proceso cuyos stdin y stdout se conectanssh
a unsshd
puerto. En su configuración, está haciendo una conexión ssh con laProxyCommand
que se conectassh
al shell de comandos en lugar de a unsshd
puerto.fuente