Copie la clave ssh en otra máquina para poder usar GitHub allí.


12

Tengo un servidor remoto Ya puedo ssh con éxito en ese servidor remoto: mi clave está en authorized_keysel servidor remoto.

Ahora quiero extraer de GitHub directamente en ese servidor remoto. Pero obtengo permission denied (publickey)cuando intento ssh -T git@github.comen el servidor remoto.

¿Debo copiar id_rsa.pubdirectamente desde mi máquina local al servidor remoto, o es peligroso?

Si esta es la respuesta, ¿cuál es la mejor manera de hacerlo?

¿O debería generar una nueva clave pública en el servidor remoto y agregarla a mi cuenta de github?

ACTUALIZAR:

Aquí está la salida de un ssh detallado:

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

Acabo de intentar configurar el reenvío de agente ssh, utilizando la dirección IP de mi servidor: developer.github.com/guides/using-ssh-agent-forwarding Pero todavía estoy Permission denied (publickey)en la máquina remota.
Richard

1
hay una opción detallada en el comando ssh, creo que podría decirte qué archivos clave está intentando realmente, me ha ayudado un par de veces.
Allman

Respuestas:


4

la id_rsa.pubpueden copiar en cualquier lugar sin ningún peligro real para ella. Esta es su clave pública y está destinada a cosas como esta. Es la mitad de un par de claves, y compartirlo con los lugares a los que desea acceder es cómo permite que funcione la clave privada.

Para permitir el inicio de sesión remoto, su clave pública debe figurar en authorized_keys( authorized_keys2en algunos sistemas). Una tecla en cada línea, en este formato:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Para lograr esto, una vez que lo haya copiado, solo agréguelo al authorized_keysarchivo de esta manera:cat id_rsa.pub >> ~/.ssh/authorized_keys

La mayoría de los sistemas sanos se negarán cobardemente a permitirle usar el inicio de sesión basado en claves si la .sshcarpeta tiene permisos demasiado flojos. La carpeta debería ser 700, así que si todavía tienes problemas:chmod 700 ~/.ssh

Además, los archivos en la .sshcarpeta deben ser 600:chmod 600 ~/.ssh


Editar 1:

El archivo en sí id_rsa.pubno se requiere en el servidor remoto. Solo los contenidos, como parte de authorized_keys. Recomiendo ejecutar ssh -vT git@github.compara habilitar el registro detallado, para que pueda ver exactamente de qué permisos se queja.

Edición 2:

Esto significa que ninguna de las claves ofrecidas coincide con lo que el servidor remoto tiene en el archivo. Lo que quieres ver es algo como esto:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

Cosas para verificar:

  • Asegúrese de que una de las claves privadas sea la que coincida con la clave pública que agregó al control remoto authorized_keys
  • Asegúrese de que la clave coincida con el nombre de usuario con el que intenta iniciar sesión (debe ser la última parte de la clave pública)
  • Intenta cambiar el nombre authorized_keysaauthorized_keys2

Gracias. Mi clave pública aparece en ~/.ssh/authorized_keysel servidor remoto; la agregué usando cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys". Entonces sshed a la distancia y corrió ~$ chmod 700 ~/.ssh y $ chmod 600 ~/.ssh/authorized_keys, pero aún así obtener Permission denied (publickey)cuando trato de ssh a GitHub. ¿Debo copiar todo el id_rsa.pubarchivo en la máquina remota también?
Richard

@ Richard No necesita el archivo en sí, no. Aunque me gusta mantenerlo en la carpeta .ssh por si lo necesito. Pero no es obligatorio, es algo que hago. Recomendaría ejecutar el sshcomando descrito en su pregunta con el -vinterruptor para ver exactamente de qué permisos se queja ssh.
Jarmund

Gracias por editar 2. No estoy seguro de cómo hacer la primera viñeta check that one of the private keys...: ¿qué debo hacer aquí?
Richard

En el punto 2, ¿quiere decir que la clave debe coincidir con mi nombre de usuario de GitHub? No se parece en nada :)
Richard

Lo que pasa es que puedo usar esta misma clave pública para ssh y extraer de GitHub desde mi máquina local, ¿así que GitHub debe pensar que está bien ...?
Richard

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

Según su rastreo de depuración, ninguno de estos archivos de claves existe realmente en el sistema local, y ssh no ofreció ninguna clave al servidor remoto. Asegúrese de que la clave que desea usar realmente exista en el host donde está ejecutando ssh, y que el archivo tenga el nombre correcto. Si desea utilizar un archivo de clave que no sea uno de los archivos predeterminados, debe especificarlo en la línea de comando ssh:

ssh -i /path/to/some_key -Tv git@github.com

El archivo de clave no existe en el servidor remoto desde el que estoy tratando de enviar ssh a github, pero está dentro authorized_keys. ¿Es esto suficiente o necesito copiar el archivo de clave allí también?
Richard

1
authorized_keyses para claves públicas que se aceptarán para conexiones entrantes . Necesita una copia del archivo de clave privada para establecer una conexión saliente con otro host. Entonces, sí, uno de esos archivos clave (id_rsa, etc.) debe estar presente en el host donde está ejecutando ssh.
Kenster

¡La bandera -i me ayudó a resolver un problema! Copié la carpeta ssh a otra computadora e intentaba usar git remoto, pero me rechazaron. El -i salvó el día!
pauljohn32

2

El servidor necesita su clave privada para autenticarse en Github. Su clave pública, como su nombre lo indica, se considera pública, por lo que no puede ser suficiente para autenticarse.

Si no necesita usar Github en el servidor remoto sin haberse conectado a través de ssh, debe usar el reenvío de agente ssh. Una guía para eso está disponible en Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .

De lo contrario, debe generar una nueva clave y vincularla a su cuenta.


0

Puedes poner directamente el comando.

$ cat ~ / .ssh / id_rsa.pub

si ya tiene una clave ssh, la mostrará. De lo contrario, da error. Necesita agregar una nueva clave.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.