One place for hosting & domains

      How To Create SSH Keys with OpenSSH on macOS, Linux, or Windows Subsystem for Linux


      Introduction

      When setting up a remote Linux server, you’ll need to decide upon a method for securely connecting to it. While passwords are one way of verifying a user’s identity, passwords have multiple vulnerabilities and can be cracked by a brute force attack. Secure Shell keys — better known as SSH keys — are often used instead of passwords, as they offer a more secure method of connecting to remote Linux servers. As part of the Secure Shell cryptographic network protocol, SSH keys also enable users to securely perform network services over an unsecured network, such as delivering text-based commands to a remote server or configuring its services.

      This tutorial will guide you through the steps of creating SSH keys with OpenSSH, a suite of open source SSH tools, on macOS and Linux, as well as on Windows through the use of the Windows Subsystem for Linux. It is written for an audience that is just getting started with the command line and will provide guidance on accessing the terminal on a personal computer. After completing this tutorial, you will have SSH keys that can be used to securely set up a server in the tutorial How To Set Up an Ubuntu 20.04 Server on a DigitalOcean Droplet that is part of the Introduction to the Cloud Curriculum (coming soon).

      If you are already familiar with the command line and looking for instructions on using SSH to connect to a remote server, please see our collection of tutorials on Setting Up SSH Keys for a range of Linux operating systems.

      Prerequisites

      To complete this tutorial, you will need:

      • A local machine running one of the following operating systems: macOS, Linux, or Windows with Windows Subsystem for Linux installed. If you are using Windows, you can find instructions for downloading or updating the Windows Subsystem for Linux on Microsoft’s documentation page. Note that while OpenSSH should work for a range of Linux distributions, this tutorial has been tested using Ubuntu 20.04.

      Note: If you are looking for instructions on how to create SSH keys on a Windows machine that does not have the Windows Subsystem for Linux, please visit our product documentation How to Create SSH Keys with PuTTY on Windows.

      • Some familiarity with working with a terminal and the command line. If you need an introduction to working with terminals and the command line, you can visit our guide A Linux Command Line Primer (coming soon).

      Step 1 — Understanding SSH Keys

      SSH keys are two long strings of characters that can be used to authenticate the identity of a user requesting access to a remote server. These keys are generated by the user on their local computer using a SSH utility. One key is private and stored on the user’s local machine. The other key is public and shared with the remote server or any other entity the user wishes to securely communicate with.

      When a user requests to connect to a server with SSH, the server sends a message encrypted with the public key that can only be decrypted by the associated private key. The user’s local machine then uses its private key to attempt to decrypt the message. If the message is successfully decrypted, the server grants the user access without the need of a password. Once authenticated, users can launch a remote shell session in their local terminal to deliver text-based commands to the remote server.

      In the next step, you will open a terminal on your computer so that you can access the SSH utility used to generate a pair of SSH keys.

      Step 2 — Opening a Terminal on Your Computer

      A terminal allows you to interact with your computer through text-based commands rather than a graphical user interface. The way you access the terminal on your computer will depend on what type of operating system you are using.

      On machines running macOS, the Terminal application is typically located in the Utilities folder inside the Applications folder. You can also find it by searching for “terminal” in the Search Spotlight.

      If you are working on a Linux computer, your distribution’s default terminal application is also typically located in the Utilities folder inside the Applications folder. You can also find it by searching for “terminal” with the Desktop search functionality.

      If you are working on a Windows machine running Windows Subsystem for Linux, a Linux terminal should open immediately after installation. You can also find it by searching for “Ubuntu” with the Desktop search functionality.

      Once you have located your system’s terminal application, open up a new terminal window. Your terminal should display your user name, a dollar sign ($), and a cursor. This is where you will begin to type commands to tell the terminal what to do.

      In the next step, you will enter a text-based command to generate a pair of SSH keys.

      Step 3 — Generating Keys With OpenSSH

      Your macOS or Linux operating system should have the standard OpenSSH suite of tools already installed. This suite of tools includes the utility ssh-keygen, which you will use to generate a pair of SSH keys.

      Type the following command into your terminal:

      You will then be prompted to select a location for the keys. By default, the keys are stored in the ~/.ssh directory with the filenames id_rsa for the private key and id_rsa.pub for the public key. Using the default locations allows your SSH client to automatically find your SSH keys when authenticating, so we recommend accepting these default options. To do so, press ENTER:

      Output

      Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa):

      Warning: If you have previously generated a key pair, you will be prompted to confirm that you actually want to overwrite the existing key:

      Output

      /home/sammy/.ssh/id_rsa already exists. Overwrite (y/n)?

      If you choose to overwrite the key on disk, you will not be able to authenticate using the previous key anymore. Selecting “yes” is an irreversible destructive process.

      If you’re certain that you want to overwrite the existing key on disk, you can do so by pressing Y and then ENTER.

      If you choose the default location, your public key will be located in /home/sammy/.ssh/id_rsa.pub and your private key will be located in /home/sammy/.ssh/id_rsa. Note that in your filepath, sammy will be replaced with your username.

      After selecting a location for the key, you’ll be prompted to enter an optional passphrase which encrypts the private key file on disk.

      If you enter a passphrase, you will have to provide it every time you use this key (unless you are running SSH agent software that stores the decrypted key). We recommend using a passphrase, but you can just press ENTER to bypass this prompt:

      Output

      Created directory '/home/sammy/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again:

      Following that final prompt, your system will generate the SSH key pair:

      Output

      Your identification has been saved in /home/sammy/.ssh/id_rsa. Your public key has been saved in /home/sammy/.ssh/id_rsa.pub. The key fingerprint is: a9:49:EX:AM:PL:E3:3e:a9:de:4e:77:11:58:b6:90:26 sammy@203.0.113.0 The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

      You now have a public and private key that you can use to authenticate.

      Conclusion

      Congratulations, you have now generated a pair of SSH keys. These keys can be used to securely connect with a remote server and are necessary for the tutorial How To Set Up an Ubuntu 20.04 Server on a DigitalOcean Droplet that follows this tutorial in the Introduction to the Cloud Curriculum (coming soon).

      For a deeper dive on working using SSH, please visit our guide SSH Essentials: Working With SSH Servers, Clients, and Keys.



      Source link

      Verwenden von SSH zum Herstellen einer Verbindung mit einem Remoteserver


      Einführung

      Ein wesentliches Tool, das ein Systemadministrator beherrschen sollte, ist SSH.

      SSH oder Secure Shell ist ein Protokoll, das zur sicheren Anmeldung bei Remotesystemen verwendet wird. Es ist die häufigste Methode für den Zugriff auf Remote-Linux-Server.

      In diesem Leitfaden diskutieren wir, wie SSH zur Herstellung einer Verbindung mit einem Remotesystem genutzt werden kann.

      Grundlegende Syntax

      Um per SSH eine Verbindung mit einem Remotesystem herzustellen, verwenden wir den Befehl ssh. Die grundlegendste Form des Befehls ist:

      Der remote_host in diesem Beispiel ist die IP-Adresse oder der Domänenname, mit der oder dem Sie eine Verbindung herstellen möchten.

      Dieser Befehl geht davon aus, dass Ihr Benutzername im Remotesystem der gleiche wie Ihr Benutzername in Ihrem lokalen System ist.

      Wenn Ihr Benutzername im Remotesystem anders ist, können Sie ihn durch Verwendung dieser Syntax angeben:

      • ssh remote_username@remote_host

      Sobald Sie mit dem Server verbunden sind, werden Sie möglicherweise aufgefordert, Ihre Identität durch Angabe eines Passworts zu verifizieren. Später werden wir auf die Erstellung von Schlüsseln zur Verwendung anstelle von Passwörtern eingehen.

      Um die SSH-Sitzung zu beenden und zu Ihrer lokalen Shell-Sitzung zurückzukehren, geben Sie Folgendes ein:

      Wie funktioniert SSH?

      SSH arbeitet, indem ein Clientprogramm mit einem SSH-Server namens sshd verbunden wird.

      Im vorherigen Abschnitt war ssh das Clientprogramm. Der SSH-Server wird bereits auf dem von uns angegebenen remote_host ausgeführt.

      Auf Ihrem Server sollte der sshd-Server bereits ausgeführt werden. Wenn dies nicht der Fall ist, müssen Sie möglicherweise über eine webbasierte Konsole oder eine lokale serielle Konsole auf Ihren Server zugreifen.

      Der Prozess, der zum Starten eines SHH-Servers erforderlich ist, hängt von der Linux-Distribution ab, die Sie verwenden.

      Unter Ubuntu können Sie den SSH-Server durch folgende Eingabe starten:

      Damit sollte der sshd-Server starten und Sie können sich remote anmelden.

      Konfigurieren von SSH

      Wenn Sie die Konfiguration von SSH ändern, ändern Sie die Einstellungen des sshd-Servers.

      In Ubuntu befindet sich die Hauptkonfigurationsdatei von sshd unter /etc/ssh/sshd_config.

      Sichern Sie vor der Bearbeitung die aktuelle Version dieser Datei:

      • sudo cp /etc/ssh/sshd_config{,.bak}

      Öffnen Sie sie mit einem Texteditor:

      • sudo nano /etc/ssh/sshd_config

      Die meisten Optionen in dieser Datei werden Sie nicht verändern wollen. Es gibt jedoch einige Optionen, auf die Sie möglicherweise einen Blick werfen möchten:

      /etc/ssh/sshd_config

      Port 22
      

      Die Portdeklaration gibt an, an welchem Port der sshd-Server nach Verbindungen lauschen wird. Standardmäßig ist dies Port 22. Sie sollten diese Einstellung wahrscheinlich unverändert lassen, es sei denn, Sie haben spezifische Gründe für ein anderes Vorgehen. Wenn Sie Ihren Port tatsächlich ändern, zeigen wir Ihnen später, wie Sie eine Verbindung mit dem neuen Port herstellen können.

      /etc/ssh/sshd_config

      HostKey /etc/ssh/ssh_host_rsa_key
      HostKey /etc/ssh/ssh_host_dsa_key
      HostKey /etc/ssh/ssh_host_ecdsa_key
      

      Die Hostschlüsseldeklarationen geben an, wo nach globalen Hostschlüsseln gesucht werden soll. Wir werden später erörtern, was ein Hostschlüssel ist.

      /etc/ssh/sshd_config

      SyslogFacility AUTH
      LogLevel INFO
      

      Diese beiden Elemente zeigen die Protokollierungsstufe an, die ausgeführt werden sollte.

      Wenn Sie Probleme mit SSH haben, ist die Erhöhung der Protokollierungsstufe ggf. eine gute Möglichkeit, um zu ermitteln, was das Problem ist.

      /etc/ssh/sshd_config

      LoginGraceTime 120
      PermitRootLogin yes
      StrictModes yes
      

      Diese Parameter geben einige der Anmeldedaten an.

      LoginGraceTime gibt an, wie viele Sekunden die Verbindung ohne eine erfolgreiche Anmeldung aufrechterhalten wird.

      Es ist ggf. eine gute Idee, diese Zeit nur etwas höher als die Zeit anzusetzen, die Sie normalerweise zum Anmelden benötigen.

      PermitRootLogin gibt an, ob sich der root-Benutzer anmelden darf.

      In den meisten Fällen sollte dies in no geändert werden, wenn Sie ein Benutzerkonto erstellt haben, das Zugriff auf erhöhte Berechtigungen hat (über su oder sudo) und sich über SSH anmelden kann.

      strictModes ist ein Sicherheitswächter, der Anmeldeversuche verweigert, wenn die Authentifizierungsdateien für alle lesbar sind.

      Dadurch werden Anmeldeversuche verhindert, wenn Konfigurationsdateien nicht sicher sind.

      /etc/ssh/sshd_config

      X11Forwarding yes
      X11DisplayOffset 10
      

      Diese Parameter konfigurieren eine Funktion namens X11 Forwarding. Dadurch können Sie die grafische Benutzeroberfläche (GUI) eines Remotesystems im lokalen System anzeigen.

      Diese Option muss auf dem Server aktiviert und mit dem SSH-Client während der Verbindung mit der Option -X übergeben werden.

      Speichern und schließen Sie nach dem Vornehmen Ihrer Änderungen die Datei durch Eingabe von STRG+X und Y gefolgt von ENTER.

      Wenn Sie Einstellungen in /etc/ssh/sshd_config geändert haben, stellen Sie sicher, dass Sie Ihren sshd-Server zur Implementierung der Änderungen neu laden:

      • sudo systemctl reload ssh

      Sie sollten Ihre Änderungen sorgfältig testen, um sicherzustellen, dass sie wie erwartet funktionieren.

      Es ist möglicherweise eine gute Idee, beim Vornehmen von Änderungen einige aktive Sitzungen zu haben. Dadurch können Sie die Konfiguration bei Bedarf zurücksetzen.

      Anmelden bei SSH mit Schlüsseln

      Es ist zwar nützlich, sich mit Passwörtern bei einem Remotesystem anmelden zu können, doch ist es eine wesentlich bessere Idee, schlüsselbasierte Authentifizierung einzurichten.

      Wie funktioniert schlüsselbasierte Authentifizierung?

      Schlüsselbasierte Authentifizierung funktioniert durch Erstellen eines Schlüsselpaars, bestehend aus einem privaten Schlüssel und einem öffentlichen Schlüssel.

      Der private Schlüssel befindet sich auf dem Clientrechner, ist gesichert und wird geheim gehalten.

      Der öffentliche Schlüssel kann an beliebige Personen weitergegeben oder auf jedem Server platziert werden, auf den Sie zugreifen möchten.

      Wenn Sie versuchen, eine Verbindung mit einem Schlüsselpaar herzustellen, verwendet der Server den öffentlichen Schlüssel zur Erstellung einer Nachricht für den Clientcomputer, die nur mit dem privaten Schlüssel gelesen werden kann.

      Der Clientcomputer sendet dann die entsprechende Antwort zurück an den Server und der Server weiß, dass der Client legitim ist.

      Das gesamte Verfahren erfolgt nach Einrichtung der Schlüssel automatisch.

      Erstellen von SSH-Schlüsseln

      SSH-Schlüssel sollten auf dem Computer erstellt werden, von dem aus Sie sich anmelden möchten. Dies ist normalerweise Ihr lokaler Rechner.

      Geben Sie Folgendes in die Befehlszeile ein:

      Drücken Sie die Eingabetaste zum Akzeptieren der Standardeinstellungen. Ihre Schlüssel werden unter ~/.ssh/id_rsa.pub und ~/.ssh/id_rsa erstellt.

      Wechseln Sie durch folgende Eingabe zum Verzeichnis .ssh:

      Sehen Sie sich die Berechtigungen der Dateien an:

      Output

      -rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

      Wie Sie sehen können, ist die Datei id_rsa nur für den Besitzer lesbar und beschreibbar. So sollte es sein, um sie geheim zu halten.

      Die Datei id_rsa.pub kann jedoch weitergegeben werden und verfügt über entsprechende Berechtigungen.

      Übertragen Ihres öffentlichen Schlüssels auf den Server

      Wenn Sie derzeit über passwortbasierten Zugriff auf einen Server verfügen, können Sie durch Eingabe des folgenden Befehls Ihren öffentlichen Schlüssel auf den Server kopieren:

      Dadurch wird eine SSH-Sitzung gestartet. Nach der Eingabe Ihres Passworts wird Ihr öffentlicher Schlüssel in die autorisierte Schlüsseldatei des Servers kopiert, sodass Sie sich beim nächsten Mal ohne das Passwort anmelden können.

      Optionen auf der Clientseite

      Es gibt eine Reihe von optionalen Flags, die Sie beim Verbinden über SSH wählen können.

      Einige davon könnten erforderlich sein, um mit den Einstellungen in der sshd-Konfiguration des Remote-Hosts übereinzustimmen.

      Wenn Sie beispielsweise die Portnummer in Ihrer sshd-Konfiguration geändert haben, müssen Sie durch folgende Angabe eine Anpassung an den Port auf der Clientseite vornehmen:

      • ssh -p port_number remote_host

      Wenn Sie nur einen einzigen Befehl in einem Remotesystem ausführen möchten, können Sie ihn nach dem Host wie folgt angeben:

      • ssh remote_host command_to_run

      Sie werden eine Verbindung mit dem Remoterechner herstellen und sich authentifizieren und der Befehl wird ausgeführt.

      Wie bereits gesagt: Wenn auf beiden Computern X11 Forwarding aktiviert ist, können Sie durch folgende Eingabe auf diese Funktion zugreifen:

      Wenn Sie über die entsprechenden Tools auf Ihrem Computer verfügen, öffnen die GUI-Programme, die Sie im Remotesystem verwenden, ihre Fenster nun auf Ihrem lokalen System.

      Deaktivieren der Passwortauthentifizierung

      Wenn Sie SSH-Schlüssel erstellt haben, können Sie durch Deaktivieren der ausschließlich passwortbasierten Authentifizierung die Sicherheit Ihres Servers erhöhen. Abgesehen von der Konsole ist die einzige Möglichkeit zur Anmeldung bei Ihrem Server der private Schlüssel, der zum öffentlichen Schlüssel passt, den Sie auf dem Server installiert haben.

      Warnung: Bevor Sie mit diesem Schritt fortfahren, stellen Sie sicher, dass Sie einen öffentlichen Schlüssel auf Ihrem Server installiert haben. Andernfalls werden Sie ausgesperrt!

      Öffnen Sie als root-Benutzer oder Benutzer mit sudo-Berechtigungen die sshd-Konfigurationsdatei:

      • sudo nano /etc/ssh/sshd_config

      Suchen Sie die Zeile, in der Password Authentication steht, und heben Sie die Kommentierung auf, indem Sie das führende #-Zeichen entfernen. Sie können dann den Wert in no ändern:

      /etc/ssh/sshd_config

      PasswordAuthentication no
      

      Zwei weitere Einstellungen, die nicht geändert werden sollten (sofern Sie diese Datei noch nicht geändert haben), sind PubkeyAuthentication und ChallengeResponseAuthentication. Sie werden standardmäßig gesetzt und sollten wie folgt aussehen:

      /etc/ssh/sshd_config

      PubkeyAuthentication yes
      ChallengeResponseAuthentication no
      

      Speichern und schließen Sie die Datei nach Vornahme Ihrer Änderungen.

      Sie können den SSH-Daemon nun neu laden:

      • sudo systemctl reload ssh

      Die Passwortauthentifizierung sollte nun deaktiviert und Ihr Server nur per SSH-Schlüsselauthentifizierung zugänglich sein.

      Zusammenfassung

      Sich mit SSH vertraut zu machen, ist eine lohnenswerte Aufgabe, schon weil sie so häufig erforderlich ist.

      Bei Verwendung der verschiedenen Optionen werden Sie erweiterte Funktionen entdecken, die Ihr Leben erleichtern können. SSH ist noch immer beliebt, da das Protokoll in verschiedenen Situationen sicher, leicht und hilfreich ist.



      Source link

      Cómo usar SSH para conectarse a un servidor remoto


      Introducción

      SSH es una herramienta esencial para ser un administrador de sistemas experto.

      SSH, o Secure Shell, es un protocolo que se utiliza para iniciar sesión de forma segura en sistemas remotos. Es la forma más común de acceder a servidores Linux remotos.

      En esta guía, analizaremos cómo usar SSH para conectarse a un sistema remoto.

      Sintaxis básica

      Para conectarse a un sistema remoto mediante SSH, usaremos el comando ssh. El formato más básico del comando es:

      En este ejemplo, remote_host es la dirección IP o el nombre de dominio al que está tratando de conectarse.

      Este comando asume que su nombre de usuario en el sistema remoto es el mismo que el que usa en el sistema local.

      Si su nombre de usuario es diferente en el sistema remoto, puede especificarlo usando esta sintaxis:

      • ssh remote_username@remote_host

      Cuando se haya conectado al servidor, se le puede solicitar que verifique su identidad mediante el ingreso de una contraseña. Más adelante, cubriremos cómo generar claves para usar en vez de contraseñas.

      Para salir de la sesión de ssh y volver a la sesión de shell local, escriba lo siguiente:

      ¿Cómo funciona SSH?

      SSH funciona mediante la conexión de un programa cliente a un servidor ssh, llamado sshd.

      En la sección anterior, ssh era el programa cliente. El servidor ssh ya está en ejecución en el remote_host que se especificó.

      En su servidor, el servidor sshd ya debe estar en ejecución. Si no es así, es posible que deba acceder a su servidor mediante una consola basada en la web o una consola serie local.

      El proceso que debe iniciar un servidor ssh depende de la distribución de Linux que esté utilizando.

      En Ubuntu, para iniciar el servidor ssh, debe escribir lo siguiente:

      Eso debería iniciar el servidor sshd y, luego, puede iniciar sesión de forma remota.

      Cómo configurar SSH

      Cuando cambie la configuración de SSH, cambiará la configuración del servidor sshd.

      En Ubuntu, el archivo de configuración sshd principal se encuentra en /etc/ssh/sshd_config.

      Haga una copia de seguridad de la versión actual de este archivo antes de editarlo:

      • sudo cp /etc/ssh/sshd_config{,.bak}

      Ábralo con un editor de texto:

      • sudo nano /etc/ssh/sshd_config

      Tendrá que dejar la mayoría de las opciones de este archivo sin modificar. Sin embargo, es posible que desee echar un vistazo a algunas:

      /etc/ssh/sshd_config

      Port 22
      

      La declaración de puerto especifica en qué puerto se escuchará el servidor sshd para las conexiones. De forma predeterminada, es el 22. Es recomendable dejar esta configuración sin modificar, a menos que tenga razones específicas para hacerlo. Si efectivamente cambia de puerto, le mostraremos cómo conectarse al puerto nuevo más adelante.

      /etc/ssh/sshd_config

      HostKey /etc/ssh/ssh_host_rsa_key
      HostKey /etc/ssh/ssh_host_dsa_key
      HostKey /etc/ssh/ssh_host_ecdsa_key
      

      Las declaraciones de claves de host especifican dónde buscar claves de host globales. Analizaremos qué es una clave de host más adelante.

      /etc/ssh/sshd_config

      SyslogFacility AUTH
      LogLevel INFO
      

      Estos dos elementos indican el nivel de registro que debería ocurrir.

      Si tiene dificultades con SSH, incrementar la cantidad de registros puede ser una buena forma de descubrir cuál es el problema.

      /etc/ssh/sshd_config

      LoginGraceTime 120
      PermitRootLogin yes
      StrictModes yes
      

      Estos parámetros especifican parte de la información de inicio de sesión.

      LoginGraceTime especifica cuántos segundos se mantendrá la conexión activa sin iniciar sesión correctamente.

      Una buena idea puede ser establecer este tiempo en un valor un poco mayor que la cantidad de tiempo que le toma iniciar sesión normalmente.

      PermitRootLogin selecciona si se permite que el usuario root inicie sesión.

      En la mayoría de los casos, esto debería modificarse a no cuando haya creado una cuenta de usuario que tenga acceso a mayores privilegios (a través de su o sudo) y que pueda iniciar sesión a través de ssh.

      strictModes es un protector de la seguridad que denegará un intento de inicio de sesión si cualquiera puede leer los archivos de autenticación.

      Esto evita intentos de inicio de sesión cuando los archivos de configuración no son seguros.

      /etc/ssh/sshd_config

      X11Forwarding yes
      X11DisplayOffset 10
      

      Estos parámetros configuran una capacidad llamada Reenvío X11. Esto le permite ver en el sistema local la interfaz gráfica de usuario (GUI) del sistema remoto.

      Esta opción debe habilitarse en el servidor y asignarse con el cliente SSH durante la conexión con la opción -X.

      Tras realizar los cambios, guarde y cierre el archivo mediante CTRL+X e Y, seguido de INTRO.

      Si modificó alguna configuración en /etc/ssh/sshd_config, asegúrese de volver a cargar el servidor sshd para implementar los cambios.

      • sudo systemctl reload ssh

      Debería probar completamente los cambios para garantizar que funcionan de la forma en que se espera.

      Una buena idea puede ser tener algunas sesiones activas cuando realice cambios. Esto le permitirá revertir la configuración si es necesario.

      Cómo iniciar sesión en SSH con claves

      Si bien es útil poder iniciar sesión en un sistema remoto usando contraseñas, es mucho mejor configurar una autenticación basada en claves.

      ¿Cómo funciona la autenticación basada en claves?

      La autenticación basada en claves funciona mediante la creación de un par de claves: una clave privada y una clave pública.

      La clave privada se encuentra en el equipo cliente y se protege y mantiene en secreto.

      La clave pública puede entregarse a alguien o colocarse en cualquier servidor al que desee acceder.

      Cuando intente conectarse usando un par de claves, el servidor usará la clave pública para crear un mensaje para el equipo cliente que solo puede leerse con la clave privada.

      Luego, el equipo cliente envía la respuesta apropiada al servidor y así el servidor sabrá que el cliente es legítimo.

      El proceso completo se realiza automáticamente después de configurar las claves.

      Cómo crear claves SSH

      Las claves SSH deben generarse en el equipo desde el que desea iniciar sesión. Generalmente, es su equipo local.

      Ingrese lo siguiente en la línea de comandos:

      Presione Intro para aceptar los valores predeterminados. Sus claves se crearán en ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa.

      Cambie al directorio .ssh escribiendo lo siguiente:

      Vea los permisos de los archivos:

      Output

      -rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

      Como puede ver, solo el propietario puede leer el archivo id_rsa y escribir en él. Así es como debería ser mantenerlo en secreto.

      Sin embargo, el archivo id_rsa.pub puede compartirse y tiene permisos apropiados para esta actividad.

      Cómo transferir su clave pública al servidor

      Si actualmente tiene acceso con contraseña a un servidor, puede copiar su clave pública en él mediante la emisión de este comando:

      Con esto se iniciará una sesión SSH. Después de ingresar su contraseña, su clave pública se copiará en el archivo de claves autorizadas del servidor, lo que le permitirá iniciar sesión sin la contraseña la próxima vez.

      Opciones del lado del cliente

      Hay varios indicadores opcionales que puede seleccionar cuando se conecta mediante SSH.

      Algunos de ellos pueden ser necesarios para que la configuración coincida con la del sshd del host remoto.

      Por ejemplo, si cambió el número de puerto en su configuración de sshd, también deberá cambiarlo en el lado del cliente para que coincida escribiendo lo siguiente:

      • ssh -p port_number remote_host

      Si solo desea ejecutar un comando único en un sistema remoto, puede especificarlo después del host como este:

      • ssh remote_host command_to_run

      Se conectará al equipo remoto, se autenticará y se ejecutará el comando.

      Como dijimos antes, si el reenvío X11 se habilita en ambas computadoras, puede acceder a esa funcionalidad escribiendo lo siguiente:

      Siempre que tenga las herramientas apropiadas en su computadora, los programas de GUI que utiliza en el sistema remoto ahora abrirán su ventana en el sistema local.

      Si creó claves SSH, puede mejorar la seguridad de su servidor deshabilitando la autenticación únicamente mediante contraseña. Aparte de la consola, la única forma de iniciar sesión en su servidor será mediante la clave privada que se empareja con la clave pública que se haya instalado en el servidor.

      Advertencia: Antes de continuar con este paso, asegúrese de haber instalado una clave pública en su servidor. Si no es así, quedará bloqueado.

      Como root o usuario con privilegios sudo, abra el archivo de configuración sshd:

      • sudo nano /etc/ssh/sshd_config

      Busque la línea que dice Password Authentication y quite el comentario en ella eliminando el # inicial. Luego, puede cambiar su valor a no:

      /etc/ssh/sshd_config

      PasswordAuthentication no
      

      Dos parámetros adicionales que no deben modificarse (siempre que no haya modificado este archivo antes) son PubkeyAuthentication y PubkeyAuthentication. Están configurados de forma predeterminada y deben mostrar lo siguiente:

      /etc/ssh/sshd_config

      PubkeyAuthentication yes
      ChallengeResponseAuthentication no
      

      Después de realizar los cambios, guarde y cierre el archivo.

      Ahora puede volver a cargar el demonio SSH:

      • sudo systemctl reload ssh

      Ahora, la autenticación mediante contraseña debería deshabilitarse y solo debe poder acceder a su servidor mediante la autenticación de claves SSH.

      Conclusión

      Aprender cómo usar SSH es un proceso que vale la pena, aunque solo sea una actividad común.

      A medida que utilice las diversas opciones, descubrirá funciones más avanzadas que pueden facilitarle la vida. SSH ha mantenido su popularidad porque es seguro, ligero y útil en diversas situaciones.



      Source link