El cliente de SSH es una aplicación que permite hacer logging en un ordenador remoto y también ejecutar comandos remotamente.
También es posible ejecutar aplicaciones gráficas, y redirigir puertos TCP entre las máquinas local y remota, en ambos sentidos.
SSH establece una comunicación segura cifrada entre la máquina local y remota a través de una red insegura.
El cliente SSH para funcionar necesita conectarse al servidor SSH situado en la máquina remota.
Instalar ssh y sshd
Los programas binarios de SSH son:
ssh — Cliente SSH de OpenSSH (programa de login remoto)
sshd — Demonio SSH de OpenSSH
En Debian o Ubuntu:
$ sudo aptitude install openssh-client
# instala el cliente ssh.$ sudo aptitude install openssh-server
# instala el demonio sshd.Configurar el cliente SSH
El fichero de configuración general del cliente OpenSSH:
/etc/ssh/ssh_config
(NOTA: el fichero de configuración de usuario ~/.ssh/config tiene precedencia sobre el fichero de configuración general)
Edita el fichero de configuración siguiendo las instruciones de su página de manual:
$ man ssh_config
Configurar el servidor SSH
El fichero de configuración del servidor OpenSSH:
/etc/ssh/sshd_config
La página de manual muestra información acerca de las opciones en este fichero:
$ man sshd_config
Algunas opciones interesantes que podemos editar en el fichero de configuración del servidor:
Port 22
# Seleciona el puerto en el que escucha el demonio de SSH.PermitRootLogin yes
# Habilita el poderse loguear como root.X11Forwarding yes
# Habilita la redirección de las X11.X11DisplayOffset 10
# Configura el display que usará el servidor X11 de 10 en adelante.Después de editar el fichero de configuración del servidor es necesario reiniciar el demonio sshd.
$ sudo service ssh restart
Login remoto
Para loguearse en un ordenador remoto:
$ ssh -l username -p puerto maquina_remota
ó
$ ssh username@maquina_remota -p puerto
Si no le pasamos ningún número de puerto, usa por defecto el 22.
Si no le pasamos nombre de usuario, emplea por defecto el mismo que en la máquina local.
Ejecutar un comando en el sistema remoto
$ ssh user@hostname "comando_a_ejecutar"
P.ej:
$ ssh user@hostname "ls -l"
# lista el directorio home del usuario remoto.Utilizando la entrada estandar, la salida estandar, y tuberías podemos intercambiar ficheros entre los sistemas local y remoto.
Este comando copia el fichero foo desde el home del usuario en la máquina remota hasta el directorio local en la máquina local:
$ ssh user@hostname "cat foo" | cat - > foo
O a la inversa, para copiar el fichero desde el directorio local a la máquina remota:
$ cat foo | ssh user@hostname "cat - > foo"
Exportar las X windows
Cuando invocamos el cliente ssh, si queremos ejecutar aplicaciones gráficas, necesitamos proporcionar algunas opciones al cliente ssh, en la línea de comandos.
NOTA: El servidor necesita tener activada la redirección de las X11, para que ésto funcione, en el fichero de configuración.
$ ssh -XC user@hostname
-X habilita la redirección de las X11
-C habilita la compresión
Podemos entonces ver localmente aplicaciones gráficas X ejecutadas en la máquina remota. Normalmente se asocian al display del :10 en adelante.
$ ssh -XC user@hostname
$ xeyes
$ env | grep -i display
DISPLAY=localhost:10.0
o simplemtente:
$ ssh -XC user@hostname xeyes
Redirigir puertos entre los sistemas local y remoto
Redirigir un puerto local al sistema remoto:
-L local_port:hostname:port
# redirige el puerto local "local_port" al servidor remoto y puerto "hostname:port".P.ej: Supongamos que está habilitado telnet en el puerto 25 en la máquina remota.
$ ssh -L 2025:localhost:25
# Redirige el puerto local 2025 al puerto 25 en la máquina remota.En el ordenador local podemos ejecutar:
$ telnet -l user localhost:2025
# y estaríamos haciendo login en la máquina remota.P.ej: de la página de manual de x11vnc:
$ ssh -t -L 5900:localhost:5900 far-host 'x11vnc -localhost -display :0'
localhost indica aquí la máquina remota, donde le servidor ssh está instalado.
P.ej:
$ ssh -l username remote_IP -L 8025:localhost:25 -L 8143:localhost:143
Redirigir puertos del sistema remoto a alguna máquina en la parte local de la red:
-R port:host:hostport
# redirige el puerto "port" de la máquina remota a "host:hostport"P.ej:
$ ssh -l user remote_IP -R 2222:local_IP:5900
Entonces en el sistema remoto, si nos conectamos al puerto 2222 en realidad estamos conectaándonos al puerto 5900 en la máquina local.
remote_box$ vncviewer localhost:2222
REFERENCIA
$ man ssh
$ man sshd
$ man ssh_config
$ man sshd_config
TRADUCIDO DE
SSH client and daemon: Introduction
No hay comentarios:
Publicar un comentario