Putty, SSH y claves RSA. Acceder a un servidor Linux desde Windows con Putty y claves RSA

En una entrada anterior expliqué cómo acceder por SSH a un servidor o equipo remoto sin introducir ni usuario ni contraseña entre equipos Linux o Unix (OS X incluido). En esta entrada voy a explicar cómo hacer lo mismo desde un equipo Windows, usando la aplicación de acceso remoto Putty.

Lo primero que tenemos que hacer es descargar e instalar Putty. Instala varias aplicaciones

Putty

Ejecutamos PuTTYgen para generar la clave pública/privada RSA (SSH-2) de 2048 bits. Selecciono estas dos opciones.

PuttyGen-Key-Generator

A continuación muevo el ratón por la zona vacía para generar aleatoriedad en la creación de las claves.

PuttyGen-Key-Generator

Y ya tengo generadas las 2 claves RSA.

PuttyGen-Key-Generator

Tras generar las 2 claves, las guardo, por ejemplo, en un directorio llamado “my_keys” en “Mis documentos”:

  • Clave pública: rsa-key-servidor
  • Clave privada: rsa-key-servidor.ppk

A continuación copio la clave pública haciendo clic con el botón derecho del campo que indica “Public key for pasting into OpenSSH authorized_keys file:”, usando los comandos “Seleccionar todo” y “Copiar”. Es importante comprobar que la clave empiece por el texto ssh-rsa AAAA.

PuttyGen-Key-Generator

Lo siguiente que tengo que hacer es acceder al servidor con el usuario que estoy configurando y pegar esta clave al final del archivo ~/.ssh/authorized_keys. En el peor de los casos, que no tenga creado el archivo ni el directorio .ssh, ejecuto los comandos:

# Creo el directorio
mkdir ~/.ssh
# Cambio los permisos para que solo pueda acceder el propietario
chmod 0700 ~/.ssh
# Creo el archivo vacio
touch ~/.ssh/authorized_keys
#Cambio los permisos del archivo
chmod 0644 ~/.ssh/authorized_keys

Y en este archivo “authorized_keys” tengo que pegar al final del archivo la clave pública copiada en el paso previo.

A continuación tengo que configurar Putty. Lo ejecuto.

En la sección Session introduzco los datos del servidor remoto: IP o host (campo “Host Name (or IP address)“) y puerto (campo “Port“).

Putty-RSA-login-configuration

En la sección Connection -> Data introduzco el nombre de usuario (campo “Auto-login username”) en el servidor remoto para el que estoy configurando las claves.

Putty-RSA-login-configuration

En la sección Connection -> SSH -> Auth le indico la ubicación de la clave privada (extensión .ppk) creada previamente.

Putty-RSA-login-configuration

Ya solo me queda guardar la sesión con un nombre determinado, que en este caso será la IP del servidor al que me quiero conectar, ya que es un servidor de la red local y lo identifico fácilmente. Para ello voy a la sección Session, selecciono una sesión existente (o creo una nueva introduciendo el nombre en el campo “Saved Sessions“) y hago clic en el botón “Save“.

Putty-RSA-login-configuration

Ya tengo todo configurado. Para conectarme automáticamente al servidor bastará con que haga doble clic sobre la sesión guardada.

Más información:

:wq

