SFTP mit Public Key

H

heinetz

Aktives Mitglied
Thread Starter
Dabei seit
07.09.2007
Beiträge
695
Reaktionspunkte
13
Hallo Forum,

ich versuche mich per SFTP mit einem Server zu verbinden. Dazu habe ich einen Public Key (martin.pem) bekommen und versuche das mit Forklift 2.5.1. Das sieht so aus:

screen 2014-10-09 um 15.11.27.JPEG

Da sich beim Click auf das Schlüssel-Icon ein File-Browser öffnet, hatte ich Martin.pem zunächst mal irgendwo abgespeichert und von dort ausgewählt ,was zu folgender Fehlermeldung führte:

screen 2014-10-09 um 15.15.03.JPEG

Dass dieses File in das Verzeichnis ~/.ssh gehört, habe ich dann schnell irgendwo gefunden und martin.pem dort hineingelegt. Jetzt sieht die Fehlermeldung so aus:

screen 2014-10-09 um 15.30.06.JPEG

Nun hatte ich auch irgendwo gelesen, dass die Rechte des Verzeichnisses ~/.ssh und die von ~/.ssh/martin.pem u.U. angepasst werden müssten:

~/.ssh drw-------
~/.ssh/martin.pem -rw-------

Auch das habe ich gemacht, aber dann kann ich mit Forklift die Datei nicht mehr auswählen … irgendwie logisch.


Kann mir jemand verraten, wie das geht?

danke für Tipps und

beste gruesse,
heinetz
 
N Ordner brauch immer selbst auch das Execute Bit (x), sonst kannst Du nicht reinschauen. Dein .ssh hat jedoch nur rw-:

Code:
 xen@ host ~ 503
 $ ls -lha .*
[..]
.ssh:
total 16K
drwx------  2 xen xen 4.0K Sep  9 20:28 .
drwxr-xr-x 35 xen xen 4.0K Oct  9 12:22 ..
-rw-------  1 xen xen  392 Feb  8  2014 authorized_keys
-rw-r--r--  1 xen xen  444 Sep  9 20:28 known_hosts
[..]

Permission denied ist eigentlich auch recht aussagekräftig. In der 1. Warnung/Error von openssh steht auch explizit, dass der Grund fürs nicht ausführen der ist, dass anderen deine Key-File zugänglich ist. Also hättest du nur group und others ändern brauchen.
 
die rechte hast schon mal richtig korrigiert für die datei.
ssh erwartet aber ~/.ssh/id_rsa , id_dsa oder id_ecdsa als standard namen.
sonst muss man den mit -i das identity file angeben…

die datei ist doch für dich lesbar, warum kann forklift die nicht wählen?
weil .ssh unsichtbar ist?
der trick bei so was ist, im terminal das verzeichnis im finder öffnen mit
open .
und dann die datei in den öffnen dialog ziehen…
 
ftp / stfp = Text-Kodierung bitte lieber auf "automatisch" stellen.
 
ok, Schritt für Schritt …

ich habe die Rechte nun wie folgt angepasst:

~/.ssh drwx-----
~/.ssh/martin.pem -rw-------

… und kann die Datei danach mit Forklift wählen. Beim Verbindungsversuch mit Forklift muss ich das Admin-Kennwort eingeben,
es gibt keine Warning die Fehlermeldung ist aber noch "Permission denied".

Wenn ich das richtig deute, ist nun mit:

~/.ssh
~/.ssh/martin.pem

… alles ok aber es müssen noch andere Files angepasst werden:

1. ~/.ssh/id_rsa … gibt's nicht
2. ~/.ssh/authorized_keys … gibt's nicht
3. ~/.ssh/known_hosts … gibt's

Sehe ich das richtig / Was kann ich tun?

gruss,
heinetz
 
ftp / stfp = Text-Kodierung bitte lieber auf "automatisch" stellen.
es gibt keine Option "automatisch"

Eines habe ich noch versucht:

Ich habe martin.pem kopiert und id_rsa.pem genannt. Geht aber auch nicht ...
 
Wenn ich das richtig deute, ist nun mit:

~/.ssh
~/.ssh/martin.pem

… alles ok aber es müssen noch andere Files angepasst werden:

1. ~/.ssh/id_rsa … gibt's nicht
2. ~/.ssh/authorized_keys … gibt's nicht
3. ~/.ssh/known_hosts … gibt's

Sehe ich das richtig / Was kann ich tun?

nein, ist nicht alles ok.
du musst
martin.pem
in das passende id_ umbenennen.
was hast denn da für einen key? RSA? DSA? ECDSA?

