diferentes maneras de conectarse a ssh y sftp con terminal en ubuntu
¿Qué es SSH?SSH o Secure Shell, es un protocolo de administración remota que permite a los usuarios controlar y modificar sus servidores remotos a través de Internet. El servicio se creó como un reemplazo seguro para el Telnet sin cifrar y utiliza técnicas criptográficas para garantizar que todas las comunicaciones hacia y desde el servidor remoto sucedan de manera encriptada. Proporciona un mecanismo para autenticar un usuario remoto, transferir entradas desde el cliente al host y retransmitir la salida de vuelta al cliente.
La imagen de abajo muestra una ventana típica de SSH. Cualquier usuario de Linux o macOS puede hacer SSH en su servidor remoto directamente desde la ventana del terminal. Los usuarios de Windows pueden aprovechar los clientes SSH como Putty. Puede ejecutar comandos shell de la misma manera que lo haría si estuviera operando físicamente el equipo remoto.
SFTP:
Sus siglas significan SSH File Transfer Protocol, es completamente diferente del protocolo FTP (File Transfer Protocol). SFTP fue contruído desde cero y añade la característica de FTP a SSH. Sólo usa un canal de comunicación, envía y recibe los mensajes en binario (y no en formato texto como hace FTP).
FTPS:
Es una extensión de FTP mediante SSL para el cifrado de los datos, utiliza dos canales de , envía y recibe los mensajes en formato texto. FTPS normalmente es más conocido ya que usa los mismos comandos que FTP.
Ambos protocolos utilizan un algoritmo asimétrico (RSA, DSA), un algoritmo simétrico (AES por ejemplo), y un algoritmo de intercambio de claves. Para la autenticación, FTPS utiliza certificados X.509, mientras que SFTP utiliza las claves SSH.
¿Cual es más seguro?
Técnicamente SFTP es más avanzado que FTPS, sin embargo algunos dispositivos pueden no ser compatibles con SFTP (como los móviles, consolas etc) y sin embargo con FTPS sí lo son, como hemos dicho antes, FTPS es una extensión de FTP.
Formas en que realizo las conexiones para simplificiar la escritura parametros y comandos
SSH:
especificando el puerto de conexión:
Terminal:
ssh -p 22 root@192.168.5.3
Conexión ssh sin introducir la clave:
Terminal:
sudo apt -get update
Terminal:
sudo apt-get install sshpass
Terminal:
sudo sshpass -p 'clave' /usr/bin/ssh -p 22 -o StrictHostKeyChecking=no root@192.168.5.3
sshpass -p 'clave' realiza la funcion de almacenar tu clave e instroducirla cuando se ejecuta el paquete ssh
ssh -p 22 conexion por el puerto 22
-o StrictHostKeyChecking=no no verifica que el usuario introduzca la clave
Nota: este comando es muy util cuando se tienen muchos servidores y quieres realizar una conexion sin tener que escribir la clave (lo ideal seria tener una llave privada)
SFTP:
crear la conexion sftp:
Terminal:
xdg-open "sftp://root@192.168.5.3:22/"ejecuta con el gestor de archivos por defecto la conexion sftp en el puerto 22
creando un punto de montaje con sshfs:
Terminal:
sudo apt-get install sshfs
ahora debemos crear una carpeta en el directorio /mnt/
Terminal:
sudo mkdir /mnt/servidor/
cambiamos los permisos de esa carpeta:
Terminal:
sudo chown -R $(logname):root /mnt/servidor
$(logname) obtiene la informacion del usuario actual logeado asi agregamos correctamente los cambios de propietarios de su usuario y al grupo de rootcrear el punto de montaje remoto:
Terminal:
sshfs -p 22 root@192.168.5.3:/ /mnt/servidor/
es un comando sencillo donde especificamos el puerto a conectar, el usuario y host, luego la ruta donde deseamos montar, tambien en esta parte de la linea :/ podemos especificar el directorio que deseamos montar y no la raiz como es el caso anterior y nos quedaria asi:
Terminal:
sshfs -p 22 root@192.168.5.3:/home/admin/ /mnt/servidor/
para desmontar la unidad remota:
Terminal:
sudo umount /mnt/servidor/
SSH con llave
cambiamos los permisos de la llave a solo lectura por el usuario:
Terminal:
sudo chmod 400 ~/llaves/servidor.pem
ejecutamos el comando ssh con la key:
Terminal:
sudo ssh -i ~/llaves/servidor.pem root@192.168.5.3
SFTP con llave
creamos el directorio y cambiamos de propietario el mismo:
Terminal:
sudo mkdir /mnt/servidor/
cambiamos los permisos de esa carpeta:
Terminal:
sudo chown -R $(logname):root /mnt/servidor
$(logname) obtiene la informacion del usuario actual logeado asi agregamos correctamente los cambios de propietarios de su usuario y al grupo de rootcambiamos los permisos de la llave
Terminal:
sudo chmod 400 ~/llaves/llave.pem
montamos la unidad remota:
Terminal:
sshfs root@192.168.5.3:/ /mnt/servidor/ -o ssh_command='ssh -i ~/llaves/llave.pem'
para desmontar la unidad remota:
Terminal:
sudo umount /mnt/servidor/
un pequeño script para sshfs
Terminal:
usuario=$(logname)
echo $usuario
if [ -d "/mnt/servidor/var/" ]; then
echo "desmontando"
sudo umount -f /mnt/servidor/
fi
if [ ! -d "/mnt/servidor/" ]; then
echo "creando directorio"
sudo chown "$usuario":root -R /mnt/
sudo mkdir /mnt/servidor/
sudo chown "$usuario":root -R /mnt/servidor/
fi
sudo chmod 400 ~/llaves/llave.pem
sshfs root@192.168.5.3:/ /mnt/servidor/ -o ssh_command='ssh -i ~/llaves/llave.pem'
guardan ese contenido como conexion-servidor-sshfs.sh y luego lo ejecutan para montar o desmontar la unidad remota
No hice lo que explicas pero en base a esto resolví un problema que tenia, muchas gracias!
ResponderEliminar