Vamos a ver como instalar y configurar el servidor SSH en Debian, acceder desde los clientes, usar el comando scp y usar el protocolo sftp.
Instalación del servidor SSH
Vamos a realizar la instalación del servidor SSH en la distribución de Linux Debian 7 Wheezy:
aptitude install openssh-server
Configuración básica de OpenSSH
El servidor SSH tiene la ip 192.168.0.77
Opciones a tener en cuenta en /etc/ssh/sshd_config
“Port” podemos dejar el puerto 22 por defecto o cambiarlo al puerto que queramos
“UsePrivilegeSeparation” debemos tenerlo a yes
“PermitRootLogin” si queremos tener superpoderes sobre el sistema de forma remota debemos tenerlo a yes.
Las opciones X11 puestas a yes queremos permitir la ejecución de aplicaciones graficas, escritorios remotos, etc.
Si queremos permitir la ejecución de aplicaciones gráficas ponemos a yes estas opciones en /etc/ssh/ssh_config
Podemos bloquear conexiones por ssh a nuestro servidor modificando el fichero /etc/hosts.deny una buena practica es bloquear todas las direcciones ip y permitir solo lo equipos que queramos que se conecten que necesitemos en /etc/hosts.allow.
Modificamos el fichero /etc/hosts.deny
sshd: ALL@ALL
Le decimos que bloquee a todos los usuarios de todas las IPs
Permitimos solo las ip de los clientes que puedan que conectarse al servidor.
Cuando acabamos de configurar el servidor ssh reiniciamos el servicio.
/etc/init.d/ssh restart
Instalación del cliente SSH en Debian Squeeze
Para poder administrar el servidor de forma remota tenemos que instalar el cliente SSH ya sea en Linux o en Windows.
Tenemos varios clientes SSH para Linux (openssh-client, putty, private shell, zoc-ssh, etc).
En Windows hay alguno menos (putty, Movas, zoc terminal, etc)
En este caso instalamos openssh client en Debian Squeeze
aptitude install openssh-client
Conexión al servidor con SSH desde la consola
Para conectarnos al servidor desde cualquier Linux (incluso desde Mac OS X que lo suele llevar instalado por defecto ya que al estar basado en UNIX es lo mismo) y tener acceso total al sistema con el shell, para administrarlo o para hacer cualquier cuestión tenemos que usar el siguiente comando
ssh nombre_de_usuario_del_servidor@ip_del_servidor
Si cambiamos el puerto por el que escucha el servidor ssh al conectarnos debemos indicarlo con la opción -p
ssh -p NºPuerto nombre_usuario@ip_servidor
Vamos a conectarnos a nuestro servidor
ssh usuario@192.168.0.77
Si tenemos la opción de poder identificarnos como root, podemos entrar como tal
Podemos por ejemplo crear una carpeta en el escritorio del servidor.
Y se crea en el servidor sin problema.
Una vez que acabamos de administrar el servidor de forma remota (los comandos son los mismos que si estuviéramos delante de la terminal del servidor físicamente) cerramos la sesión con exit.
Conexión al servidor SSH desde Windows
Descargamos el cliente ssh putty de su web oficial
Ejecutamos putty.exe, ni siquiera es necesaria la instalación, se nos abre esta ventana en la que pondremos en Host Name el servidor al que vamos a conectarnos el protocolo que vamos a usar en este caso SSH y el puerto por el que el servidor esta escuchando.
Putty nos permite guardar la configuración de las sesiones de los diferentes equipos que tengamos que administrar de esta forma podemos tener muchos equipos añadidos a putty y con un click acceder a la consola.
Cuando le demos a Open entraremos en la consola y tendremos el control total del servidor de forma remota desde Windows.
Comando SCP (Secure Copy)
El comando SCP sirve para copiar ficheros via SSH del servidor al cliente y viceversa.
Copiar del servidor al cliente (el usuario a veces es opcional si el nombre del usuario del servidor ssh es el mismo con el que estamos ejecutando la copia en maquina local, por eso puede omitirse):
scp usuario@ip_servidor:ficheros /capeta_destino_cliente
Copiar del cliente al servidor
scp /ficheros_del_cliente usuario@ip_servidor:/carpeta_destino_servidor
En ambos casos se copian los ficheros sin problemas.
El comando SCP tiene algunas opciones que pueden ser interesantes:
-p: Preserva permisos, así como tiempos de modificación y acceso.
-q: No muestra la barra de progreso.
-r: Copia recursiva, es decir que copia los sud directorios.
-v: Muestra los mensajes para debugging.
Para usar SCP en Windows debemos descargarnos Putty SCP desde su web http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Una vez descargado accedemos desde la consola, a donde tengamos el ejecutable pscp.exe y el comando funciona igual que en Linux solamente que añadiendo una p delante de scp
SFTP Secure Transfer Protocol
SSH nos permite el uso de SFTP que básicamente es el servicio FTP de transferencia de ficheros pero cifrado, por tanto es seguro.
Enjaular usuarios SFTP
Por defecto SFTP comparte TODA la raíz del sistema, da un control total estar basado en SSH, para enjaular a los usuarios en un directorio concreto tenemos que hacer lo siguiente:
Editamos el archivo /etc/ssh/sshd_config
Comentamos la linea
#Subsystem sftp /usr/lib/openssh/sftp-server
Agregamos las siguientes lineas
Subsystem sftp internal-sftp Match user USUARIO ChrootDirectory /directorio ForceCommand internal-sftp
En mi caso dejaré toda la raiz, sin enjaular a ningún usuario.
Acceder al servidor SFTP desde Linux
Podemos usar un cliente FTP, como Filezilla que lo veremos en Windows.
Podemos acceder desde el menú Lugares > Conectar con el servidor
Nos da acceso toda la raíz del sistema para copiar, borrar y subir ficheros, según los permisos que tenga el usuario con el que hemos entrado.
También podemos acceder vía consola con el comando sftp que es prácticamente igual que el de ftp.
Acceder al servidor SFTP desde Windows
En Windows podemos usar Filezilla u otro cliente FTP para acceder.
En servidor ponemos sftp://192.168.0.77, ponemos el nombre de usuario, la contraseña y el puerto 22 de SSH.
Podremos descargar, subir o borrar lo que queramos, donde el usuario que tenga permiso.
En la parte inferior de la ventana nos indica con un candado que esta conexión está cifrada.
También podemos usar el comando psftp en Windows descargando desde la web de Putty.