Meldet ssh-copy-id -i blah.pub user@host
sich mit der öffentlichen Schlüsselform des durch -i angegebenen privaten Schlüssels an, oder erfolgt die Anmeldung mit ~/.ssh/id_rsa
?"
Wenn die Antwort lautet, dass die Anmeldung mit ~/.ssh/id_rsa, / dem Schlüssel erfolgt, den SSH standardmäßig verwendet, und nicht mit der privaten Schlüsselform des mit -i angegebenen öffentlichen Schlüssels, warum tritt hier ein Fehler auf?
Ich habe ein privates und ein öffentliches Schlüsselpaar, rodney und rodney.pub. Wenn ich die Datei rodney in roddney umbenenne und dann ssh-copy-id -i ./rodney.pub user@ip ausführe, erwarte ich, dass es sich anmeldet und die Anhänge ausführt, aber ich erhalte die Fehlermeldung „FEHLER: ID-Datei ‚./rodney‘ konnte nicht geöffnet werden: Datei nicht vorhanden“. Wenn ich roddney in rodney umbenenne, erhalte ich diese Fehlermeldung nicht. Warum sollte ssh-copy-id den privaten Schlüssel rodney benötigen oder sich darum kümmern, wenn es nur ssh ausführt (das standardmäßig id_rsa zum Anmelden verwendet) und dann rodney.pub kopiert?
Antwort1
Meldet sich „ssh-copy-id -i blah.pub user@host“ mit der privaten Schlüsselform des mit -i angegebenen öffentlichen Schlüssels an oder erfolgt die Anmeldung mit „~/.ssh/id_rsa“?
Die Anmeldung erfolgt nicht mit der privaten Schlüsselform des mit -i angegebenen öffentlichen Schlüssels.
Die Anmeldung erfolgt mit dem Schlüssel, den SSH standardmäßig verwendet. ~/.ssh/id_rsa (wenn SSH-Agent ausgeführt wird, könnte SSH jedoch möglicherweise andere Schlüssel ausprobieren, aber so oder so … die Anmeldung erfolgt nicht mit der privaten Schlüsselform des mit -i angegebenen öffentlichen Schlüssels). Nehmen wir an, Sie haben SSH-Agent nicht ausgeführt, was meiner Meinung nach auch die Annahme in der Frage ist.
Wenn die Antwort lautet, dass die Anmeldung mit ~/.ssh/id_rsa, / dem Schlüssel erfolgt, den SSH standardmäßig verwendet, und nicht mit der privaten Schlüsselform des mit -i angegebenen öffentlichen Schlüssels, warum tritt hier ein Fehler auf?
Ich habe ein privates und ein öffentliches Schlüsselpaar, rodney und rodney.pub. Wenn ich die Datei rodney in roddney umbenenne und dann ssh-copy-id -i ./rodney.pub user@ip ausführe, erwarte ich, dass es sich anmeldet und die Anhänge ausführt, aber ich erhalte die Fehlermeldung „FEHLER: ID-Datei ‚./rodney‘ konnte nicht geöffnet werden: Datei nicht vorhanden“. Wenn ich roddney in rodney umbenenne, erhalte ich diese Fehlermeldung nicht. Warum sollte ssh-copy-id den privaten Schlüssel rodney benötigen oder sich darum kümmern, wenn es nur ssh ausführt (das standardmäßig id_rsa zum Anmelden verwendet) und dann rodney.pub kopiert?
Ich habe vor einiger Zeit mit einem SSH-Experten darüber gesprochen.
Mein Anwendungsfall war, dass ich einen Laptop und einige VPSs hatte und einen VPS per SSH/SFTP mit allen anderen verbinden wollte. Mein Laptop hatte bereits SSH-Zugriff auf alle VPSs.
Ich hätte das Schlüsselpaar auf dem Laptop generieren und dann den öffentlichen Schlüssel per SSH-Kopie auf alle VPS übertragen können. Anschließend hätte ich den privaten Schlüssel, den ich auf dem Laptop generiert hatte, auf den ersten VPS übertragen oder kopieren können.
Aber was ich getan habe (was zu einem Fehler führte, der mich verwirrte und mich nachfragen ließ), war, dass ich das Schlüsselpaar auf meinem Laptop generierte und den privaten Schlüssel, den ich generiert hatte, vom Laptop auf den ersten VPS kopierte. Dann löschte ich diesen privaten Schlüssel von meinem Laptop, weil ich (fälschlicherweise) dachte, dass ich ihn auf dem Laptop nicht mehr brauche. Da (ich dachte eigentlich richtig) ssh-copy-id ihn nicht verwenden wird, um sich bei einem meiner VPSs anzumelden. Also tat ich das ssh-copy-id -i blah.pub user@IPofFirstVPS
und bekam einen Fehler.
ssh-copy-id benötigt das Schlüsselpaar, also sowohl den privaten als auch den öffentlichen Schlüssel.
Wenn Sie dies tun ssh-copy-id -i blah.pub user@host
, wird die private Schlüsselform der angegebenen öffentlichen Schlüsseldatei erwartet.
Wenn Sie das tun würden, ssh-copy-id blah
würde es .pub in den Dateinamen schreiben und es wird ausgeführt ssh-copy-id blah.pub
. Sie können also auch .pub ans Ende setzen, d. h. den Dateinamen des öffentlichen Schlüssels angeben, statt den Dateinamen des privaten Schlüssels.
Aber dass der private Schlüssel benötigt wird, ist nur eine „Sicherheitsüberprüfung“. In dem Sinne ist es nur ein Test, den es vor seiner Arbeit durchführt, indem es den öffentlichen Schlüssel an die Remote-Datei authorized_keys anfügt. Theoretisch muss es diese Prüfung nicht einmal durchführen, um sich anzumelden und anzufügen.
Es geht davon aus bzw. vermutet (und rät möglicherweise falsch), dass Sie in Zukunft möglicherweise von der Maschine, von der aus Sie „ssh-copy-id“ ausgeführt haben, per SSH auf den Remote-Host zugreifen und dabei die private Schlüsselform der von Ihnen angegebenen öffentlichen ID verwenden und dass Sie daher diesen privaten Schlüssel auf der Maschine benötigen, von der aus Sie „ssh-copy-id“ ausführen! (Es geht nicht davon aus, dass Sie das Schlüsselpaar vielleicht mit der Absicht generiert haben, diesen privaten Schlüssel auf anderen Maschinen zu verwenden, sondern dass Sie „ssh-copy-id“ nur von der Maschine aus verwenden, auf der Sie gerade arbeiten, weil diese Maschine per SSH auf viele Ihrer anderen Maschinen zugreift).
ssh-copy-id meldet sich nicht mit der privaten Schlüsselform des öffentlichen Schlüsselpaars an.
ssh-copy-id hat eine Option -o, mit der Sie einen privaten Schlüssel für die Anmeldung angeben können.
Ich habe keinen SSH-Agent eingerichtet, daher stellt mein SSH eine Verbindung mit dem privaten Schlüssel ~/.ssh/id_rsa her, und das ist der private Schlüssel, mit dem sich ssh-copy-id anmeldet. Der öffentliche Schlüssel ist in -i angegeben. Es wird jedoch trotzdem geprüft, ob der private Schlüsseldateiname des in -i angegebenen öffentlichen Schlüssels existiert!
„ssh-copy-id“ ist ein Skript, z. B. beginnt es sogar mit „ #!/bin/sh
, sodass jemand, der sich mit Skripten auskennt, es sogar mit cat/vim überprüfen könnte.“