Secure Shell (SSH)


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

SSH (última edición 2009-09-14 04:02:10 efectuada por RicardoYanez)