Forum: PC Hard- und Software [Linux] SSH Key lässt sich nicht kopieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rene K. (xdraconix)


Lesenswert?

Ich habe hier zwei Rechner, auf dem einen möchte ich Passwordless SSH 
einrichten zu dem Server.


Server:
1
draconix@server-home:~/.ssh$ ssh-keygen -t rsa -b 4096 -C "draconix@192.168.178.5"
2
Generating public/private rsa key pair.
3
Enter file in which to save the key (/home/draconix/.ssh/id_rsa):
4
Enter passphrase (empty for no passphrase):
5
Enter same passphrase again:
6
Your identification has been saved in /home/draconix/.ssh/id_rsa
7
Your public key has been saved in /home/draconix/.ssh/id_rsa.pub
8
The key fingerprint is:
9
SHA256:kd2zYsSrTqGWthf+Roiw9hUeF9bVgfb/84cyEM2+Wnc draconix@192.168.178.5
10
The key's randomart image is:
11
+---[RSA 4096]----+
12
|           . .oo.|
13
|         +o..o  .|
14
|        o.+++ .  |
15
|    .   ooo.oo . |
16
|     o oS=+o.   .|
17
|    o .o=+o..   .|
18
|   . .=ooo .....E|
19
|     o.+o ..+..oo|
20
|      ...oo. o  =|
21
+----[SHA256]-----+

auf dem Client kann ich problemlos per SSH auf den Server zugreifen. 
Jedoch kann ich nicht den Key hinzufügen:
1
pi@raspberrypi:~ $ ssh-copy-id draconix@192.168.178.5
2
/usr/bin/ssh-copy-id: ERROR: No identities found

Gebe ich den kompletten Pfad an (egal ob mit oder ohne kompletten 
Pfadangabe, ob mit User oder ohne User vor der IP - immer das gleiche):
1
pi@raspberrypi:~ $ ssh-copy-id -i .ssh/id_rsa.pub draconix@192.168.178.5
2
3
/usr/bin/ssh-copy-id: ERROR: failed to open ID file '.ssh/id_rsa.pub': No such file

Er fragt auch weder nach einem Passwort noch nach einem User ab.

Hat jemand einen Tipp?

von Philipp K. (philipp_k59)


Lesenswert?

Der Pfad stimmt nicht..

Rene K. schrieb:
> ERROR: failed to open ID file '.ssh/id_rsa.pub': No such file

von Jack V. (jackv)


Lesenswert?

Du erzeugst das Schlüsselpaar auf einer Maschine namens „server-home“, 
willst den öffentlichen Schlüssel aber von einer Maschine namens 
„raspberrypi“ aus kopieren.

von Rene K. (xdraconix)


Lesenswert?

Philipp K. schrieb:
> Der Pfad stimmt nicht..
>
> Rene K. schrieb:
>> ERROR: failed to open ID file '.ssh/id_rsa.pub': No such file

Ja ich weiß, das ist ja eben das Problem. Das File liegt aber an jenem 
Ort.
1
draconix@server-home:~/.ssh$ ls -l
2
total 16
3
-rw------- 1 draconix draconix 3389 Feb  6 13:18 id_rsa
4
-rw-r--r-- 1 draconix draconix  748 Feb  6 13:18 id_rsa.pub
5
-rw------- 1 draconix draconix 3108 Feb  6 13:29 known_hosts
6
-rw-r--r-- 1 draconix draconix 2664 Oct  8 20:01 known_hosts.old
7
draconix@server-home:~/.ssh$

und da spielt es keine Rolle was ich als Pfad angebe:
1
pi@raspberrypi:~ $ ssh-copy-id -i /home/draconix/.ssh/id_rsa.pub draconix@192.168.178.5
2
3
/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/home/draconix/.ssh/id_rsa.pub': No such file

: Bearbeitet durch User
von Jack V. (jackv)


Lesenswert?

Entweder ./.ssh/…, oder /home/draconix/.ssh/… – aber wie geschrieben: du 
bist auf der falschen Maschine.

von Rene K. (xdraconix)


Lesenswert?

Jack V. schrieb:
> Du erzeugst das Schlüsselpaar auf einer Maschine namens
> „server-home“,
> willst den öffentlichen Schlüssel aber von einer Maschine namens
> „raspberrypi“ aus kopieren.

Ja.

Also ich erzeuge den Schlüssel für den User "draconix" auf Server-Home - 
auf diesen ich Zugriff haben möchte.

Dann gehe ich an meinen Clienten und kopiere mir den Schlüssel von 
Server-Home.

Ist das nicht richtig so?!

von Jack V. (jackv)


Lesenswert?

Rene K. schrieb:
> Ist das nicht richtig so?

Nein. Du erzeugst das Schlüsselpaar auf der Maschine, von der aus du 
dich einloggen möchtest. Dort führst du dann ssh-copy-id user@zielhost 
aus, oder kopierst den öffentlichen Teil des Schlüssels manuell auf die 
Zielmaschine.

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Schnapp Dir nochmal ein Unix Grundlagen Buch, so wird das sonst nix.

Dort wird u.a. der Unterschied zwischen absoluten und relativen Pfaden 
erklärt.

Außerdem sieht es für mich danach aus dass Dir nicht klar ist auf 
welcher Maschine Du das "ssh-copy-id" Kommando ausführen musst.

von Rene K. (xdraconix)


Lesenswert?

Jim M. schrieb:
> Dort wird u.a. der Unterschied zwischen absoluten und relativen Pfaden
> erklärt.

Was wäre an der Pfadangabe falsch? Absolut fängt mit / an und relativ 
mit dem Verzeichnis... Deine Argumentation verstehe ich nicht.
1
/home/draconix/.ssh/id_rsa.pub

Jim M. schrieb:
> Außerdem sieht es für mich danach aus dass Dir nicht klar ist auf
> welcher Maschine Du das "ssh-copy-id" Kommando ausführen musst.

Genau das ist / war mein Problem.

Jack V. schrieb:
> Nein. Du erzeugst das Schlüsselpaar auf der Maschine, von der aus du
> dich einloggen möchtest. Dort führst du dann ssh-copy-id user@zielhost
> aus, oder kopierst den öffentlichen Teil des Schlüssels manuell auf die
> Zielmaschine.

Vielen Dank! Ja ich habe da völlig falsch herum gedacht :-D Danke dafür.

von bingo (Gast)


Lesenswert?

am Client
1
scp ~/.ssh/id_rsa.pub user@ipserver:/home/user/.ssh/

von bingo (Gast)


Lesenswert?

P.S. noch besser als RSA sind elliptische Kurven z.B. ECDSA oder ED25519

von Einer (Gast)


Lesenswert?

Rene K. schrieb:
> Ist das nicht richtig so?!

Nein.

Du willst dich auf dem Server einloggen. Der Server muss aber wissen, 
wer sich ohne Passwort einloggen will. Also musst Du dem Server vorher 
dein Client-Public-Key geben.

Dazu musst Du auf dem Client, (NICHT auf dem Server) ein Schlüsselpaar 
erzeugen. Anschließend kopierst Du den öffentlichen Teil vom 
Schlüsselpaar auf den Server.

Wenn Du Dich nun auf dem Server ohne Passwort einloggen willst, passiert 
stark vereinfacht ungefähr folgendes:

 - Der Server frägt, "Guten Tag. Wer will rein?"
 - Client antwortet. "draconix will rein, aber ohne Passwort"
 - Server fordert: "Alles klar, signiere diese Zufallszahl: 123"
 - Client antwortet: "Hier ist 123 mit meinem geheimen Schlüssel
   signiert"
 - Server sucht in der Liste der ihm bekannten öffentlichen
   Schlüssel nach dem öffentlichen Schlüssel für "draconix" und
   prüft die Signatur.
 - Bei Erfolg antwortet Server: "Alles klar, Du darfst rein"

von Einer (Gast)


Lesenswert?

bingo schrieb:
> am Client
> scp ~/.ssh/id_rsa.pub user@ipserver:/home/user/.ssh/

Nein. Völliger Bullshit.

von bingo (Gast)


Lesenswert?

Einer schrieb:
> bingo schrieb:
>> am Client
>> scp ~/.ssh/id_rsa.pub user@ipserver:/home/user/.ssh/
>
> Nein. Völliger Bullshit.

Natürlich geht das, ssh.copy-id macht nix anderes

von Jack V. (jackv)


Lesenswert?

bingo schrieb:
> Natürlich geht das, ssh.copy-id macht nix anderes

Natürlich macht ssh-copy-id etwas anderes: es hängt den öffentlichen 
Schlüsselteil an die authorized_keys des Users auf der Zielmaschine. Der 
sshd schaut beim Verbindungsversuch nicht die id_rsa.pub an.

von Markus M. (adrock)


Lesenswert?

bingo schrieb:
> Einer schrieb:
>> bingo schrieb:
>>> am Client
>>> scp ~/.ssh/id_rsa.pub user@ipserver:/home/user/.ssh/
>>
>> Nein. Völliger Bullshit.
>
> Natürlich geht das, ssh.copy-id macht nix anderes

Der Inhalt der lokalen .ssh/id_rsa.pub muss an den Inhalt der 
.ssh/authorized_keys auf der Gegenseite angehangen (oder im einfachsten 
Fall einfach 1:1 kopiert) werden. Zudem müssen die Zugriffsrechte im 
gesamten Pfad zur authorized_keys Datei stimmen (sofern der check nicht 
deaktiviert wurde).

WO der Schlüssel erzeugt wurde ist erstmal schnuppe, wichtig ist nur, 
dass der lokale private schlüssel mit einem der public keys in der 
.ssh/authorized_keys auf der Gegenseite (Ziel) matcht.

Mit drei Befehlen ist das alles erledigt:

1. Lokalen Key generieren

ssh-keygen -t rsa

2. PUBLIC Teil des neuen Keys zum Zielrechner kopieren

scp .ssh/id_rsa.pub <user>@<zielhost>:

3. Auf dem Zielrechner den Public key an die .ssh/authorized_keys 
anfügen

ssh <user>@<zielhost> "mkdir .ssh ; cat id_rsa.pub >> 
.ssh/authorized_keys ; chmod 755 .ssh ; chmod 644 .ssh/authorized_keys"

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Rene K. schrieb:
> Ja ich weiß, das ist ja eben das Problem. Das File liegt aber an jenem
> Ort.

Eigentlich wurde ja alles geschrieben..

Du erstellt dir für den User Pi einen privaten Schlüssel auf dem rpi.

Der öffentliche Teil davon muss in die Liste der vertrauenswürdigen Keys 
des Hosts.

Also quasi ein Schreibfehler

ssh-copy-id -i ~/.ssh/id_rsa.pub draconix@192.168.178.5

Wenn der User draconix auch auf dem Pi vorhanden ist fehlt vorher ein 
"su draconix".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.