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.