Guia rápida de ssh
Enlaces, documentación
- SSH via HTTP proxy in OSX
- Connect with SSH through a proxy
- Connecting to Your Linux Instance Using SSH
Usar ssh detrás de un proxy
El comando para realizar una conexión ssh a través de un servidor proxy es:
$ ssh <user>@<host> -o "ProxyCommand=nc -X connect -x <proxyhost>:<proxyport> %h %p"
Por ejemplo:
$ ssh asainz@sulaco.ttcloud.net -o "ProxyCommand=nc -X connect -x proxyinternet.tesa:8080 %h %p"
Para que este comando funcione, el servidor proxy tiene que aceptar el método de conexión CONNECT
y el comando nc
tiene que estar instalado en el sistema.
Para usar un proxy socks5 el comando es:
$ ssh <user>@<host> -o "ProxyCommand=nc -X 5 -x <proxyhost>:<proxyport> %h %p"
Y para usar un proxy socks4 se utilizaría la opción -X 4
.
Para no tener que teclear el comando cada vez que se utiliza el cliente ssh se puede configurar esta opción en el archivo de configuración de ssh, ~/.ssh/config
.
Se puede añadir la opción para todos los hosts:
Host *
ProxyCommand nc -X connect -x proxyhost:proxyport %h %p
ServerAliveInterval 10
O para un host en concreto:
Host sulaco.ttcloud.net
ProxyCommand nc -X connect -x proxyhost:proxyport %h %p
ServerAliveInterval 10
La opción ServerAliveInterval
es para que el proxy no desconecte después de un periodo de inactividad.
nc en Mac OSX
La versión de nc de OSX tiene un problema de compatibilidad con los proxies http. No es compatible con proxies que utilizan HTTP 1.1, sólo es compatible con HTTP 1.0. El proxy de Telefónica utiliza HTTP 1.1, por lo que no se puede usar nc. Una alternativa que funciona perfectamente es ncat, que forma parte del paquete nmap.
La opción para utilizar ncat en el archivo ~/.ssh/config
es:
Host *
ProxyCommand ncat --proxy proxyhost:proxyport --proxy-auth user:passwd %h %p
Autenticación con clave privada (archivos .pem)
Para conectarse a máquinas virtuales de Amazon y Fiware, hay que utilizar la autenticación con clave privada (archivos .pem)
Configuración del cliente
La opción para conectarse a un servidor que requiere autenticación por clave privada es -i <archivo.pem>
:
$ ssh <user>@<host> -i <path/file.pem>
El archivo .pem tiene que tener permisos de lectura únicamente para el propietario del archivo (chmod 400 <archivo.pem>
).
La configuracíón equivalente en el archivo ~/.ssh/config
sería:
Host <host>
IdentityFile <path/file.pem>
Configuración del servidor
Cuando el servidor ssh está configurado para aceptar únicamente conexiones sin password mediante clave privada, en el directorio .ssh
del usuario hay que copiar el archivo authorized_keys
que se haya generado para el usuario por defecto de la maquina virtual.
El directorio .ssh
tiene que tener permisos de lectura/escritura/ejecución sólo para el propietario (chmod 700 ~/.ssh
) y el archivo authorized_keys
permisos de lectura/escritura únicamente para el propietario (chmod 600 ~/.ssh/authorized_keys
).
Además, hay que comprobar que el el archivo de configuración del servidor sshd (/etc/ssh/sshd_config
) esté autorizado el acceso por ssh para el nuevo usuario. Esto hay que hacerlo obligatoriamente en las máquinas virtuales Ubuntu de Fiware.