authorized_keys brauchst auch nicht, die ist nur da für ein pubkey login auf diesen rechner…

was passiert denn wenn du im terminal
ssh user@host
machst?
bzw gleich
sftp user@host
 
Ist hier nicht irgendwas verdreht? Du müsstest auf deinem Computer sowohl den Private als auch den Public Key haben und dann den Public Key auf den SFTP Server kopieren.
Nicht umgekehrt. Deshalb fehlt dir auch das id_rsa File - das müsste dein Private Key sein.
 
in dem pem file könnten public und private key zusammen drin sein.
 
in dem pem file könnten public und private key zusammen drin sein.

Das könnte sein, stimmt. An den Threadersteller, wenn du dir die PEM Datei in einem Texteditor anschaust, steht dort was in der Art von BEGIN PRIVATE KEY ?
 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
...
-----END RSA PRIVATE KEY-----
 
also ist es ein RSA, dann musst du es id_rsa nennen, damit ssh es so findet.

probier doch mal nach dem id_rsa benennen dann im terminal:
sftp user@host
 
lionel:~ heinetz$ sftp -vT user@example.com
sftp: illegal option -- T
usage: sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
[-D sftp_server_path] [-F ssh_config] [-i identity_file]
[-o ssh_option] [-P port] [-R num_requests] [-S program]
[-s subsystem | sftp_server] host
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host

… ging nicht

lionel:~ heinetz$ ssh -vT user@example.com
OpenSSH_5.6p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to example.com [XX.XX.XXX.XXX] port 22.
debug1: Connection established.
debug1: identity file /Users/heinetz/.ssh/id_rsa type -1
debug1: identity file /Users/heinetz/.ssh/id_rsa-cert type -1
debug1: identity file /Users/heinetz/.ssh/id_dsa type -1
debug1: identity file /Users/heinetz/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'example.com' is known and matches the RSA host key.
debug1: Found key in /Users/heinetz/.ssh/known_hosts:5
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: /Users/heinetz/.ssh/id_rsa
debug1: Trying private key: /Users/heinetz/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
lionel:~ heinetz$

… ging
 
eigentlich müsste der dich auch nach einem passwort fragen bei dem key, ist ja encrypted…
 
… einen noch: Man hatte mir einen Port mitgeteilt. Daher habe ich nochmal folgendes probiert:

Code:
lionel:~ heinetz$ ssh -vT [email]user@example.com[/email] -p 34567
OpenSSH_5.6p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to example.com [XX.XX.XX.XXX] port 34567.
debug1: Connection established.
debug1: identity file /Users/heinetz/.ssh/id_rsa type -1
debug1: identity file /Users/heinetz/.ssh/id_rsa-cert type -1
debug1: identity file /Users/heinetz/.ssh/id_dsa type -1
debug1: identity file /Users/heinetz/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: checking without port identifier
debug1: Host 'example.com' is known and matches the RSA host key.
debug1: Found key in /Users/heinetz/.ssh/known_hosts:5
debug1: found matching key w/out port
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: /Users/heinetz/.ssh/id_rsa
debug1: Trying private key: /Users/heinetz/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

… macht aber offenbar keinen Unterschied
 
Zuletzt bearbeitet von einem Moderator:
der liest halt den key nicht, ist ja auch verschlüsselt.
normal sollte der dich nach dem passwort von dem key fragen…
 
Ich bin hier zum Ersten Mal mit dieser SFTP per Public Key -Methode konfrontiert und habe leider garkeine Ahnung, was hier gerade nicht geht …


Ich habe nun nochmal den /Users/heinetz/.ssh/id_rsa.pem gelöscht und mit Forklift probiert, was passiert wenn ich /Users/heinetz/.ssh/martin.pem auswähle. Siehe da, er fragt nach einem Passwort und nach Eingabe dessen klappt
die Verbindung ganz wunderbar!

Und da lag mein Fehler

Ganz am Anfang hatte ich ja mal die Rechte von dem per-File und dem ssh-Verzeichnis geändert. Danach fragte mich Forklift mal nach 'nem Passwort … ohne lange zu lesen, habe ich automatisch das Admin-Passwort für den Rechner eingegeben.


vielen Dank für alles,
heinetz
 
Zuletzt bearbeitet:
ein anderer fehler war noch:
id_rsa.pem
statt nur
id_rsa

kein wunder, dass dann ssh den key nicht findet…
 
Zuletzt bearbeitet:
Zurück
Oben Unten