Mediante SSH podemos acceder a la terminal de cualquier equipo remoto del que conozcamos su IP, usuario y contraseña, tanto si está situado en otra zona de nuestra casa o al otro lado del mundo. De hecho, es la única forma de conexión que nos facilitan cuando contratamos un VPS (del inglés, Servidor Privado Virtual) para alojar nuestra página web o cualquier otro servicio como correo, nube, etc... Incluso permite acceder a carpetas remotas fácilmente y el montaje local con SFTP de carpetas remotas en nuestro equipo.
SSH establece conexiones encriptadas por lo que la seguridad esta garantizada. Es necesario sustituir los valores escritos en MAYÚSCULAS por los adecuados a cada caso.
Una vez conectados, tendremos dominio total sobre el equipo remoto como si de nuestro PC se tratara, pudiendo actualizar, instalar, desinstalar, reiniciar, lanzar y/o cerrar aplicaciones y/o servicios. Si dichas aplicaciones disponen de GUI (del inglés, Interfaz Gráfica de Usuario), podremos visualizarlas en nuestro entorno gráfico local e interactuar con ellas usando teclado y ratón como si corrieran en nuestro equipo. Un ejemplo de ellas sería transmission, simple-scan, mintupdate... Sólo tenemos que escribir sus nombres en la terminal remota.
Autenticación mediante contraseña
Linux Mint trae ya instalado y configurado el cliente SSH para su uso, así que sólo nos resta instalar el servidor con
apt install openssh-server
en aquellos equipos a los que queramos acceder y abrir el puerto 22 del cortafuegos sudo ufw allow ssh
Ahora ya podemos conectar desde el cliente usando:
Code: Select all
ssh -X USUARIO-REMOTO@IP-REMOTA
Podemos simplificar el uso de comandos en la terminal con Alias. En caso de no ver las GUI, editar el archivo remoto
sudo nano /etc/ssh/sshd_config
y comprobar que X11Forwarding queda así: X11Forwarding yes
. Y reiniciamos el servicio con sudo systemctl restart sshd
Durante la primera conexión, se nos informará de que la máquina remota no se encuentra en nuestra lista local de equipos conocidos y nos preguntará si deseamos continuar con la conexión. Respondemos afirmativamente y será añadida a la misma. A continuación pedirá que introduzcamos la contraseña del usuario remoto usado para la conexión.
Autenticación mediante clave OpenSSH
Es recomendable generar un par de claves público/privadas para evitar la petición de nuestra contraseña en cada conexión. Para ello basta con pulsar "Intro" en todas las cuestiones que nos realiza el comando:
Code: Select all
ssh-keygen
Code: Select all
wibol@escritorio:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wibol/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/wibol/.ssh/id_rsa.
Your public key has been saved in /home/wibol/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VGrOzKjGr7hX+tV0XOTF25kNW3Ch5zFwFYAHGBenFGc wibol@escritorio
The key's randomart image is:
+---[RSA 2048]----+
| .+*=E+*B|
| +o.=+=oo|
| + ...oB*|
| O . .++=|
| . S . o . |
| . .. o . |
| +o . . |
| oo. . |
| oo.oo |
+----[SHA256]-----+
wibol@escritorio:~$
Si usamos una contraseña (passphrase), ésta se nos pedirá sólo la primera vez que usemos la clave después de iniciar sesión en nuestro equipo local.
Ahora sólo nos falta copiar la clave pública y añadirla a la lista de equipos conocidos del servidor remoto para que sea capaz de reconocernos:
Code: Select all
ssh-copy-id -i ~/.ssh/id_rsa.pub USUARIO-REMOTO@IP-REMOTA
Transferencia de archivos
El protocolo SSH además cuenta con dos comandos que nos serán de mucha utilidad a la hora de copiar archivos de local a remoto, de remoto a local y entre remotos.
El primero es "scp" que copia archivos de forma puntual y, una vez hecho, cierra la conexión:
Code: Select all
scp Documentos/archivo.txt USUARIO-REMOTO@IP-REMOTA:Descargas/
scp Documentos/* USUARIO-REMOTO@IP-REMOTA:Descargas/
scp USUARIO-REMOTO@IP-REMOTA:Documentos/archivo.txt Descargas/
scp USUARIO-REMOTO@IP-REMOTA:Documentos/* Descargas/
scp USUARIO-REMOTO@IP-REMOTA:Documentos/* USUARIO-REMOTO@IP-REMOTA:Descargas/
Code: Select all
sftp USUARIO-REMOTO@IP-REMOTA
help
exit
Code: Select all
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afPpRr] remote [local] Download file
reget [-fPpRr] remote [local] Resume download file
reput [-fPpRr] [local] remote Resume upload file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afPpRr] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
rename oldpath newpath Rename remote file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
sftp>