GNU/Linux >> Tutoriales Linux >  >> Linux

Una guía para principiantes de SSH para conexión remota en Linux

Una de las características más atractivas de Linux es la capacidad de usar hábilmente una computadora con nada más que comandos ingresados ​​en el teclado, y mejor aún, poder hacerlo en computadoras en cualquier parte del mundo. Gracias a OpenSSH, los usuarios de POSIX pueden abrir un shell seguro en cualquier computadora a la que tengan permiso para acceder y utilizarlo desde una ubicación remota. Es una tarea diaria para muchos usuarios de Linux, pero puede resultar confuso para alguien que aún no lo ha probado. Este artículo explica cómo configurar dos computadoras para conexiones de shell seguro (SSH) y cómo conectarse de manera segura de una a otra sin contraseña.

Terminología

Cuando se habla de más de una computadora, puede ser confuso identificar una de la otra. La comunidad de TI tiene términos bien establecidos para ayudar a aclarar las descripciones del proceso de conexión en red de computadoras.

  • Servicio: Un servicio es un software que se ejecuta en segundo plano para que pueda ser utilizado por computadoras distintas a la que está instalado. Por ejemplo, un servidor web aloja un servicio para compartir en la web . El término implica (pero no insiste) que es un software sin interfaz gráfica.
  • Anfitrión: Un host es cualquier computadora. En TI, las computadoras se llaman host porque técnicamente cualquier computadora puede albergar una aplicación que sea útil para otra computadora. Es posible que no piense en su computadora portátil como un "anfitrión", pero es probable que esté ejecutando algún servicio que sea útil para usted, su dispositivo móvil o alguna otra computadora.
  • Local: La computadora local es la que usted o algún software está usando. Cada computadora se refiere a sí misma como localhost , por ejemplo.
  • Remoto: Una computadora remota es aquella que no está físicamente frente a ella ni la está usando físicamente. Es una computadora en un remoto ubicación.

Ahora que la terminología está resuelta, puede comenzar.

Activar SSH en cada host

Para que dos computadoras se conecten a través de SSH, cada host debe tener SSH instalado. SSH tiene dos componentes:el comando que usa en su máquina local para iniciar una conexión y un servidor para aceptar solicitudes de conexión entrantes. Algunas computadoras vienen con una o ambas partes de SSH ya instaladas. Los comandos varían, según su sistema, para verificar si tiene instalados tanto el comando como el servidor, por lo que el método más fácil es buscar los archivos de configuración relevantes:

$ file /etc/ssh/ssh_config
/etc/ssh/ssh_config: ASCII text

Si esto devuelve un No such file or directory error, entonces no tienes instalado el comando SSH.

Realice una verificación similar para el servicio SSH (tenga en cuenta la d en el nombre del archivo):

$ file /etc/ssh/sshd_config
/etc/ssh/sshd_config: ASCII text

Instale uno u otro, según sea necesario:

$ sudo dnf install openssh-clients openssh-server

En la computadora remota, habilite el servicio SSH con systemd:

$ sudo systemctl enable --now sshd

Como alternativa, puede habilitar el servicio SSH desde Configuración del sistema en GNOME o Preferencias del Sistema en macOS. En el escritorio de GNOME, se encuentra en Compartir tablero:

Iniciar un shell seguro

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Ahora que ha instalado y habilitado SSH en la computadora remota, puede intentar iniciar sesión con una contraseña como prueba. Para acceder a la computadora remota, debe tener una cuenta de usuario y una contraseña.

Su usuario remoto no tiene que ser el mismo que su usuario local. Puede iniciar sesión como cualquier usuario en la máquina remota siempre que tenga la contraseña de ese usuario. Por ejemplo, soy sethkenlon en la computadora de mi trabajo, pero soy seth en mi computadora personal. Si estoy en mi computadora personal (convirtiéndola en mi máquina local actual) y quiero usar SSH en mi computadora de trabajo, puedo hacerlo identificándome como sethkenlon y usando mi contraseña de trabajo.

Para conectarse mediante SSH a la computadora remota, debe conocer su dirección de protocolo de Internet (IP) o su nombre de host resoluble. Para encontrar la dirección IP de la máquina remota, use el ip comando (en la computadora remota):

$ ip addr show | grep "inet "
inet 127.0.0.1/8 scope host lo
inet 10.1.1.5/27 brd 10.1.1.31 [...]

Si la computadora remota no tiene la ip comando, intente ifconfig en su lugar (o incluso ipconfig en Windows).

La dirección 127.0.0.1 es especial y es, de hecho, la dirección de localhost . Es una dirección de "bucle invertido", que su sistema usa para llegar a sí mismo. Eso no es útil cuando se inicia sesión en una máquina remota, por lo que en este ejemplo, la dirección IP correcta de la computadora remota es 10.1.1.5. En la vida real, lo sabría porque mi red local usa la subred 10.1.1.0. Si la computadora remota está en una red diferente, entonces la dirección IP podría ser casi cualquier cosa (sin embargo, nunca 127.0.0.1), y probablemente sea necesario un enrutamiento especial para llegar a ella a través de varios firewalls. Suponga que su computadora remota está en la misma red, pero si está interesado en llegar a computadoras más remotas que su propia red, lea mi artículo sobre cómo abrir puertos en su firewall.

