miércoles, 13 de mayo de 2009

Manual ssh, scp

Comandos básicos de ssh

SSH es un programa que permite acceder a otro ordenador a través de la red, ejecutar 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 usuario1@servidor.dominio.es
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.
usuario1@servidor.dominio.es's password:

[usuario1@servidor.dominio.es usuario1]$

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.

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 usuario1@servidor.dominio.es ls
O realizar alguna operación mas elaborada como realizar una copia en local de un directorio remoto, como en el ejemplo:
ssh usuario1@servidor.dominio.es "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 localhost:n.n, esta permite que al abrir cualquier aplicación gráfica su salida se redirija al display del cliente.

[usuario1@localhost usuario1]$ ssh usuario1@servidor.dominio.es
[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 transmisió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 usuario1@servidor.dominio.es:/tmp

También podemos copiar ficheros entre dos máquinas remotas:
[usuario1@localhost]scp usuario1@anotherhost:/tmp/file \
usuario1@servidor.dominio.es:/tmp

La sintaxis del comando es:
scp [-pqrvBC46] [-F ssh_config] [-S program] [-P port] [-c cipher]
[-i identity_file] [-o ssh_option] [[user@]host1:]file1 [...]
[[user@]host2:]file2

Puedes consultar las opciones en la página man de scp, estas son las más habituales:
-p: conserva las propiedades del archivo. Permisos del archivo, fecha de última de modificación.
-r: copia recursiva de directorios

La sintaxis para especificar el origen o destino de los archivos tiene la forma [[user@]host:]file donde:
user: es el usuario de la máquina. Si no se especifica es el actual.
host: es la máquina origen o destino del archivo. Si no se informa es la máquina local.
file: fichero o directorio a copiar. Por defecto es el directorio HOME del usuario. En caso de ser un directorio deberás especificar la opción -r.

No hay comentarios: