SSH-Schlüssel auf einen anderen Computer kopieren, damit ich dort GitHub verwenden kann?


12

Ich habe einen Remote-Server. Ich kann bereits erfolgreich auf diesen Remote-Server ssh - mein Schlüssel befindet sich authorized_keysauf dem Remote-Server.

Jetzt möchte ich von GitHub direkt auf diesen Remote-Server ziehen. Aber ich bekomme, permission denied (publickey)wenn ich es ssh -T git@github.comauf dem Remote-Server versuche .

Soll ich id_rsa.pubdirekt von meinem lokalen Computer auf den Remote-Server kopieren , oder ist das gefährlich?

Wenn dies die Antwort ist, wie geht das am besten?

Oder sollte ich einen neuen öffentlichen Schlüssel auf dem Remote-Server generieren und diesen meinem Github-Konto hinzufügen?

AKTUALISIEREN:

Hier ist die Ausgabe eines ausführlichen ssh:

~$ 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

Ich habe gerade versucht, die Weiterleitung von SSH-Agenten unter Verwendung der IP-Adresse meines Servers einzurichten: developer.github.com/guides/using-ssh-agent-forwarding Aber ich bin immer noch Permission denied (publickey)auf dem Remotecomputer.
Richard

1
Es gibt eine ausführliche Option für den Befehl ssh. Ich denke, das könnte Ihnen sagen, welche Schlüsseldateien es tatsächlich versucht. Es hat mir ein paar Mal geholfen.
Allman

Antworten:


4

Sie id_rsa.pubkönnen überall kopiert werden, ohne dass eine echte Gefahr besteht. Dies ist Ihr öffentlicher Schlüssel und für solche Dinge gedacht. Es ist die Hälfte eines Schlüsselpaares. Wenn Sie es für Orte freigeben, auf die Sie zugreifen möchten, können Sie zulassen, dass der private Schlüssel funktioniert.

Um eine Remote-Anmeldung zu ermöglichen, muss Ihr öffentlicher Schlüssel in authorized_keys( authorized_keys2auf einigen Systemen) aufgeführt sein. Ein Schlüssel in jeder Zeile in diesem Format:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Um dies zu erreichen, hängen Sie es nach dem Kopieren einfach wie folgt an die authorized_keysDatei an:cat id_rsa.pub >> ~/.ssh/authorized_keys

Die meisten vernünftigen Systeme lehnen es feige ab, die Verwendung der schlüsselbasierten Anmeldung zuzulassen, wenn der .sshOrdner über zu lose Berechtigungen verfügt. Der Ordner sollte sein 700, wenn Sie also immer noch Probleme haben:chmod 700 ~/.ssh

Außerdem sollten die Dateien im .sshOrdner 600 sein:chmod 600 ~/.ssh


Bearbeiten 1:

Die Datei selbst id_rsa.pubwird auf dem Remote-Server nicht selbst benötigt. Nur der Inhalt als Teil von authorized_keys. Ich empfehle die Ausführung ssh -vT git@github.com, um die ausführliche Protokollierung zu aktivieren, damit Sie genau sehen können, über welche Berechtigungen sie sich beschwert.

Bearbeiten 2:

Dies bedeutet, dass keiner der angebotenen Schlüssel mit den Dateien des Remote-Servers übereinstimmt. Was Sie sehen möchten, ist ungefähr so:

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

Dinge zu überprüfen:

  • Stellen Sie sicher, dass einer der privaten Schlüssel mit dem öffentlichen Schlüssel übereinstimmt, den Sie der Fernbedienung hinzugefügt haben authorized_keys
  • Stellen Sie sicher, dass der Schlüssel mit dem Benutzernamen übereinstimmt, mit dem Sie sich anmelden möchten (sollte der letzte Teil des öffentlichen Schlüssels sein).
  • Versuchen Sie, umzubenennen authorized_keysinauthorized_keys2

