Ich habe einen Remote-Server. Ich kann bereits erfolgreich auf diesen Remote-Server ssh - mein Schlüssel befindet sich authorized_keys
auf 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 [email protected]
auf dem Remote-Server versuche .
Soll ich id_rsa.pub
direkt 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 [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)
auf dem Remotecomputer.Antworten:
Sie
id_rsa.pub
kö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_keys2
auf einigen Systemen) aufgeführt sein. Ein Schlüssel in jeder Zeile in diesem Format:Um dies zu erreichen, hängen Sie es nach dem Kopieren einfach wie folgt an die
authorized_keys
Datei 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
.ssh
Ordner über zu lose Berechtigungen verfügt. Der Ordner sollte sein700
, wenn Sie also immer noch Probleme haben:chmod 700 ~/.ssh
Außerdem sollten die Dateien im
.ssh
Ordner 600 sein:chmod 600 ~/.ssh
Bearbeiten 1:
Die Datei selbst
id_rsa.pub
wird auf dem Remote-Server nicht selbst benötigt. Nur der Inhalt als Teil vonauthorized_keys
. Ich empfehle die Ausführungssh -vT [email protected]
, 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:
Dinge zu überprüfen:
authorized_keys
authorized_keys
inauthorized_keys2
quelle
~/.ssh/authorized_keys
auf dem Remote-Server aufgeführt - ich habe ihn mit hinzugefügtcat ~/.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_keys
aber immer noch bekommen,Permission denied (publickey)
wenn ich versuche, ssh zu github. Sollte ich die gesamteid_rsa.pub
Datei auch auf den Remotecomputer kopieren ?ssh
in Ihrer Frage beschriebenen Befehl mit dem-v
Schalter auszuführen, um genau zu sehen, über welche Berechtigungen sich ssh beschwert.check that one of the private keys...
- was soll ich hier tun?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:
quelle
authorized_keys
. Ist das genug oder muss ich die Schlüsseldatei auch dort kopieren?authorized_keys
ist 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.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.
quelle
Sie können den Befehl direkt eingeben.
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.
quelle