Cómo hacer ssh al servidor web remoto sin usar una contraseña

Soy nuevo en OS X.

Según el título, tengo problemas para conectarme a mi servidor web a través de SSH. Mi servidor acepta claves y no usamos contraseñas.
Vengo de Windows, y en Windows usé PuTTY para conectarme a mi servidor usando un archivo .ppk generado usando PuTTYGen.

En la Mac, generé usando ssh-keygen -t rsa -b 2048 e hice un archivo key.ppk en ~/.ssh y pegué el contenido de mi archivo .ppk de Windows en él.

También hice un archivo de configuración con los siguientes contenidos...

Host domain.com
  IdentityFile ~/.ssh/key.ppk
  User username

Cuando intento conectarme, la Terminal me solicita una contraseña (¿por qué?) Luego, cuando no ingreso nada y presiono Aceptar, falla con el mensaje

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

¡Cualquier ayuda sobre lo que estoy haciendo mal será genial! Gracias por leer y gracias de antemano por cualquier consejo.

¿Qué es key.ppk? ¿Estás seguro de que es una clave privada RSA de 2048 bits?
¿Ha recordado copiar la clave pública en .ssh/authorized_keysel servidor? (Además, intente darle la -vbandera a sshpara obtener más información).
El archivo .ppk es específico de PuTTY. No funcionará con nada más. He incluido instrucciones para convertirlo en mi respuesta.

Respuestas (1)

Sobre la reutilización de su key.ppkarchivo de Windows

El archivo PPK es una clave privada específica de PuTTY. No es una clave privada portátil que funcione con ninguna aplicación basada en ssh. Solo funciona con PuTTY. Necesitas convertirlo primero. Encontré algunas instrucciones para convertirlo en un par de claves pública/privada adecuado aquí . Deberá hacer esto desde su máquina con Windows.

Eso le dará una clave privada, key.sshque funcionará con ssh en su Mac. Coloque el key.ssharchivo en su ~/.ssh/directorio. Asegúrese de que los permisos sean correctos:

% chmod 400 ~/.ssh/key.ssh

Y luego puedes usarlo con tu ~/.ssh/configarchivo así:

Host domain.com
  IdentityFile ~/.ssh/key.ssh
  User username

Si ya no tiene acceso a su máquina con Windows, deberá generar un nuevo par de claves pública/privada para usar con su servidor web.

Sobre la generación de un nuevo par de claves para usar con su Mac

Honestamente, esta es la mejor manera de ir aquí.

La autenticación sin contraseña con claves compartidas requiere que ambas máquinas tengan una parte de la clave pública/compartida. Aquí hay una receta completa para configurar un esquema de autenticación de clave compartida con dos servidores. No es realmente específico de OS X. Es específico de ssh.

Estas instrucciones asumen que host1 es su Mac y host2 es su servidor web.

Genere una clave compartida en host1 (la clave compartida será /Users/you/.ssh/webserver.puby la clave privada será /Users/you/.ssh/webserver):

% ssh-keygen -t rsa -b 2048 -f ~/.ssh/webserver
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in webserver.
Your public key has been saved in webserver.pub.
The key fingerprint is:
98:b7:fa:0f:0d:e7:7f:50:cc:9b:b4:57:db:8d:b4:03 ian@Ian-Chesals-iMac.local
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|             o   |
|       o    E * .|
|      o S .  = *=|
|       . *  . B.+|
|        o o  . o |
|       . . .  .  |
|      ..... ..   |
+-----------------+

Nota: no ingresé una contraseña para la clave porque no quiero tener que usar una contraseña cuando uso el uso.

Ahora necesita agregar la ~/.ssh/webserver.pubclave pública al ~user/.ssh/authorized_keysarchivo en host2 , su servidor web.

% ssh user@host2 'mkdir ~/.ssh;echo '`cat ~/.ssh/webserver.pub`' >> ~/.ssh/authorized_keys'

Para que esto funcione, necesitará una contraseña de acceso al host remoto. Si no tiene esto, puede dárselo ~/.ssh/webserver.puba alguien que tenga acceso al cuadro y pedirle que lo agregue al authorized_keysarchivo por usted. O hágalo desde su máquina Windows donde todavía tiene acceso.

Ahora asegúrese de que su clave privada esté segura en su Mac:

% chmod 400 ~/.ssh/webserver*

ssh puede quejarse si sus pares de claves privadas/públicas son legibles o escribibles en todo el mundo.

Finalmente, puede agregar lo siguiente a su ~/.ssh/configarchivo para invocar la combinación de teclas correcta cuando intente acceder a su servidor web:

Host domain.com
  IdentityFile ~/.ssh/webserver
  User username

Esto le dará la autenticación basada en pares de claves sin contraseña que desea.

Ian, gracias por esta respuesta. ¡Solo ponlo en práctica y funciona perfectamente!
@MattClarke impresionante!