Si puede hacer ping a la máquina remota por su dirección IP o su nombre de host, y tiene una cuenta de inicio de sesión en él, entonces puede acceder a él mediante SSH:

$ ping -c1 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
$ ping -c1 akiton.local
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.

Eso es un éxito. Ahora usa SSH para iniciar sesión:

$ whoami
seth
$ ssh [email protected]
bash$ whoami
sethkenlon

El inicio de sesión de prueba funciona, así que ahora está listo para activar el inicio de sesión sin contraseña.

Crea una clave SSH

Para iniciar sesión de forma segura en otra computadora sin una contraseña, debe tener una clave SSH. Es posible que ya tenga una clave SSH, pero no está de más crear una nueva. Una clave SSH comienza su vida en su máquina local. Consta de dos componentes:una clave privada, que nunca comparte con nadie ni con nada, y una pública, que copia en cualquier máquina remota a la que desee tener acceso sin contraseña.

Algunas personas crean una clave SSH y la usan para todo, desde inicios de sesión remotos hasta la autenticación de GitLab. Sin embargo, uso diferentes teclas para diferentes grupos de tareas. Por ejemplo, uso una clave en casa para autenticarme en las máquinas locales, una clave diferente para autenticarme en los servidores web que mantengo, una clave separada para los hosts de Git, otra para los repositorios de Git que alojo, y así sucesivamente. En este ejemplo, crearé una clave única para usar en computadoras dentro de mi red de área local.

Para crear una nueva clave SSH, use ssh-keygen comando:

$ ssh-keygen -t ed25519 -f ~/.ssh/lan

El -t opción significa tipo y asegura que el cifrado utilizado para la clave sea más alto que el predeterminado. El -f opción significa archivo y establece el nombre de archivo y la ubicación de la clave. Se le pedirá que cree una contraseña para su clave SSH. Debe crear una contraseña para la clave. Esto significa que tendrá que ingresar una contraseña cuando use la clave, pero esa contraseña permanece local y no se transmite a través de la red. Después de ejecutar este comando, te queda una clave privada SSH llamada lan y una clave pública SSH llamada lan.pub .

Para obtener la clave pública en su máquina remota, use ssh-copy-id . Para que esto funcione, debe verificar que tiene acceso SSH a la máquina remota. Si no puede iniciar sesión en el host remoto con una contraseña, tampoco puede configurar un inicio de sesión sin contraseña:

$ ssh-copy-id -i ~/.ssh/lan.pub [email protected]

Durante este proceso, se le solicitará su contraseña de inicio de sesión en el host remoto.

Si tiene éxito, intente iniciar sesión nuevamente, pero esta vez usando -i opción para apuntar el comando SSH a la clave apropiada (lan , en este ejemplo):

$ ssh -i ~/.ssh/lan [email protected]
bash$ whoami
sethkenlon

Repita este proceso para todas las computadoras en su red, y podrá navegar a través de cada host sin volver a pensar en las contraseñas. De hecho, una vez que haya configurado la autenticación sin contraseña, puede editar el /etc/ssh/sshd_config archivo para no permitir la autenticación de contraseña. Esto evita que alguien use SSH para autenticarse en una computadora a menos que tenga su clave privada. Para hacer esto, abra /etc/ssh/sshd_config en un editor de texto con sudo permisos y busque la cadena PasswordAuthentication . Cambie la línea predeterminada a esto:

PasswordAuthentication no

Guárdelo y reinicie el servidor SSH (o simplemente reinicie):

$ sudo systemctl restart sshd && echo "OK"
OK
$

Uso de SSH todos los días

OpenSSH cambia su visión de la informática. Ya no estás atado solo a la computadora frente a ti. Con SSH, tiene acceso a cualquier computadora en su casa, o servidores en los que tenga cuentas, e incluso dispositivos móviles y de Internet de las cosas. Desbloquear el poder de SSH también desbloquea el poder del terminal Linux. Si no usa SSH todos los días, comience ahora. Siéntase cómodo con él, recoja algunas llaves, viva de forma más segura y amplíe su mundo.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Qué es CentOS:una guía para principiantes

  3. Las 5 mejores aplicaciones de escritorio remoto para Linux

  4. ¿Qué es Linux? Una guía para usuarios no técnicos

  5. Administrador de marcadores SSH para Linux

Cómo SSH en un directorio particular en Linux

Ejecutar comandos en sistemas Linux remotos a través de SSH

Cómo configurar la autenticación multifactor para SSH en Linux

Guía de inicio rápido de Ansible para administradores de sistemas Linux

Cómo realizar una copia de seguridad remota de Linux mediante SSH

Guía para configurar el servidor SFTP en Linux