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

3

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 utilizamos contraseñas.
Vengo de Windows y en Windows utilicé PuTTY para conectarme a mi servidor mediante un archivo .ppk generado mediante 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 el siguiente contenido ...

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

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

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

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

    
pregunta Clarkey 15.04.2012 - 18:22

1 respuesta

6

Sobre la reutilización de su archivo key.ppk de Windows

El archivo PPK es una clave privada específica de PuTTY. No es una clave privada portátil que funciona con cualquier aplicación basada en ssh. Simplemente funciona con PuTTY. Necesitas convertirlo primero. He encontrado algunas instrucciones para convertirlo en un par de claves públicas / privadas adecuadas aquí . Tendrá que hacer esto desde su máquina Windows.

Eso te dará una clave privada, key.ssh , que funcionará con ssh en tu Mac. Coloque el archivo key.ssh en su directorio ~/.ssh/ . Asegúrese de que los permisos son correctos:

% chmod 400 ~/.ssh/key.ssh

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

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

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

Sobre cómo generar un par de llaves nuevo para usar con tu 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 las claves compartidas / públicas. Aquí hay una receta completa para configurar un esquema de autenticación de clave compartida con dos servidores. No es realmente OS X específico. Es ssh-específico.

Estas instrucciones suponen que host1 es tu Mac y host2 es tu servidor web.

Genere una clave compartida en el host1 (la clave compartida será /Users/you/.ssh/webserver.pub y 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 [email protected]
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 esta.

Ahora debe agregar la clave ~/.ssh/webserver.pub public al archivo ~user/.ssh/authorized_keys en host2 , su servidor web.

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

Para que esto funcione, necesitarás acceso con contraseña al host remoto. Si no tiene esto, puede darle ~/.ssh/webserver.pub a alguien que tenga acceso al cuadro y pedirle que lo agregue al archivo authorized_keys para usted tal vez. O hazlo desde tu máquina de Windows donde todavía tienes acceso.

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

% chmod 400 ~/.ssh/webserver*

ssh puede obtener quejas si sus pares de claves públicas / privadas son legibles o se pueden escribir en todo el mundo.

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

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

Esto le proporcionará la autenticación sin contraseña, basada en par de claves que desee.

    
respondido por el Ian C. 15.04.2012 - 18:53

Lea otras preguntas en las etiquetas