Vielen Dank. Mein öffentlicher Schlüssel ist ~/.ssh/authorized_keysauf dem Remote-Server aufgeführt - ich habe ihn mit hinzugefügt cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys". Dann sshed auf die Fernbedienung und lief ~$ chmod 700 ~/.ssh und $ chmod 600 ~/.ssh/authorized_keysaber immer noch bekommen, Permission denied (publickey)wenn ich versuche, ssh zu github. Sollte ich die gesamte id_rsa.pubDatei auch auf den Remotecomputer kopieren ?
Richard

@ Richard Du brauchst die Datei selbst dort nicht, nein. Obwohl ich es gerne im .ssh-Ordner aufbewahre, nur für den Fall, dass ich es brauche. Aber es ist nicht erforderlich, es ist nur etwas, was ich tue. Ich würde empfehlen, den sshin Ihrer Frage beschriebenen Befehl mit dem -vSchalter auszuführen, um genau zu sehen, über welche Berechtigungen sich ssh beschwert.
Jarmund

Vielen Dank für die Bearbeitung 2. Ich bin mir nicht sicher, wie ich den ersten Aufzählungspunkt machen soll - check that one of the private keys...- was soll ich hier tun?
Richard

Meinen Sie mit Punkt 2, dass der Schlüssel mit meinem GitHub-Benutzernamen übereinstimmen sollte? Es sieht nicht so aus :)
Richard

Die Sache ist, dass ich denselben öffentlichen Schlüssel verwenden kann, um GitHub von meinem lokalen Computer zu sshen und von ihm zu ziehen. GitHub muss also denken, dass es in Ordnung ist ...?
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

Laut Ihrer Debug-Ablaufverfolgung ist keine dieser Schlüsseldateien tatsächlich auf dem lokalen System vorhanden, und ssh hat dem Remoteserver tatsächlich keine Schlüssel angeboten. Stellen Sie sicher, dass der Schlüssel, den Sie verwenden möchten, tatsächlich auf dem Host vorhanden ist, auf dem Sie ssh ausführen, und dass die Datei den richtigen Namen hat. Wenn Sie eine andere Schlüsseldatei als eine der Standarddateien verwenden möchten, müssen Sie diese in der ssh-Befehlszeile angeben:

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

Die Schlüsseldatei existiert nicht auf dem Remote-Server, von dem ich versuche, ssh zu github, aber sie ist in authorized_keys. Ist das genug oder muss ich die Schlüsseldatei auch dort kopieren?
Richard

1
authorized_keysist für öffentliche Schlüssel, die für eingehende Verbindungen akzeptiert werden . Sie benötigen eine Kopie der privaten Schlüsseldatei, um eine ausgehende Verbindung zu einem anderen Host herzustellen. Ja, eine dieser Schlüsseldateien (id_rsa usw.) muss auf dem Host vorhanden sein, auf dem Sie ssh ausführen.
Kenster

Die -i Flagge hat mir geholfen, ein Problem zu lösen! Ich habe den ssh-Ordner auf einen anderen Computer kopiert und versucht, Remote-Git zu verwenden, wurde aber abgelehnt. Das -i hat den Tag gerettet!
Pauljohn32

2

Der Server benötigt Ihren privaten Schlüssel, um sich bei Github zu authentifizieren. Ihr öffentlicher Schlüssel wird, wie der Name schon sagt, als öffentlich angesehen, sodass die Authentifizierung nicht ausreichen kann.

Wenn Sie Github nicht auf dem Remote-Server verwenden müssen, ohne eine Verbindung über ssh hergestellt zu haben, sollten Sie die Weiterleitung von ssh-agent verwenden. Eine Anleitung dazu finden Sie auf Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .

Andernfalls sollten Sie einen neuen Schlüssel generieren und ihn mit Ihrem Konto verknüpfen.


0

Sie können den Befehl direkt eingeben.

$ cat ~ / .ssh / id_rsa.pub

Wenn Sie bereits einen SSH-Schlüssel haben, wird dieser angezeigt. Ansonsten gibt es einen Fehler. Sie müssen einen neuen Schlüssel hinzufügen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.