One place for hosting & domains

      Cómo configurar claves de SSH en CentOS 8


      Introducción

      SSH, o shell seguro, es un protocolo cifrado que se usa para administrar servidores y comunicarse con ellos. Al trabajar con un servidor de CentOS, es probable que pase la mayor parte de su tiempo en una sesión de terminal conectada a su servidor a través de SSH.

      En esta guía, nos centraremos en la configuración de claves de SSH para un servidor de CentOS 8. Las claves de SSH proporcionan una alternativa sencilla y segura para iniciar sesión en su servidor y se recomiendan para todos los usuarios.

      Paso 1: Crear el par de claves de RSA

      El primer paso es crear un par de claves en la máquina cliente (por lo general, su computadora local):

      De forma predeterminada, ssh-keygen creará un par de claves RSA de 2048 bits, que ofrece suficiente seguridad para la mayoría de los casos de uso (como opción, puede pasar en el indicador -b 4096 a crear una clave más grande de 4096 bits).

      Después de ingresar el comando, verá el siguiente mensaje:

      Output

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

      Pulse ENTER para guardar el par de claves en el subdirectorio .ssh/ de su directorio de inicio o especificar una ruta alternativa.

      Si generó previamente un par de claves de SSH, puede ver el siguiente mensaje:

      Output

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

      Si elige sobrescribir la clave en el disco, ya no podrá autenticar usando la clave anterior. Tenga mucho cuidado al convalidar la operación, ya que este es un proceso destructivo que no puede revertirse.

      Debería ver el siguiente mensaje:

      Output

      Enter passphrase (empty for no passphrase):

      Aquí, como opción puede introducir una frase de contraseña segura, lo cual se recomienda mucho. Una frase de contraseña agrega una capa de seguridad adicional para su clave, a fin de evitar el inicio de sesión de usuarios no autorizados.

      Debería ver el siguiente resultado:

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

      Ahora dispondrá de una clave pública y privada que puede usar para realizar la autenticación. El siguiente paso es disponer la clave pública en su servidor a fin de poder usar autenticación basada en claves de SSH para iniciar sesión.

      Paso 2: Copiar la clave pública al servidor de CentOS

      La alternativa más rápida para copiar su clave pública al host de CentOS es usar una utilidad llamada ssh-copy-id. Este método es altamente recomendado si está disponible. Si no tiene ssh-copy-id disponible en su máquina cliente, puede usar uno de los dos métodos alternativos que se muestran a continuación (realizar una copia mediante SSH con contraseña o copiar manualmente la clave).

      Copiar su clave pública usando ssh-copy-id

      La herramienta ssh-copy-id se incluye por defecto en muchos sistemas operativos. Por ello, es posible que tenga la posibilidad de disponer de ella en su sistema local. Para que este método funcione, ya debe disponer de acceso con SSH basado en contraseña en su servidor.

      Para usar la utilidad, solo necesita especificar el host remoto al que desee conectarse y la cuenta de usuario a la que tenga acceso mediante SSH con contraseña. Esta es la cuenta a la que se copiará su clave de SSH pública:

      • ssh-copy-id username@remote_host

      Es posible que vea el siguiente mensaje:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Esto significa que su computadora local no reconoce el host remoto. Esta pasará la primera vez que establezca conexión con un nuevo host. Escriba yes y presione ENTER para continuar.

      A continuación, la utilidad analizará su cuenta local en busca de la clave id_rsa.pub que creamos antes. Cuando la encuentre, le solicitará la contraseña de la cuenta del usuario remoto:

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Escriba la contraseña (por motivos de seguridad, no se mostrará lo que escriba) y presione ENTER. La utilidad se conectará a la cuenta en el host remoto usando la contraseña que proporcionó. Luego, se copiarán los contenidos de su clave ~/.ssh/id_rsa.pub al archivo de la cuenta remota ~/.ssh/authorized_keys.

      Debería ver el siguiente resultado:

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      En este punto, su clave id_rsa.pub se habrá cargado en la cuenta remota. |Puede continuar con el paso 3.

      Copiar la clave pública usando SSH

      Si no tiene ssh-copy-id disponible, pero tiene acceso de SSH basado en contraseña a una cuenta de su servidor, puede cargar sus claves usando un método de SSH más convencional.

      Podemos hacer esto usando el comando cat para leer el contenido de la clave de SSH pública en nuestra computadora local y canalizando esto a través de una conexión SSH al servidor remoto.

      Por otra parte, podemos asegurarnos de que el directorio ~/.ssh exista y tenga los permisos correctos conforme a la cuenta que usamos.

      Luego podemos transformar el contenido que canalizamos a un archivo llamado authorized_keys dentro de este directorio. Usaremos el símbolo de redireccionamiento >> para anexar el contenido en lugar de sobrescribirlo. Esto nos permitirá agregar claves sin eliminar ninguna clave previamente agregada.

      El comando completo tiene este aspecto:

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Es posible que vea el siguiente mensaje:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Esto significa que su computadora local no reconoce el host remoto. Esta pasará la primera vez que establezca conexión con un nuevo host. Escriba yes y presione ENTER para continuar.

      Posteriormente, deberá recibir la solicitud de introducir la contraseña de la cuenta de usuario remota:

      Output

      username@203.0.113.1's password:

      Una vez que ingrese su contraseña, el contenido de su clave id_rsa.pub se copiará al final del archivo authorized_keys de la cuenta del usuario remoto. Continúe con el paso 3 si el procedimiento se completó de forma correcta.

      Copiar la clave pública de forma manual

      Si no tiene disponibilidad de acceso de SSH basado en contraseña a su servidor, deberá completar el proceso anterior de forma manual.

      Habilitaremos el contenido de su archivo id_rsa.pub para el archivo ~/.ssh/authorized_keys en su máquina remota.

      Para mostrar el contenido de su clave id_rsa.pub, escriba esto en su computadora local:

      Verá el contenido de la clave, que debería tener un aspecto similar a este:

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

      Inicie sesión en su host remoto usando cualquier método del que disponga.

      Una vez que tenga acceso a su cuenta en el servidor remoto, debe asegurarse de que exista el directorio ~/.ssh. Con este comando se creará el directorio, si es necesario. Si este último ya existe, no se creará:

      Ahora, podrá crear o modificar el archivo authorized_keys dentro de este directorio. Puede agregar el contenido de su archivo id_rsa.pub al final del archivo authorized_keys y, si es necesario, crear este último con el siguiente comando:

      • echo public_key_string >> ~/.ssh/authorized_keys

      En el comando anterior, reemplace public_key_string por el resultado del comando cat ~/.ssh/id_rsa.pub que ejecutó en su sistema local. Debería iniciar con ssh-rsa AAAA....

      Por último, verificaremos que el directorio ~/.ssh y el archivo authorized_keys tengan el conjunto de permisos apropiados:

      Con esto, se eliminan de forma recursiva todos los permisos “grupo” y “otros” del directorio ~/.ssh/.

      Si está usando la cuenta root para configurar claves para una cuenta de usuario, también es importante que el directorio ~/.ssh pertenezca al usuario y no sea root:

      • chown -R sammy:sammy ~/.ssh

      En este tutorial, nuestro usuario recibe el nombre sammy, pero debe sustituir el nombre de usuario que corresponda en el comando anterior.

      Ahora podemos intentar realizar la autenticación basada en claves con nuestro servidor de CentOS.

      Paso 3: Iniciar sesión en su servidor de CentOS usando claves de SSH

      Si completó con éxito uno de los procedimientos anteriores, ahora debería poder iniciar sesión en el host remoto sin la contraseña de la cuenta remota.

      El proceso inicial es igual al de la autenticación basada en contraseña:

      Si es la primera vez que establece conexión con este host (si empleó el último método anterior), es posible que vea algo como esto:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Esto significa que su computadora local no reconoce el host remoto. Escriba yes y presione ENTER para continuar.

      Si no proporcionó una frase de contraseña al crear su par de claves en el paso 1, se iniciará la sesión de inmediato. Si proporcionó una frase de contraseña, se solicitará que la introduzca ahora. Después de la autenticación, se debería abrir una nueva sesión de shell con la cuenta configurada en el servidor de CentOS.

      Si la autenticación basada en claves se realizó con éxito, puede aprender a proteger aún más su sistema inhabilitando la autenticación basada en contraseña de su servidor SSH.

      Paso 4: Inhabilitar la autenticación con contraseña en su servidor

      Si pudo iniciar sesión en su cuenta usando SSH sin una contraseña, habrá configurado con éxito la autenticación basada en claves de SSH para su cuenta. Sin embargo, su mecanismo de autenticación basado en contraseña sigue activo. Esto significa que su servidor sigue expuesto a ataques de fuerza bruta.

      Antes de completar los pasos de esta sección, asegúrese de tener configurada la autenticación basada en claves de SSH para la cuenta root en este servidor o, preferentemente, la autenticación basada en clave de SSH para una cuenta no root en este servidor con privilegios sudo. Con este paso, se bloquearán los registros basados en contraseñas. Por lo tanto, es fundamental que se asegure de seguir teniendo acceso administrativo.

      Una vez que haya confirmado que su cuenta remota tiene privilegios administrativos, inicie sesión en su servidor remoto con claves de SSH, ya sea como root o con una cuenta con privilegios sudo. Luego, abra el archivo de configuración del demonio de SSH:

      • sudo vi /etc/ssh/sshd_config

      Dentro del archivo, busque una directiva llamada PasswordAuthentication. Puede introducir comentarios con un hash #. Presione i para implementar vi en modo de inserción, y luego elimine los comentarios de la línea y fije el valor en no. Esto inhabilitará su capacidad para iniciar sesión a través de SSH usando contraseñas de cuenta:

      /etc/ssh/sshd_config

      ...
      PasswordAuthentication no
      ...
      

      Cuando termine de realizar cambios, presione ESC y luego :wq para ingrear los cambios en el archivo y cierre la directiva. Para implementar realmente estos cambios, debemos reiniciar el servicio sshd:

      • sudo systemctl restart sshd

      Como medida de precaución, abra una nueva ventana de terminal y compruebe que el servicio de SSH funcione correctamente antes de cerrar su sesión actual:

      Una vez que haya verificado que su servicio de SSH sigue funcionando correctamente, podrá cerrar de forma segura todas las sesiones de los servidores actuales.

      El demonio de SSH de su servidor de CentOS ahora solo responderá a claves de SSH. La autenticación basada en contraseña se habrá desactivado con éxito.

      Conclusión

      De esta manera, la autenticación basada en claves de SSH debería quedar configurada en su servidor. Esto le permitirá iniciar sesión sin proporcionar una contraseña de cuenta.

      Si desea obtener más información sobre cómo trabajar con SSH, consulte nuestra Guía de aspectos básicos de SSH.



      Source link

      Como configurar chaves SSH no CentOS 8


      Introdução

      O SSH, ou shell seguro, é um protocolo criptografado usado para administrar e se comunicar com servidores. Ao trabalhar com um servidor CentOS, existem boas chances de você gastar a maior parte do seu tempo em uma sessão de terminal conectado ao seu servidor através do SSH.

      Neste guia, vamos concentrar-nos na configuração de chaves SSH para um servidor com CentOS 8. As chaves SSH fornecem um método objetivo e seguro de fazer o login no seu servidor e são recomendadas para todos os usuários.

      Passo 1 — Criando o par de chaves RSA

      O primeiro passo é criar uma par de chaves na máquina cliente (geralmente seu computador local):

      Por padrão, o ssh-keygen criará um par de chaves RSA de 2048 bits, que é seguro o suficiente para a maioria dos casos de utilização (opcionalmente, você pode enviar o sinalizador -b 4096 para criar uma chave maior, de 4096 bits).

      Após digitar o comando, você deve ver o seguinte prompt:

      Output

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

      Pressione ENTER para salvar o par de chaves no subdiretório .ssh/, no seu diretório home ou especifique um caminho alternativo.

      Se você tivesse gerado anteriormente um par de chaves SSH, pode ser que veja o seguinte prompt:

      Output

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

      Se escolher substituir a chave no disco, você não poderá autenticar-se usando a chave anterior. Seja cuidadoso ao selecionar o sim, uma vez que este é um processo destrutivo que não pode ser revertido.

      Então, você deve ver o seguinte prompt:

      Output

      Enter passphrase (empty for no passphrase):

      Aqui, como opção, você pode digitar uma frase secreta, o que é altamente recomendado. Uma frase secreta adiciona uma camada adicional de segurança à sua chave, para evitar que usuários não autorizados façam login.

      Você deve ver o seguinte resultado:

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

      Agora, você tem uma chave pública e uma chave privada que poderá usar para se autenticar. O próximo passo é colocar a chave pública no seu servidor para que você possa usar a autenticação baseada em chaves SSH para fazer login.

      Passo 2 — Copiando a chave pública para o seu servidor CentOS

      A maneira mais rápida de copiar sua chave pública para o host do CentOS é usar um utilitário chamado ssh-copy-id. Esse método é altamente recomendado, se estiver disponível. Se não tiver o ssh-copy-id disponível na sua máquina cliente, você pode usar um dos dois métodos alternativos que estão a seguir (copiando via SSH baseado em senha ou copiando a chave manualmente).

      Copiando sua chave pública usando o ssh-copy-id

      Por padrão, a ferramenta ssh-copy-id vem incluída em muitos sistemas operacionais. Assim, você pode tê-la disponível em seu sistema local. Para que esse método funcione, você já deverá ter acesso ao seu servidor via SSH baseado em senha.

      Para usar o utilitário, você precisa especificar apenas o host remoto ao qual gostaria de se conectar, bem como a conta de usuário para acesso por senha via SSH. Esta é a conta na qual sua chave SSH pública será copiada:

      • ssh-copy-id username@remote_host

      Pode ser que você veja a seguinte mensagem:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Isso significa que seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite yes e pressione ENTER para continuar.

      Em seguida, o utilitário irá examinar sua conta local em busca da chave id_rsa.pub que criamos anteriormente. Quando ele encontrar a chave, irá solicitar a senha da conta do usuário remoto:

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Digite a senha (sua digitação não será exibida para fins de segurança) e pressione ENTER. O utilitário se conectará à conta no host remoto, usando a senha que você forneceu. Então, ele irá copiar o conteúdo de sua chave ~/.ssh/id_rsa.pub para o arquivo da conta remota ~/.ssh/authorized_keys.

      Você deve ver o seguinte resultado:

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      Neste ponto, sua chave id_rsa.pub foi transferida para a conta remota. Você pode prosseguir para o Passo 3.

      Copiando a chave pública usando o SSH

      Se não tiver o ssh-copy-id disponível, mas tiver acesso a uma conta do seu servidor, via SSH baseado em senha, você pode fazer o upload das suas chaves, usando um método SSH mais convencional.

      Podemos fazer isso usando o comando cat para ler o conteúdo da chave SSH pública no nosso computador local e passando isso através de uma conexão SSH ao servidor remoto.

      Por outro lado, podemos certificar-nos se o diretório ~/.ssh existe e se tem as permissões corretas sob a conta que estamos usando.

      Então, poderemos fornecer o conteúdo que direcionamos para um arquivo chamado authorized_keys, dentro desse diretório. Vamos usar o símbolo de redirecionamento >> para acrescentar o conteúdo, em vez de substituí-lo. Isso permitirá que adicionemos chaves sem destruir as chaves previamente adicionadas.

      O comando completo se parece com este:

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Pode ser que você veja a seguinte mensagem:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Isso significa que seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite yes e pressione ENTER para continuar.

      Depois disso, você deve ser solicitado a digitar a senha da conta de usuário remoto:

      Output

      username@203.0.113.1's password:

      Após digitar sua senha, o conteúdo da sua chave id_rsa.pub será copiado para o final do arquivo authorized_keys da conta do usuário remoto. Continue para o Passo 3 se isso foi bem-sucedido.

      Copiando a chave pública manualmente

      Se não tiver acesso ao servidor disponível, via SSH baseado em senha, você terá que completar o processo acima manualmente.

      Vamos acrescentar o conteúdo do seu arquivo id_rsa.pub manualmente ao arquivo ~/.ssh/authorized_keys, em sua máquina remota.

      Para exibir o conteúdo de sua chave id_rsa.pub, digite o seguinte em seu computador local:

      Você verá o conteúdo da chave, que deve ser parecido com este:

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

      Faça login no seu host remoto, usando qualquer método que você tiver disponível.

      Assim que tiver acesso à sua conta no servidor remoto, você deve certificar-se de que o diretório ~/.ssh exista. Se necessário, o comando a seguir criará o diretório ou não fará nada, se ele já existir:

      Agora, você pode criar ou modificar o arquivo authorized_keys dentro desse diretório. Você pode adicionar o conteúdo do seu arquivo id_rsa.pub ao final do arquivo authorized_keys, criando-o – se necessário – usando este comando:

      • echo public_key_string >> ~/.ssh/authorized_keys

      No comando acima, substitua o public_key_string pelo resultado do comando cat ~/.ssh/id_rsa.pub que você executou no seu sistema local. Ela deve começar com ssh-rsa AAAA....

      Por fim, vamos garantir que o diretório ~/.ssh e o arquivo authorized_keys tenham as permissões apropriadas configuradas:

      Isso remove recursivamente todas as permissões “grupo” e “outras” para o diretório ~/.ssh/.

      Se você estiver usando a conta root para configurar chaves de uma conta de usuário, também é importante que o diretório ~/.ssh pertença ao usuário e não ao root:

      • chown -R sammy:sammy ~/.ssh

      Neste tutorial, nosso usuário se chama sammy, mas você deve substituí-lo pelo nome de usuário apropriado no comando acima.

      Agora, podemos tentar uma autenticação por chave em nosso servidor com CentOS.

      Passo 3 — Fazendo login em seu servidor CentOS, usando chaves SSH

      Se tiver tido sucesso em concluir um dos procedimentos acima, agora, você deverá conseguir fazer login no host remoto sem a senha da conta remota.

      O processo inicial é o mesmo usado para a autenticação por senha:

      Se essa é a primeira vez que você se conecta a este host (caso tenha usado o último método acima), pode ser que veja algo como isto:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Isso significa que seu computador local não reconhece o host remoto. Digite yes e, depois, pressione ENTER para continuar.

      Caso não tenha fornecido uma frase secreta quando criou seu par de chaves no passo 1, você entrará imediatamente. Se forneceu uma frase secreta, será solicitado a digitá-la nesse momento. Após a autenticação, uma nova sessão de shell deve abrir para você com a conta configurada no servidor CentOS.

      Se a autenticação baseada em chaves tiver sido bem-sucedida, continue para aprender a proteger ainda mais o seu sistema, desabilitando a autenticação por senha no seu servidor via SSH.

      Passo 4 — Desabilitando a autenticação por senha em seu servidor

      Se você conseguiu fazer login em sua conta, usando o SSH sem uma senha, significa que você configurou com sucesso a autenticação baseada em chaves SSH para sua conta. Entretanto, seu mecanismo de autenticação baseado em senha ainda está ativo, o que significa que seu servidor ainda está exposto a ataques de força bruta.

      Antes de completar os passos nesta seção, certifique-se de que você tenha uma autenticação baseada em chaves SSH configurada para a conta raiz neste servidor, ou, de preferência, que tenha uma autenticação baseada em senhas SSH configurada para uma conta não raiz neste servidor, com privilégios sudo. Este passo irá bloquear os logins baseados em senha. Dessa maneira,é fundamental assegurar que você ainda conseguirá obter acesso administrativo.

      Assim que você tiver confirmado que sua conta remota tem privilégios administrativos, acesse o seu servidor remoto com as chaves SSH, como raiz ou com uma conta com privilégios sudo. Então, abra o arquivo de configuração do daemon SSH:

      • sudo vi /etc/ssh/sshd_config

      Dentro do arquivo, procure por uma diretiva chamada PasswordAuthentication. Isso pode ser transformado em comentário com uma cerquilha #. Pressione i para colocar o vi no modo de inserção e, em seguida, remova o comentário da linha e defina o valor para no. Isso desabilitará sua capacidade de fazer login via SSH usando senhas de conta:

      /etc/ssh/sshd_config

      ...
      PasswordAuthentication no
      ...
      

      Quando você terminar de fazer as alterações, pressione ESC e, então tecle :wq para escrever as alterações no arquivo e saia. Para realmente implementar essas alterações, precisamos reiniciar o serviço sshd:

      • sudo systemctl restart sshd

      Como precaução, abra uma nova janela de terminal e teste se o serviço SSH está funcionando corretamente, antes de encerrar sua sessão atual:

      Assim que tiver verificado que seu serviço SSH ainda está funcionando corretamente, você pode fechar todas as sessões atuais do servidor com segurança.

      O daemon SSH no seu servidor CentOS agora responde apenas às chaves SSH. A autenticação baseada em senha foi desabilitada com sucesso.

      Conclusão

      Agora, você deve ter uma autenticação baseada em chaves SSH configurada no seu servidor, permitindo que você faça login sem fornecer uma senha da conta.

      Se você quiser aprender mais sobre como trabalhar com o SSH, veja nosso Guia de Noções Básicas sobre SSH.



      Source link

      Comment configurer des clés SSH sur Ubuntu 18.04


      Introduction

      SSH, ou secure shell, est un protocole crypté utilisé pour administrer et communiquer avec des serveurs. Lorsque vous travaillez avec un serveur Ubuntu, il y a de fortes chances que vous passiez la majeure partie de votre temps dans une session terminal connectée à votre serveur par SSH.

      Dans ce guide, nous nous concentrerons sur la configuration des clés SSH pour une installation sur Ubuntu 18.04 « vanilla ». Les clés SSH constituent un moyen simple et sûr de se connecter à votre serveur et sont recommandées à tous les utilisateurs.

      Étape 1 – Création de la paire de clés RSA

      La première étape consiste à créer une paire de clés sur la machine cliente (généralement votre ordinateur) :

      Par défaut, ssh-keygen crée une paire de clés RSA de 2048 bits, ce qui est suffisamment sûr pour la plupart des cas d'utilisation (vous pouvez éventuellement passer l'indicateur -b 4096 pour créer une clé plus grande de 4096 bits).

      Après avoir entré la commande, vous devriez voir la sortie suivante :

      Output

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

      Appuyez sur la touche Entrée pour enregistrer la paire de clés dans le sous-répertoire .ssh/ de votre répertoire de base, ou indiquez un autre chemin d'accès.

      Si vous aviez précédemment généré une paire de clés SSH, vous verrez peut-être s'afficher le message suivant :

      Output

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

      Si vous choisissez d'écraser la clé sur le disque, vous ne pourrez plus vous authentifier à l'aide de la clé précédente. Soyez très prudent lorsque vous sélectionnez « yes », car il s'agit d'un processus de suppression irréversible.

      Vous devriez alors voir le message suivant :

      Output

      Enter passphrase (empty for no passphrase):

      Ici, vous pouvez choisir d'entrer une phrase de passe sécurisée, ce qui est fortement recommandé. Une phrase de passe ajoute une sécurité supplémentaire pour empêcher les utilisateurs non autorisés de se connecter. Pour en savoir plus sur la sécurité, consultez notre tutoriel Comment configurer l'authentification par clé SSH sur un serveur Linux.

      Vous devriez alors voir le message suivant :

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

      Vous disposez désormais d'une clé publique et privée que vous pouvez utiliser pour vous authentifier. L'étape suivante consiste à placer la clé publique sur votre serveur afin que vous puissiez utiliser l'authentification basée sur la clé SSH pour vous connecter.

      Étape 2 - Copie de la clé publique sur le serveur Ubuntu

      La façon la plus rapide de copier votre clé publique sur l'hôte Ubuntu est d'utiliser un utilitaire appelé ssh-copy-id. En raison de sa simplicité, cette méthode est fortement recommandée si elle est disponible. Si vous ne disposez pas de ssh-copy-id sur votre machine cliente, vous pouvez utiliser l'une des deux méthodes alternatives fournies dans cette section (copie via SSH basé sur un mot de passe, ou copie manuelle de la clé).

      Copier la clé publique à l'aide de ssh-copy-id

      L'outil ssh-copy-id est inclus par défaut dans de nombreux systèmes d'exploitation, il est donc possible qu'il soit disponible sur votre système local. Pour que cette méthode fonctionne, vous devez déjà disposer d'un accès SSH à votre serveur, basé sur un mot de passe.

      Pour utiliser l'utilitaire, il vous suffit de spécifier l'hôte distant auquel vous souhaitez vous connecter et le compte utilisateur auquel vous avez accès SSH par mot de passe. C'est le compte sur lequel votre clé publique SSH sera copiée.

      La syntaxe est la suivante :

      • ssh-copy-id username@remote_host

      Vous verrez peut-être le message suivant :

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Cela signifie que votre ordinateur local ne reconnaît pas l'hôte distant. Cela se produira la première fois que vous vous connecterez à un nouvel hôte. Tapez « yes » et appuyez sur ENTER (ENTRÉE) pour continuer.

      Ensuite, l'utilitaire recherchera sur votre compte local la clé id_rsa.pub que nous avons créée précédemment. Lorsqu'il trouvera la clé, il vous demandera le mot de passe du compte de l'utilisateur distant :

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Saisissez le mot de passe (votre saisie ne sera pas affichée pour des raisons de sécurité) et appuyez sur ENTER. L'utilitaire se connectera au compte sur l'hôte distant en utilisant le mot de passe que vous avez fourni. Il copiera ensuite le contenu de votre clé ~/.ssh/id_rsa.pub dans un fichier situé dans le répertoire de base ~/.ssh du compte distant appelé authorized_keys.

      Vous devriez voir le message suivant :

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      À ce stade, votre clé id_rsa.pub a été téléchargée sur le compte distant. Vous pouvez passer à l’étape 3.

      Copier la clé publique à l'aide de SSH

      Si vous ne disposez pas de ssh-copy-id, mais que vous avez un accès SSH par mot de passe à un compte sur votre serveur, vous pouvez télécharger vos clés en utilisant une méthode SSH classique.

      Nous pouvons le faire en utilisant la commande cat pour lire le contenu de la clé publique SSH sur notre ordinateur local et en l'acheminant par une connexion SSH vers le serveur distant.

      D'autre part, nous pouvons nous assurer que le répertoire ~/.ssh existe et a les bonnes permissions sous le compte que nous utilisons.

      Nous pouvons alors extraire le contenu que nous avons transféré dans un fichier appelé authorized_keys dans ce répertoire. Nous utiliserons le symbole de redirection >> pour ajouter le contenu au lieu d'écraser le contenu précédent. Cela nous permettra d'ajouter des clés sans détruire les clés précédemment ajoutées.

      La commande complète ressemble à ceci :

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Vous verrez peut-être le message suivant :

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Cela signifie que votre ordinateur local ne reconnaît pas l'hôte distant. Cela se produira la première fois que vous vous connecterez à un nouvel hôte. Tapez « yes » et appuyez sur ENTER (ENTRÉE) pour continuer.

      Ensuite, il vous sera demandé de saisir le mot de passe du compte d'utilisateur distant :

      Output

      username@203.0.113.1's password:

      Après avoir saisi votre mot de passe, le contenu de votre clé id_rsa.pub sera copié à la fin du fichier authorized_keys du compte de l'utilisateur distant. Passez à l’étape 3 si vous avez réussi.

      Copier manuellement la clé publique

      Si vous ne disposez pas d'un accès SSH basé sur un mot de passe à votre serveur, vous devrez effectuer le processus ci-dessus manuellement.

      Nous ajouterons manuellement le contenu de votre fichier id_rsa.pub au fichier ~/.ssh/authorized_keys sur votre machine distante.

      Pour afficher le contenu de votre clé id_rsa.pub, tapez ceci dans votre ordinateur local :

      Vous verrez le contenu de la clé, qui devrait ressembler à ceci :

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

      Accédez à votre hôte distant en utilisant la méthode dont vous disposez.

      Une fois que vous avez accès à votre compte sur le serveur distant, vous devez vous assurer que le répertoire ~/.ssh existe. Cette commande va créer le répertoire si nécessaire, ou ne rien faire s'il existe déjà :

      Maintenant, vous pouvez créer ou modifier le fichier authorized_keys dans ce répertoire. Vous pouvez ajouter le contenu de votre fichier id_rsa.pub à la fin du fichier authorized_keys, en le créant si nécessaire, à l'aide de cette commande :

      • echo public_key_string >> ~/.ssh/authorized_keys

      Dans la commande ci-dessus, remplacez la chaîne public_key_string par la sortie de la commande cat ~/.ssh/id_rsa.pub que vous avez exécutée sur votre système local. Elle devrait commencer par ssh-rsa AAAA....

      Enfin, nous nous assurerons que le répertoire ~/.ssh et le fichier authorized_keys ont les permissions appropriées :

      Cela supprime récursivement toutes les permissions « group » et « other » pour le répertoire ~/.ssh/.

      Si vous utilisez le compte root pour configurer les clés d'un compte utilisateur, il est également important que le répertoire ~/.ssh appartienne à l'utilisateur et non au compte root :

      • chown -R sammy:sammy ~/.ssh

      Dans ce tutoriel, notre utilisateur est nommé sammy mais vous devez substituer le nom d'utilisateur approprié dans la commande ci-dessus.

      Nous pouvons désormais tenter une authentification sans mot de passe avec notre serveur Ubuntu.

      Étape 3 - Authentification sur le serveur Ubuntu à l'aide de clés SSH

      Si vous avez effectué avec succès l'une des procédures ci-dessus, vous devriez pouvoir vous connecter à l'hôte distant sans le mot de passe du compte distant.

      Le processus de base est le même :

      Si c'est la première fois que vous vous connectez à cet hôte (si vous avez utilisé la dernière méthode ci-dessus), vous verrez peut-être quelque chose comme ceci :

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Cela signifie que votre ordinateur local ne reconnaît pas l'hôte distant. Tapez « yes » et appuyez sur ENTER pour continuer.

      Si vous n'avez pas fourni de phrase de passe pour votre clé privée, vous serez immédiatement connecté. Si vous avez fourni une phrase de passe lorsque vous avez créé la clé privée, vous serez invité à la saisir maintenant (notez que votre saisie ne s'affichera pas dans la session du terminal pour des raisons de sécurité). Après authentification, une nouvelle session shell devrait s'ouvrir pour vous avec le compte configuré sur le serveur Ubuntu.

      Si l'authentification par clé a réussi, continuez le tutoriel pour apprendre comment sécuriser davantage votre système en désactivant l'authentification par mot de passe.

      Étape 4 - Désactivation de l'authentification par mot de passe sur votre serveur

      Si vous avez pu vous connecter à votre compte en utilisant SSH sans mot de passe, vous avez réussi à configurer une authentification basée sur la clé SSH pour votre compte. Cependant, votre mécanisme d'authentification par mot de passe est toujours actif, ce qui signifie que votre serveur est toujours exposé aux attaques par force brute.

      Avant d'effectuer les étapes de cette section, assurez-vous que vous avez configuré une authentification basée sur une clé SSH pour le compte root sur ce serveur, ou de préférence, que vous avez configuré une authentification basée sur une clé SSH pour un compte non root sur ce serveur avec des privilèges sudo. Cette étape permettra de verrouiller les connexions par mot de passe, il est donc essentiel de s'assurer que vous pourrez toujours obtenir un accès administratif.

      Une fois que vous avez confirmé que votre compte distant a des privilèges administratifs, connectez-vous à votre serveur distant avec des clés SSH, soit en tant que root, soit avec un compte ayant des privilèges sudo. Ensuite, ouvrez le fichier de configuration du démon SSH :

      • sudo nano /etc/ssh/sshd_config

      Dans le fichier, recherchez une directive appelée PasswordAuthentication. Elle est peut-être commentée. Décommentez la ligne et réglez la valeur sur « no ». Cela désactivera votre capacité à vous connecter via SSH en utilisant des mots de passe de compte :

      /etc/ssh/sshd_config

      ...
      PasswordAuthentication no
      ...
      

      Sauvegardez et fermez le fichier lorsque vous avez terminé en appuyant sur CTRL + X, puis Y pour confirmer la sauvegarde du fichier, et enfin ENTER pour quitter le nano. Pour implémenter ces changements de manière effective, nous devons redémarrer le service sshd :

      • sudo systemctl restart ssh

      Par mesure de précaution, ouvrez une nouvelle fenêtre de terminal et vérifiez que le service SSH fonctionne correctement avant de fermer cette session :

      Une fois que vous avez vérifié votre service SSH, vous pouvez fermer en toute sécurité toutes les sessions de serveur en cours.

      Le démon SSH sur votre serveur Ubuntu ne répond désormais plus qu'aux clés SSH. L'authentification par mot de passe a été désactivée.

      Conclusion

      Vous devriez maintenant avoir une authentification basée sur une clé SSH configurée sur votre serveur, vous permettant de vous connecter sans fournir de mot de passe de compte.

      Si vous souhaitez en savoir plus sur SSH, consultez notre Guide des fondamentaux SSH.



      Source link