Administre de manera eficiente las conexiones SSH remotas con estos comandos de Linux

Si ejecuta uno o más servidores remotos, normalmente dedica tiempo a iniciar sesión constantemente durante el día.

Pero no tiene por qué ser así. Es hora de que aprenda a iniciar sesión de manera eficiente a través de SSH con solo un alias, transferir archivos o directorios individuales, ejecutar comandos SSH remotos y montar servidores remotos en directorios locales sin esfuerzo.

Archivo de configuración SSH

Un gran ahorro de tiempo es el archivo de configuración SSH ubicado en ~ / .ssh / config . Comience por crear un directorio para almacenar todas las claves SSH que usa para iniciar sesión en los servidores con el comando:

 mkdir -m 0600 $HOME/.ssh_keys

Ahora copie todos sus archivos de claves SSH en este directorio (por ejemplo, clienta.pem, clientb.pem, etc.). A continuación, abra el archivo ~ / .ssh / config en un editor de texto ejecutando el comando:

 nano ~/.ssh/config

A continuación se muestra una entrada de ejemplo que establecerá una conexión SSH con un servidor remoto:

 host clienta
 hostname 124.58.2276.80
 user ubuntu
 IdentityFile ~/.ssh_keys/clienta.pem

Agregue secciones de líneas como las anteriores al archivo ~ / .ssh / config , una para cada servidor que desee. Luego guarde y cierre el archivo presionando Ctrl + X y siga las indicaciones. Una vez guardado, ahora puede iniciar sesión en cualquier servidor a través de SSH desde cualquier directorio dentro de la terminal con el simple comando:

 ssh clienta

Esto lo iniciará instantáneamente en el servidor con la información bajo el host del cliente que especificó dentro del archivo ~ / .ssh / config .

Transferir archivos con Scp / Rcp

Sin crear una sesión de inicio de sesión persistente, puede cargar fácilmente archivos o directorios individuales a un servidor remoto con el comando scp , como:

 scp report.pdf clienta:~/

El comando anterior cargará el archivo report.pdf desde su computadora local al directorio de inicio del servidor cliente que definió en la sección anterior. Puede subir a un directorio que no sea el directorio de inicio, como:

 scp about.html clienta:/home/clienta/public_html

Lo anterior cargar el archivo about.html al / directorio / home cliente / public_html en el servidor remoto clienta. También es posible cargar directorios completos usando la opción -r como:

 scp -r Documents clienta:~/docs

Esto cargará todo el directorio ~ / Documents desde su computadora local al directorio ~ / docs del servidor remoto.

Descargando archivos

De manera similar, puede descargar archivos o directorios a su computadora local sin crear una sesión de inicio de sesión persistente usando el comando rcp como:

 rcp clienta:~/public_html/about.html myproject/about.html

Lo anterior descargará el archivo public_html / about.html desde el servidor cliente remoto, y lo colocará en el archivo projects / about.html en su computadora local.

Ejecutar comandos SSH remotos

Otro consejo rápido es que puede ejecutar comandos únicos de Linux en un servidor remoto sin una sesión de inicio de sesión persistente, como:

 ssh clienta ls

Lo anterior ejecutará el comando ls en el servidor clienta> remoto, y listará todos los archivos / directorios sin mantenerlo conectado al servidor. Por ejemplo, si desea reiniciar un servidor, puede usar:

 ssh clienta /sbin/shutdown -rf now

Directorio local / bin

Ampliemos esto permitiendo un fácil montaje en servidores remotos creando un directorio / bin / que sea local para nuestra cuenta de usuario. Abra el terminal en su computadora y cree un directorio / bin / ejecutando el comando:

 mkdir -m 0755 ~/bin

A continuación, abra el archivo ~ / .profile en un editor de texto con el comando:

 nano $HOME/.profile

Desplácese hacia abajo hasta la parte inferior del archivo y agregue las siguientes líneas copiándolas en su portapapeles, luego dentro de la terminal presionando Ctrl + Shift + V :

 if [ -d "$HOME/bin" ] ; then
 PATH="$HOME/bin:$PATH"
 fi

Guarde y cierre el archivo presionando Ctrl + X y siga las indicaciones. Esto guardará el archivo .profile , que verificará el directorio local / bin / recién creado para cualquier comando que intente ejecutar.

Agregar comandos de montaje remoto

Primero, verifique y vea si sshfs está instalado o no en su computadora con el comando:

 sshfs --version

Si esto imprime la versión actual de sshfs , entonces está todo listo. De lo contrario, si recibe un error de "comando no encontrado", puede instalar sshfs con el siguiente comando:

 sudo apt-get -y install sshfs

Ahora cree un directorio / mnt / que contendrá todos los directorios montados en nuestros servidores remotos. Dentro de la terminal, ejecute comandos como:

 mkdir -m 0755 ~/mnt
 mkdir -m 0755 ~/mnt/clienta
 mkdir -m 0755 ~/mnt/clientb

Continúe creando un subdirectorio para cada servidor remoto en el que potencialmente pueda montar. A continuación, creemos los comandos de shell que ejecutaremos y, por ejemplo, para el servidor cliente, abra un archivo ejecutando el siguiente comando en la terminal:

 nano ~/bin/mount_clienta

Modifique la siguiente línea según sea necesario con la información adecuada del servidor, luego cópiela y péguela en el editor de texto en blanco dentro de la terminal presionando Ctrl + Shift + V :

 #!/bin/bash
 sshfs -o IdentityFile=~/.ssh_keys/clienta.pem [email protected]:/var/www ~/mnt/clienta

Guarde y cierre el archivo presionando Ctrl + X , y siga las instrucciones para cerrar el archivo. Finalmente, cambie los permisos del archivo para que sea ejecutable ejecutando el comando:

 chmod 0755 ~/bin/mount_clienta

Ahora, cada vez que necesite montar en el servidor remoto del cliente para transferir archivos desde / hacia él, desde cualquier directorio dentro de la terminal, simplemente puede ejecutar el comando:

 mount_clienta

El directorio de su computadora local en ~ / mnt / clienta ahora se montará en el directorio / var / www del servidor remoto. Puede comenzar a copiar archivos hacia y desde el directorio como lo haría con cualquier directorio local, y las operaciones necesarias se realizarán en el servidor remoto.

Gestión de conexiones más eficiente

Es de esperar que los consejos anteriores hayan ayudado a optimizar y hacer más eficiente la administración de sus conexiones a servidores remotos. En este artículo, ha aprendido todo sobre el archivo ~ / .ssh / config que le permite iniciar sesión a través de SSH con solo un alias, transferir archivos / directorios individuales, ejecutar comandos SSH remotos y cómo montar fácilmente un directorio local en servidores remotos.