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.
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] |
Por ejemplo podríamos hacer un ls en la máquina remota y observar su salida:
ssh usuario1@servidor.dominio.es ls |
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]$ |
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 |
[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 |
-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.
El comando sftp transfiere archivos entre máquinas de forma interactiva.
Los comandos interactivos son similares al clásico ftp:
[usuario1@localhost usuario1]$ sftp servidor.dominio.es Connecting to servidor.dominio.es... usuario1@servidor's password: sftp> help Available commands: cd path Change remote directory to 'path' lcd path Change local directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' help Display this help text get remote-path [local-path] Download file lls [ls-options [path]] Display local directory listing ln oldpath newpath Symlink remote file lmkdir path Create local directory lpwd Print local working directory ls [path] Display remote directory listing lumask umask Set local umask to 'umask' mkdir path Create remote directory put local-path [remote-path] Upload file pwd Display remote working directory exit Quit sftp quit Quit sftp rename oldpath newpath Rename remote file rmdir path Remove remote directory rm path Delete remote file symlink oldpath newpath Symlink remote file version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell ? Synonym for help sftp> |
Un ejemplo de uso:
[usuario1@localhost]sftp usuario1@servidor.dominio.es sftp> get fichero |