Gestión avanzada de ssh
Copiar archivos
Scp
Para copiar archivos o directorios entre nuestra máquina local y el servidor, utilizaremos el comando scp.
Sintaxis:
- SUBIR
scp <nombre del archivo o directorio> usuario@ip_servidor:
¡¡ IMPORTANTE !!Si después de los : no especificamos un directorio concreto, los ficheros se subirán en el directorio /home del usuario.
scp remoto.txt nodo01@192.168.122.175:scp -r prueba/ nodo01@192.168.122.175:
- BAJAR
scp usuario@ip_servidor:/<Archivo o Directorio> <ruta en mi equipo local>
scp nodo01@192.168.122.175:prueba.txt .scp -r nodo01@192.168.122.175:remote/ .
Rsync
Rsync nos permite realizar una copia mas eficiente de nuestros directorios entre diferentes máqionas o servidores.
Alguna de las opciones que permite son las siguientes:
- Reemplazando unicamente aquellos documentos que fueron modificados.
- Comprimiendo la transferencia.
- Eliminar aquellos archivos que no estén presentes en la carpeta original.
- Copia de permisos de usuarios y grupos.
Algunas opciones del comando
- -a Modo copia de archivos.
- -r Modo recursivo de copia de directorios.
- -p Conserva los mismos permios en el destino que en el origen.
- -g Conserva el mismo grupo en el destino que en el origen.
- -o Conserva el mismo propietario en el destino que en el origen.
- -v Muestra informacion durante la transferencia.
- -z Comprime los archivos que se transfieren a través de la red.
- -h Muestra los datos en formato legible.
Ejemplo 1 - Copiar un directorio de nuestro servidor a otro.
rsync -avhz /home/respaldos/ nodo01@192.168.122.175:
Ejemplo 2 - Descargar un directorio de un servidor a nuestro equipo Linux.
rsync -avhz nodo01@192.168.122.175:/home/respaldos/ /home/backups
Tuneles con SSH
Proxy sock
Con esta opción podemos abrir un puerto sock en nuestro equipo y configurarlo en el navegador para acceder a internet a través de nuestro servidor VPS que se encuentra en otra ubicación diferente a la nuestra.
ssh -D 9090 -f -C -q -N nodo01@192.168.122.175
Local Fordwarding
Partiremos del siguiente escenario: Tenemos un servidor web con una ip privada 10.85.235.174 dentro de la oficina, el acceso desde internet esta bloqueado por el cortafuegos.
Vamos a visualizar la web de la oficina desde nuestra casa utilizando un tunel shh con una máquina de salto (VPS) accesible desde internet, ya que ambos equipos (mi portátil y el servidor de la oficina) tienen acceso al mismo VPS (máquina de salto).
# Abriremos un puerto local 1080 en nuestro portátilssh -f -L 1080:10.85.235.174:80 invitado@98.137.45.3 -N
En nuestro portátil podemos comprobar que el puerto 1080 esta abierto y el el tunel local forwarding creado
ss -lptun |grep 1080ps aux |grep ssh
Reveso
- CASO 1 - Poder acceder a la terminal del servidor de la oficina
En este ejemplo veremos como podemos acceder a la terminar de nuestro servidor 10.85.235.174 que esta en la red privada de la oficina mediante nuestra máquina de salto o VPS.
Por seguridad seria recomendable crear un usuario invitado sin privilegios de root en el servidor web.
ssh -R 2222:localhost:22 invitado@98.137.45.3
- CASO 2 - Exponer al exterior una web que tenemos dentro de una red privada.
Queremos exponer a internet nuestro servidor web situado en la red interna de la oficina, para ello utilizaremos de nuevo nuestra máquina de salto o VPS.
¡¡IMPORTANTE!! debemos activar en nuestro servidor VPS una opción en /etc/ssh/shd_config GatewayPorts yes
Desde la terminal del servidor web de la oficina
ssh -R 1080:localhost:80 invitado@98.137.45.3
Montar directorios remotos con SSHFS
- Instalamos sshfs en el cliente
apt -y install sshfs
- Creamos un directorio en el equipo cliente.
mkdir dir_remoto
- Montamos la carpeta remota en el directorio creado anteriormente.
sshfs servidor@87.143.23.90:/var/www/html dir_remoto/
- Visualizamos o editamos el contenido del directorio (para ello debemos tener permisos de escritura en el directorio del servidor).
ls dir_remoto
- Por ultimo desmontamos el directorio en nuestro equipo.
umount dir_remoto