Secure Shell (SSH)
Contents
Uso de SSH
Login remoto
$ ssh usuario@servidor
Copia remota de archivos
$ scp [-p] [-r] [usuario@servidor:]ruta/archivo [usuario@servidor:]ruta/archivo
-p preserva las atribuciones de los archivos, -r copia en forma recursiva, útil para copiar directorios y subdirectorios. Ejemplos:
$ scp -p usuario@servidor:directorio/archivo .
copia el archivo ~/directorio/archivo del servidor remoto al directorio actual del cliente.
$ scp -pr usuario@servidor:directorio ~/personal
copia el directorio ~/directorio del servidor remoto al directorio local ~/personal/directorio, si el directorio ~/personal existe, en caso contrario a ~/personal ( renombrando ~/directorio a ~/personal).
$ scp -r ~/directorio/archivo usuario@servidor:
copia el archivo local ~/directorio/archivo a la raíz del usuario remoto.
$ scp -pr ~/directorio usuario@servidor:/usr/local/share
copia el directorio local ~/directorio a /usr/local/share/directorio en el servidor remoto. Este ejemplo usa una ruta absoluta, partiendo de la raíz / del servidor remoto. Cuando la ruta no es absoluta, parte siempre de la raíz del usuario ~/.
Instalar el servidor SSH
La instalación de Debian instala por omisión el cliente SSH, paquete openssh-client, pero no el servidor. Para recibir conexiones SSH instala openssh-server,
# apt-get install openssh-server
El puerto SSH es el numero 22, por si usas un cortafuegos.
El servidor SSH también lee /etc/hosts.allow y /etc/hosts.deny para determinar conexiones permitidas y bloqueas a nivel de daemon. Por ejemplo, /etc/hosts.deny podría bloquear SSH completamente,
# /etc/hosts.deny: sshd: ALL
mientras /etc/hosts.allow permite conexiones específicas,
# /etc/hosts.allow: sshd: .dominio.de.confianza sshd: 186.23.221.12
Usar llaves de autenticación
Una llave de autenticación sirve para establecer una conexión SSH entre cliente y servidor sin necesidad de mediar una clave. La llave cumple esa función.
Genera en el computador cliente una llave de autenticación SSH RSA personal,
$ ssh-keygen -t rsa -b 2048
Este comando crea un par de llaves en ~/.ssh/, una privada. id_rsa, que por ningún motivo debes perder, y otra pública, id_rsa.pub. -b indica el número de bits de la llave; 2048 bits es considerado suficiente. También puedes indicar el nombre del archivo de la llave con -f mi_llave_ssh.
Transfiere la llave pública al servidor remoto con scp,
$ scp -p ~/.ssh/id_rsa.pub usuario@servidor.remoto:
Inserta la llave en el archivo de llaves autorizadas del usuario remoto,
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
Protege la lista de llaves autorizadas con,
$ chmod 600 ~/.ssh/authorized_keys
Desde el computador local que generó la llave de autenticación SSH, ingresa a la cuenta del servidor remoto,
$ ssh usuario@servidor.remoto
(debería ingresar automáticamente sin mediación de una clave).
Bloquear el ingreso remoto a root con una clave
Primero configura el ingreso a root con una llave de autenticación (sin que medie una clave).
Edita /etc/ssh/sshd_config y modifica,
PermitRootLogin without-password
Esto instruye al servidor SSH a no aceptar el ingreso a root con una clave.
Reinicia el servidor SSH,
# /etc/init.d/ssh restart