30 thoughts on “Putty, SSH y claves RSA. Acceder a un servidor Linux desde Windows con Putty y claves RSA

  1. UNa pregunta, he seguido el tutorial, pero una vez generas las claves dices “accedes al servidor” pero ¿cómo? no se supone que el tutorial va de cómo acceder … lo digo porque de momento no tengo acceso al servidor, es imposible para mi crear un directorio y menos pegar la clave.

    Quizá lo he entendido mal, pero desde el cPanel tampoco tengo la opción de acceder ni con applet de java al servidor. Si hay algo que pueda hacer, te lo agradezco, por lo demas se deja seguir muy bien el tutorial.

  2. Hola Carlos

    En el manual indico

    Lo siguiente que tengo que hacer es acceder al servidor con el usuario que estoy configurando y pegar esta clave al final del archivo ~/.ssh/authorized_keys.

    Obviamente tienes que tener acceso al servidor por SSH, mediante usuario y contraseña. Aquí lo que explico es cómo evitar tener que usar el usuario/contraseña y acceder directamente con el par de claves pública y privada.

  3. Osea, cuando hablás del servidor al que tenés que acceder, te referís a cada cliente?
    En realidad la generación de las claves en primera instancia lo hacés en el servidor según tengo entendido no?
    Saludos

  4. No, la generación de las claves las puedes hacer tanto en tu cliente (lo habitual) como en el servidor. Lo que tienes que indicarle al servidor la clave pública que tiene habilitado el acceso.
    Lo habitual es generar el par de claves (pública y privada) en el cliente ya que esas claves seguramente la vas a reutilizar para acceder a varios equipos remotos.

  5. Tienes que detallar de qué necesitas más información. ¿Cuál es tu problemática? ¿Puedes describirla con detalle?

  6. Estoy perdida en el paso de añadir las claves. Es la primera vez que uso linux y no entiendo muy bien dónde es… En el servidor tengo una carpeta ssh en /etc/ssh y ahí hay dos archivos: moduli y ssh_config. ¿Es ésta la carpeta o es otra ssh? porque el archivo en cuestión no está y no sé si crearlo aquí…. Y una carpeta “.ssh” con el punto delante, no se me ocurre donde debería estar ubicada. Estoy perdida, si me pudieras concretar lo agradecería mucho.

  7. hola cuando abro la sesion me dice acces denied error como solucionarlo

  8. Pues parece que con las credenciales que tienes no puedes acceder al servidor. Comprueba que tienes bien configuradas las claves en el servidor…

  9. Muchas gracias por la orientación paso a paso. Logré conectarme al servidor si mayor problema.

    Saludos!

  10. Estela primero debes poder acceder con usuario y contraseña para luego crear tus claves, la publica y la privada, la privada la copiaras en el servidor y la privada se queda en el cliente, cuando te loguees la proxima vez se utilizara ambas claves como mecanismos de autenticacion, primero trata de levantar el servidor ssh y conectarte mediante el usuario y la contraseña. Despues trata de hacerlo por medio de las claves, el archivo sshd_config es el archivo de configuracion del ssh

  11. Hola soy otro usuario que ha podido hacer completamente el servidor SSH.
    Yo estoy utilizando “Linux Debian” me imagino que si estáis con otro sistema diferente no vaya a cambiar mucho pero bueno, lo que hay que hacer es crear una carpeta oculta en el servidor llamada “.ssh” ahí tenemos que crear un fichero llamado “authorized_keys” donde va la clave pública de dicho cliente, me imagino que para crear la clave del cliente habéis introducido el comando “ssh-keygen -t dsa” el -t indica el tipo de clave que deseas crear, en mi caso utilicé el dsa aunque el rsa también es igual, vamos que una vez creada tendremos en el cliente 2 ficheros llamado “id_dsa.pub” y “id_dsa” pues la clave “id_dsa.pub” es la clave pública donde tienes que copiar su dicho contenido y pasarlo al servidor en el fichero que hemos dicho antes “authorized_keys” y ahí lo pegáis, finalmente, tenéis que configurar el servidor ssh en el archivo de configuración de “sshd_config” y buscar algo llamado “AuthorizedKeysFile” ahí le indicamos la ruta completa por ejemplo “/home/user1/.ssh/authorized_keys”, luego una vez indicada la ruta reiniciamos los servicios “/etc/init.d/ssh restart”, ya por fin, vamos al cliente y introducimos dicho comando “ssh -I /home/usuario/.ssh/id_dsa usuariodelssh@direccionip” la id_dsa es la clave privada y la que tiene el servidor es la pública, y debería de funcionar, espero poder haber resuelto dudas ^^, cualquier cosa enviadme un correo a “RaiiLKilleR@hotmail.com” un saludo ^.^

  12. Estoy muy agradecido. Scaleway (la versión de bajo rendimiento de OnlineNET, que maneja los VPS y los procesadores “lentos”) me exigía tener preconfigurada una clave SSH. El tutorial es muy sencillo, y ahora tengo algunas claves que uso también en mi servicio contratado con hostgator.

  13. Tengo un Pequeño Problema me pone esto cuando me voy a hacer el usuario en el servidor
    NEW-SSHSession : Permission denied (password).
    En línea: 1 Carácter: 1
    + NEW-SSHSession -computername 192.168.16.250 -Credential (Get-Credenti …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : SecurityError: (Renci.SshNet.SshClient:SshClient) [New-SSHSession], SshAuthenticationExc
    eption
    + FullyQualifiedErrorId : SSH.NewSshSession
    que debo hacer

  14. Jesús Amieiro como verifico lo de las credenciales por q me paso lo mismo q a albert me da refused to key

  15. Frank, tiene toda la pinta de que en el servidor solo tienes habilitado el acceso mediante usuario/contraseña y no con clave pública.

  16. Using username “miUsuario”.
    Server refused our key
    Me pone estoy a la hora de conectarme al servidor

  17. Disculpame pero no se que hacer aqui
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/usuario/.ssh/id_rsa): /home/usuario/.ssh/usuario_local

  18. Hola. Por favor que alguien me ayude con esto: No se qué contraseña entrar en el momento en que intento acceder al servidor usando PuTTY. Ya configuré la sesión correctamente: contiene los datos de Host_Name, puerto 22, tipo de conexión SSH, ya generé los archivos con las claves Privada y Pública respectivamente; en la categoría “Connection”, dentro de “SSH”, y aquí en “Auth”, en el campo “Private Key file for authentication” está ya colocada la ruta seguida del nombre del archivo que contiene la llave privada (esto lo hice usando el botón “Browse”, así que no tiene error).

    Cuando escojo la sesión y le doy “Open” le doy mi nombre de usuario y, luego me pide un password: ¿qué password le entro aquí ? – los únicos dos password que conozco son la clave Privada y la clave Pública, que son ambas datos bastante largos. Traté de copiar y pegar aquí la clave pública, pero no me acepta (muestra el mensaje “access denied”). ¿en caso de acá deba entrar la clave pública o la privada, hay manera de copiarlas y pegarlas acá ? debo necesariamente digitarla ? ¿o es que hay alguna otra clave que yo aún no tenga ese dato?.

    Gracias. Espero su ayuda.

  19. Tienes algún problema de configuración, ya que si usas autenticación por clave pública no te va a pedir nunca ni el usuario ni la contraseña.

  20. Hola. Gracias. Considerando lo que me dices, me he puesto a revisar la configuración en detalle; y en la opción “Connection” hay un panel denominado “Data”: ahí figura “Auto-login username” (aquí no tengo ningún username digitado); también figura “When username is not specified” con dos opciones de selección: “Prompt” y “Use system username ()”. Tenía seleccionada “Prompt” por lo cual al intentar iniciar la sesión siempre me ha pedido el usuario; la cambié a “Use system username ()” a ver qué sucedía, pero es mi usuario de mi computador y no un usuario del servidor . He jugado con todas estas opciones, pero aún no encuentro forma de que no me pida ningún nombre de usuario y contraseña adicional. ¿La solución estará en estas opciones o habrán otras opciones que sean las que deba cambiar ?

  21. Porque hay que crear el archivo. /.ssh/authorized_keys. Osea ssh solo lee las claves públicas en esa ubicación estos usando centos pero ese archivo no existe las claves no se pueden leer en otro ubicación. Gracias

  22. este es un tutorial imcompleto, como copias la clave generada desde el putty?, no crees q deberias haber recomendado WINCSP?

  23. Está perfectamente explicado en el texto

    “Lo siguiente que tengo que hacer es acceder al servidor con el usuario que estoy configurando y pegar esta clave al final del archivo ~/.ssh/authorized_keys. “

    y en lo que viene a continuación.

    Esta es una de las formas de hacerlo. Lo que no voy a explicar son las decenas de formas de copiar un archivo (un texto en este caso) a un servidor Linux.

Leave a Reply

Your email address will not be published. Required fields are marked *