Cómo aprovechar al máximo OpenSsh

Cómo aprovechar al máximo OpenSsh

OpenSSH es una herramienta de conectividad de red e inicio de sesión remota que cifra de forma segura todo el tráfico, desarrollado originalmente por los desarrolladores de OpenBSD para su uso en su sistema operativo. Teniendo en cuenta el enfoque principal de los desarrolladores de OpenBSD en la seguridad, no es sorprendente que OpenSSH se convierta rápidamente en la implementación de inicio de sesión remota estándar para todos los sistemas operativos Linux y UNIX. OpenSSH utiliza un modelo de servidor cliente con el ssh comando que proporciona funcionalidad del cliente y SSHD Proporcionar funcionalidad del servidor.

En este tutorial aprenderás:

  • Cómo instalar OpenSSH
  • Cómo iniciar sesión en un shell remoto
  • Cómo copiar archivos entre máquinas con SCP
  • Cómo habilitar la autenticación basada en la tecla y deshabilitar el inicio de sesión basado en la contraseña
  • Cómo guardar las configuraciones de máquinas a acceso frecuentes para conexiones más fáciles
  • Cómo montar un sistema de archivos remoto sobre SSH Protocal
  • Cómo usar el reenvío/túneles de puerto
  • Para acceder a una máquina detrás de Nat/Firewall
  • Para crear un proxy web
Cómo aprovechar al máximo OpenSsh - Consejos y trucos

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Los sistemas basados ​​en hat, basados ​​en Red Hat y basados ​​en Arch se cubren explícitamente, pero el suite OpenSSH es independiente de la distribución y todas las instrucciones deberían funcionar para cualquier distribución que use Systemd como su sistema init.
Software Abierro
Otro Privilegios raíz para modificar archivos de configuración
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalación OpenSSH

La mayoría de las distribuciones proporcionarán la opción de instalar OpenSSH durante su instalación inicial, pero aún se puede instalar manualmente si no se eligió esta opción. En los sistemas basados ​​en Debian y Red Hat, deberá instalar el servidor y el cliente por separado, mientras que en los sistemas basados ​​en Arch, el cliente y el servidor se instalan como un solo paquete (consulte el ejemplo a continuación). Tenga en cuenta que si está utilizando un firewall, asegúrese de abrir el puerto 22 para el tráfico entrante en cualquier máquina que desee usar como servidor.

En sistemas basados ​​en Debian

$ sudo apt-get install openssh-server $ sudo apt-get install openssh-client 


En sistemas basados ​​en Red Hat (nota: en Fedora versión 22 o posterior reemplazar yum con DNF)

$ sudo yum instalación OpenSsh-server $ sudo yum instalación OpenSSH-Client 

En el sistema basado en arco

$ sudo Pacman -s openssh 

Después de instalar el servidor SSH, algunas distribuciones habilitarán el servicio SSHD de forma predeterminada y otras no. En las versiones recientes de las distribuciones anteriores, ingrese lo siguiente para garantizar que el demonio SSH esté habilitado y pueda ser conectado por los clientes.

$ sudo systemctl inicio sshd $ sudo systemctl habilita sshd 

Esto comenzará el servicio ahora y en cada arranque posterior.

Inicie sesión en un shell remoto

Iniciar sesión en un shell remoto es el uso más básico y común de OpenSsh. El siguiente comando le permitirá iniciar sesión de una máquina en red a otra, suponiendo que ambos tengan SSH abierto instalado. Nota: Reemplace el "nombre de usuario" con el nombre de usuario del usuario que desea iniciar sesión como. Si se está conectando a otra computadora en la misma red que reemplace el "host" con la dirección IP o el nombre de host de esa máquina. Si está iniciando sesión en una máquina a través de Internet, reemplace el "host" con la dirección IP o el nombre de dominio de esa máquina.

$ SSH UserName@host 

De manera predeterminada, SSHD requiere que la contraseña del usuario se autentique, por lo tanto, ingrese la contraseña del usuario y ahora se registra en esa máquina como ese usuario. Si el usuario es el usuario root o tiene privilegios de sudo, ahora puede administrar completamente la máquina de forma remota. Tenga en cuenta que si se está conectando a un servidor que está utilizando un puerto que no sea el 22 predeterminado (por ejemplo 10001), deberá especificar el número de puerto insertando "-p 10001" (el ""-pag"Debe ser minúsculas, más sobre esto más adelante) entre SSH y el resto del comando.

Copiar archivos entre máquinas

El comando SCP se puede usar para copiar archivos hacia o desde una máquina y otra. Para hacerlo, primero debe proporcionar la ruta del archivo que desea copiar y luego la ruta donde desea que se copie el archivo.

Por ejemplo, para copiar el archivo lista de quehaceres.TXT del cliente ~/Documentos carpeta a la máquina remota ~/Descargas carpeta ingrese lo siguiente.

$ scp ~/documentos/Todolist.TXT UserName@host: ~/descargas/ 

Del mismo modo, puede copiar un archivo del servidor al cliente. Simplemente proporcione la ruta del archivo en el servidor, seguido de la ruta deseada en la máquina del cliente. Por ejemplo, podemos copiar lo mismo lista de quehaceres.TXT que acabamos de subir, en el /TMP directorio de la máquina local emitiendo el siguiente comando.

$ scp username@host: ~/downloads/Todolist.txt /tmp / 

Tenga en cuenta que si está copiando a/desde un servidor que está utilizando un puerto que no sea el 22 predeterminado (por ejemplo 10001), deberá especificar el número de puerto insertando " -PAG 10001 "entre SCP y el resto del comando. Además, tenga en cuenta que este es un capital PAG en contraste con el minúscula pag utilizado por el comando ssh. El proceso para copiar directorios es el mismo, excepto que debe especificar el "-riñonal"Bandera para copiar recursivamente un directorio junto con todos sus subdirectorios y archivos en el mismo. El siguiente comando copiará todo el directorio de documentos del usuario local a la carpeta de descargas del usuario remoto.

$ scp -r ~/documentos nombre de usuario@host: ~/descargas/ 

Como alternativa al comando SCP, puede usar el comando SFTP para transferir archivos entre máquinas. Se comporta como el comando FTP clásico, pero a diferencia de FTP, está completamente encriptado.

Configuración de la autenticación basada en la llave

Si está utilizando OpenSSH en su red de Home Secure, puede estar bien con la autenticación de contraseña. Sin embargo, si lo está utilizando a través de Internet, se recomienda habilitar la autenticación basada en clave y deshabilitar la autenticación de contraseña en su servidor de cara de Internet para una seguridad adicional. Esto también puede ser útil si simplemente desea evitar tener que escribir la contraseña para iniciar sesión o si usa la máquina del servidor en Public Wifi.

La autenticación basada en la clave utiliza una constación de pares de teclas criptográfica de una clave privada que se almacena solo en la máquina del cliente local y una clave pública que se almacena en el servidor remoto.

Primero, genere el par de claves privadas/públicas en la máquina del cliente local.

$ ssh -keygen -t rsa 

Luego cargue solo la clave pública a la máquina remota

$ ssh-copy-id -i ~/.ssh/id_rsa.Nombre de usuario de pub@host 

Ahora inicie sesión en el servidor remoto y si no se le solicita la contraseña del usuario, el inicio de sesión basado en clave está funcionando y puede deshabilitar el inicio de sesión basado en la contraseña.
Usando su editor de texto favorito abierto /etc/ssh/sshd_config como raíz o con sudo

$ sudo vim/etc/ssh/sshd_config 


y hacer los siguientes cambios cambiando a No Para estos campos y no se considera que sea necesario (elimine # si la línea comienza con ella).

ChallengerAponseAuthentication No PasswordAuthentication no usePam no 

A continuación, recargue el servicio SSHD.

$ sudo systemctl recarga ssh 

Guardar configuraciones de máquinas a acceso frecuentes para conexiones más fáciles

Puede ser útil guardar las configuraciones de las máquinas con frecuencia para acceder para que pueda conectarse a ellas más fácilmente; Especialmente si tienen SSHD escuchando en un puerto no predeterminado (no 22). Para hacerlo, agregas entradas a tu ~/.ssh/config archivo.
Una entrada para una máquina a la que se conectaría con el siguiente comando

$ ssh -p 1666 bob@remotemachine 

Se ve como esto.

Host RemotEmachine User Bob HostName Remotemachine Port 1666 

Luego puede acceder a esa máquina utilizando el siguiente comando en el futuro.

$ ssh remotemachine 

Montaje de un sistema de archivos de red con SSHFS

Aunque no es parte de la suite OpenSsh, sshfs se puede instalar utilizando el Administrador de paquetes y luego se utiliza para montar sistemas de archivos remotos a través de la red. Supongamos que desea acceder al directorio de inicio de User1@Machine1 en su sistema de archivos local.

Cree el directorio donde desea montar el sistema de archivos remoto.

$ mkdir sshmount 

Monte el sistema de archivos que especifica la ruta remota y la ruta local donde desea montarla.

$ sshfs user1@máquina1:/home/user1 sshmount 

Para desmontar el sistema de archivo de archivos, cualquiera de los siguientes comandos

$ fusermount -u sshmount 

o

$ sudo Umount sshmount 


Reenvío/túnel

El reenvío de puertos, también conocido como túnel, se puede utilizar para proporcionar cifrado para aplicaciones y protocolos cuyo tráfico de red se enviaría de otro modo Clear. Los siguientes dos ejemplo muestran otros dos usos del reenvío de puertos.

Acceder a una carcasa remota en una máquina que está detrás de Nat o Firewall

¿Qué pasa si quieres ssh por Internet en una máquina que está detrás de Nat o un firewall?? En este escenario hay 3 máquinas.

  1. La máquina detrás de Nat desea iniciar sesión de forma remota
  2. Un servidor de Internet que tiene acceso SSH
  3. Una máquina en otra red que desea usar para iniciar sesión en la máquina 1 a través de Internet

Para el comando ssh el -L Cambiar reenvía las conexiones al puerto local especificado al puerto host especificado. Del mismo modo, el -Riñonal Cambiar reenvía las conexiones al puerto remoto especificado al puerto local especificado.

En la máquina 1 ingrese el siguiente comando.

user1@1 $ ssh -r 10125: localhost: 22 user2@2 

En la máquina 3 ingrese los siguientes comandos. Nota: El segundo comando debe abrirse en una nueva ventana de terminal o TTY.

user3@3 $ ssh -l 10001: localhost: 10125 user2@2 user3@3 $ ssh user1@localhost -p 10001 

El primer comando parecerá que se registra en la máquina 2 normalmente, pero también unirá el puerto 22 (servicio SSHD) desde la máquina 1 al puerto 10125 en la máquina 2 para que las conexiones al puerto 10125 en la máquina 2 se reanuden al puerto 22 en la máquina 1. El segundo comando también parecerá que se registra en la máquina 2 normalmente, pero une el puerto 10001 de la máquina 3 al puerto 10125 en la máquina 2 para que las conexiones al puerto 10001 en la máquina 3 se reanuden al puerto 10125 en la máquina 2, que luego se reenvía al puerto 22 en la máquina 1. Luego, finalmente, la máquina 3 pudo iniciar sesión en la máquina 1, conectándose al puerto 10001 en sí mismo que reenvió a través del túnel que creamos.

Usar OpenSSH como proxy web

Utilizando el -D Flag, puede usar su servidor SSH remoto como proxy de calcetines. Esto puede ser particularmente útil para la navegación web, por ejemplo, si está en WiFi público y desea una privacidad adicional, o si está en un trabajo/escuela/otra red que puede husmear el tráfico o censurar contenido.

Simplemente emita el siguiente comando y podrá usar puerto 8888 Su máquina local como proxy de calcetines, de modo que las conexiones al puerto 8888 se reenviarán de forma segura al servidor remoto y se encriptarán completamente de los ojos indiscretos en la red local en la red local.

SSH -D 8888 Nombre de usuario@host 
Configuración del proxy de calcetines en Firefox

Tutoriales de Linux relacionados:

  • Cómo evitar la comprobación de conectividad de NetworkManager
  • Linux: Configuración SSH
  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cómo configurar un servidor OpenVPN en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo generar y administrar las teclas SSH en Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Ubuntu 20.04 servidor SSH
  • Mastering Bash Script Loops