[TUTORIAL] Acceso a terminales remotos vía SSH

Spanish Forum

Moderators: tomeu, JCSenar

Post Reply
User avatar
Wibol
Level 4
Level 4
Posts: 366
Joined: Fri Nov 27, 2015 7:00 am
Location: España

[TUTORIAL] Acceso a terminales remotos vía SSH

Post by Wibol » Mon May 20, 2019 3:35 pm

Es conocida la potencia y versatilidad de la terminal de Linux y, aunque no es la forma más cómoda de trabajar, muchas veces es el último recurso que nos queda para solucionar los problemas de nuestro equipo. Debido a la gran variedad de entornos gráficos que tenemos a nuestra disposición, y por lo tanto la gran cantidad de diferentes formas de hacer una misma cosa, se ha impuesto el uso de comandos que funcionan correctamente con independencia del escritorio que usemos.

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 el montaje de archivos remotos en nuestro equipo con SSHFS, tanto de forma manual como bajo demanda.

SSH establece conexiones encriptadas por lo que la seguridad esta garantizada.

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 en aquellos equipos a los que queramos acceder con apt install openssh-server 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
La opción -X nos permite ver localmente las GUI de las aplicaciones remotas.

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
Mint dispone de la herramienta gráfica "seahorse" (Contraseñas y claves) que podemos encontrar en el menú para la creación, gestión y eliminación de las mismas.

seahorse.png


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/
El segundo es "sftp" que copia archivos de forma interactiva y cuenta con su propia shell:

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> 

Antes de realizar una consulta, no olvides:

Post Reply

Return to “Español (Spanish)”