Tengo un servidor remoto Ya puedo ssh con éxito en ese servidor remoto: mi clave está en authorized_keys
el servidor remoto.
Ahora quiero extraer de GitHub directamente en ese servidor remoto. Pero obtengo permission denied (publickey)
cuando intento ssh -T [email protected]
en el servidor remoto.
¿Debo copiar id_rsa.pub
directamente 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 [email protected]
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
Permission denied (publickey)
en la máquina remota.Respuestas:
la
id_rsa.pub
pueden 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_keys2
en algunos sistemas). Una tecla en cada línea, en este formato:Para lograr esto, una vez que lo haya copiado, solo agréguelo al
authorized_keys
archivo 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
.ssh
carpeta tiene permisos demasiado flojos. La carpeta debería ser700
, así que si todavía tienes problemas:chmod 700 ~/.ssh
Además, los archivos en la
.ssh
carpeta deben ser 600:chmod 600 ~/.ssh
Editar 1:
El archivo en sí
id_rsa.pub
no se requiere en el servidor remoto. Solo los contenidos, como parte deauthorized_keys
. Recomiendo ejecutarssh -vT [email protected]
para 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:
Cosas para verificar:
authorized_keys
authorized_keys
aauthorized_keys2
fuente
~/.ssh/authorized_keys
el servidor remoto; la agregué usandocat ~/.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í obtenerPermission denied (publickey)
cuando trato de ssh a GitHub. ¿Debo copiar todo elid_rsa.pub
archivo en la máquina remota también?ssh
comando descrito en su pregunta con el-v
interruptor para ver exactamente de qué permisos se queja ssh.check that one of the private keys...
: ¿qué debo hacer aquí?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:
fuente
authorized_keys
. ¿Es esto suficiente o necesito copiar el archivo de clave allí también?authorized_keys
es 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.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.
fuente
Puedes poner directamente el comando.
si ya tiene una clave ssh, la mostrará. De lo contrario, da error. Necesita agregar una nueva clave.
fuente