ssh sustituye a rsh
Después de la r viene la s
Enrique Galdú
[email protected]
Tabla de contenidos
Introducción...........................................................................................................................3
Deshabilitar los comandos “r” ...........................................................................................3
Instalar y configurar SSH.....................................................................................................4
Comandos básicos de ssh....................................................................................................5
Métodos de autenticación ...................................................................................................8
Gestión de claves ..................................................................................................................9
Ejecución de comandos en modo no interactivo...........................................................11
Redirección de puertos ......................................................................................................13
Uso del SSH en otras aplicaciones...................................................................................14
Conclusión ...........................................................................................................................16
Bibliografía ..........................................................................................................................16
SSH (Secure SHell) es un reemplazo seguro para programas de acceso remoto y trans-
misión de archivos como telnet, rsh, rcp y ftp.
Mientras que los programas clásicos transmiten los datos en claro, SSH utiliza méto-
dos de autenticación por clave pública para establecer una conexión encriptada se-
gura entre el cliente y el servidor.
Las conexiones X11 y puertos TCP/IP también pueden ser redirigidos sobre la conex-
ión segura. Esta redirección de puertos se puede aprovechar para hacer seguras otras
aplicaciones.
Este documento se basa en OpenSSH que es la implementación del protocolo SSH
de OpenBSD. OpenSSH está disponible para muchas de las distribuciones de Linux y
UNIX.
También existen clientes de ssh para windows como Putty1 o SecureCRT2
Los ejemplos que se incluyen en este documento se corresponden con la distribución
Red Hat Linux release 9 (Shrike).
Introducción
En el uso diario de Linux es frecuente la ejecución de comandos en máquinas remo-
tas. Tradicionalmente esta necesidad se resolvía con los comandos “r” esto es: rlogin,
rsh y rcp.
Estos comandos lanzan un shell en la máquina remota y permiten al usuario ejecutar
comandos. El usuario debe usar una cuenta en la máquina remota, por lo que debe
pasar por los métodos de autenticación. Los comandos r usan la autenticación sim-
ple de usuario y contraseña, y utilizan una conexión en texto claro, por lo que estas
pueden ser interceptadas por la red.
La autenticación para los comandos “r” también se puede controlar desde algunos
archivos de configuración como son:
• /etc/hosts.equiv : a nivel de sistema, equivalencia entre usuarios de distintas
máquinas. Se puede evitar la introducción de contraseñas.
• $HOME/.rhosts: a nivel de usuario, permite el acceso a usuarios de otras máquinas
sin utilizar contraseña.
Para poder utilizar aplicaciones gráficas al usar comandos “r” se necesita usar los
comandos que controlan el acceso al servidor X. El comando xhost permite el acceso
a un host, y xauth permite dar el acceso a un usuario determinado mediante el in-
tercambio de cookies. Este es un ejemplo del comando que se ha de ejecutar para
permitir el acceso a un usuario remoto:
$xauth extract - $DISPLAY | rsh otherhost xauth merge -
Estas funcionalidades se pueden obtener de una manera sencilla mediante SSH, con
la ventaja de que utiliza criptografía de clave pública.
SSH ofrece la autenticación mediante usuario y contraseña, así como la autenticación
mediante clave pública. Los datos están encriptados en la conexión con lo que se evita
que las contraseñas o la información intercambiada pueda ser interceptada por otros
usuarios.
Así que avanzamos de la r a la s, comenzando por deshabilitar los comandos “r”.
3
ssh sustituye a rsh
Deshabilitar los comandos “r”
Los comandos “r” se controlan desde el demonio inet, para deshabilitarlos puedes
comentar sus entradas en el fichero /etc/inetd.conf. Si tu distribución utiliza
Xinetd puedes comprobar si están deshabilitados con el siguiente comando:
[root@localhost root]# chkconfig --list|grep -E "rlogin|shell|exec"
kshell: off
rexec: off
rlogin: off
En nuestro caso ya están deshabilitados. Si alguno de ellos no lo estuviera puedes
conseguirlo con el comando:
[root@localhost root]# chkconfig rlogin off
Instalar y configurar SSH
Puedes obtener el software de OpenSSH de http://www.openssh.com/3, allí encon-
trarás el fuente y versiones compiladas para diferentes sistemas operativos.
Lo mas probable es que tu distribución ya incluya este paquete. En el caso de RedHat
los paquetes básicos son:
• openssh: contiene los ficheros básicos necesarios para el servidor y clientes ssh.
• openssh-server: contiene el demonio sshd, permite a los clientes ssh establecer
conexiones seguras con el sistema.
• openssh-clients: contiene los clientes que permiten establecer conexiones con el
servidor.
necesitas tener instalado OpenSSL
Aviso
El demonio sshd
El demonio sshd es el programa que espera conexiones de red de los clientes ssh,
controla la autenticación y ejecuta el comando requerido. El puerto por defecto en el
que escucha es el 22 y su fichero de configuración es /etc/ssh/sshd_config.
Otras opciones a destacar son:
• X11Forwarding yes|no : habilitar o deshabilitar la redirección X
• PasswordAuthentication yes|no : especifica si deseamos utilizar la autenticación
básica
En esta configuración se indica también la ruta en la que encontrar las claves que
identifican nuestro servidor. Estas son la base de la autenticación mediante clave pub-
lica y los valores por defecto son:
• HostKey /etc/ssh/ssh_host_key
• HostKey /etc/ssh/ssh_host_rsa_key
• HostKey /etc/ssh/ssh_host_dsa_key
4
Estas claves generales al sistema, junto con su correspondiente clave pública, se crean
al instalar el servidor mediante el comando ssh-keygen.
ssh sustituye a rsh
Los clientes ssh
Los programas que permiten al usuario utilizar el protocolo SSH son scp,sftp y ssh.
Se
fichero
/etc/ssh/ssh_config como por ejemplo:
configurar
pueden
opciones
generales
en
el
al
sistema
• ForwardX11 yes|no : habilitar o deshabilitar la redirección X
• PasswordAuthentication yes|no : especifica si deseamos utilizar la autenticación
básica en nuestros clientes.
En él se indican las rutas para obtener las claves públicas y privadas de cada usuario:
• IdentityFile ~/.ssh/identity
• IdentityFile ~/.ssh/id_rsa
• IdentityFile ~/.ssh/id_dsa
Estas entradas indican que las claves privada y publica de cada usuario se encon-
trarán en el directorio .ssh del HOME del usuario. En este directorio se encuentra
también el fichero authorized_keys2 que controla la autenticación mediante claves,
como veremos más adelante.
Comandos básicos de ssh
SSH es un programa que permite acceder a otro ordenador a través de la red, eje-
cutar comandos en la máquina remota y mover ficheros entre dos máquinas. Provee
autenticación y comunicaciones seguras sobre canales inseguros. Es un reemplazo de
rlogin, rsh y rcp.
Vamos a ver estos usos básicos del SSH.
ssh
El comando ssh ofrece comunicación encriptada y segura entre dos sistemas sobre
una red no segura. Este comando reemplaza al telnet, rlogin, rsh.
Para iniciar una sesión en otra máquina usando ssh:
[usuario1@localhost usuario1]$ ssh
[email protected]
The authenticity of host ’servidor.dominio.es (192.168.0.2)’ can’t be established.
RSA key fingerprint is 97:4f:66:f5:96:ba:6d:b2:ef:65:35:45:18:0d:cc:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ’servidor.dominio.es’ (RSA) to the list of known hosts.
[email protected]’s password:
[
[email protected] usuario1]$
Nota: La primera vez que realizas la conexión debes aceptar la firma del otro host. De
esta manera se establece una relación de confianza que se traduce en archivar la clave
pública de este servidor en el fichero $HOME/.ssh/known_hosts.
5
ssh sustituye a rsh
La sintaxis básica del comando ssh es:
ssh user@hostname [command]
El comando es opcional. Si se especifica en lugar de obtener un shell se ejecuta el
comando en la máquina remota.
Por ejemplo podríamos hacer un ls en la máquina remota y observar su salida:
ssh
[email protected] ls
O realizar alguna operación mas elaborada como realizar una copia en local de un
directorio remoto, como en el ejemplo:
ssh
[email protected] "tar cf - /home/usuario1" |\
tar xvf -
Una de las funcionalidades que le da mayor potencia al ssh es la redirección de las
X. Si observas la variable de entorno DISPLAY observarás que tiene la forma local-
host:n.n, esta permite que al abrir cualquier aplicación gráfica su salida se redirija al
display del cliente.
[usuario1@localhost usuario1]$ ssh
[email protected]
[usuario1@servidor usuario1]$ echo $DISPLAY
localhost:11.0
[usuario1@servidor usuario1]$ xeyes&
[usuario1@servidor usuario1]$
scp
El comando scp permite copiar ficheros entre dos máquinas. Utiliza ssh para la trans-
misión de la información, por lo que ofrece la misma seguridad que el ssh. De la
misma manera utiliza los métodos de autenticación de ssh. Este comando reemplaza
al rcp, ftp.
Este es un ejemplo de uso del scp para copiar desde la máquina local a una remota:
[usuario1@localhost]scp /tmp/file
[email protected]:/tmp
También podemos copiar ficheros entre dos máquinas remotas:
[usuario1@localhost]scp usuario1@anotherhost:/tmp/file \
[email protected]:/tmp
La sintaxis del comando es:
scp [-pqrvBC46] [-F ssh_config] [
Comentarios de: ssh sustituye a rsh (0)
No hay comentarios