scp'ing mit Schlüsseldatei als Parameter, Wie kann ich das tun, wenn möglich?


51
scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location

Ist das oben genannte Skript falsch? Mache ich es nicht richtig?

Ich ging in das .sshVerzeichnis und sah, dass der Remote-Server in der known_hostsDatei ist.

Wenn ich aber gewöhnliches scp ohne Datei als Parameter mache, fragt es immer noch nach dem Passwort

scp events*$date*_QA.log $remote_user@$remote_server:$remote_location

Wie kann ich die Schlüsseldatei in meinen Befehl aufnehmen?

sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj

Antworten:


67
 -i identity_file
         Selects the file from which the identity (private key) for public
         key authentication is read.  This option is directly passed to
         ssh(1).

Verwenden Sie ~/.ssh/id_rsa.


noch nach Passwort fragensh-3.2$ scp -i ~/.ssh/id_rsa test_QA.log user@server:location user@server's password:

@tech_learner seltsam, wie das bei mir funktioniert
whitequark

2
Möglicherweise müssen Sie einen tatsächlichen Pfad wie in / home / user / anstelle von ~ verwenden. Das schien mir geholfen zu haben.
Evan Darwin

1
Sie möchten den Inhalt von ~ / .ssh / id_rsa.pub des lokalen Benutzers in der Datei authorized_keys des Remote-Servers ablegen. Es ist normalerweise in ~ / .ssh / authorized_keys. Sie müssen auch sehr genau über die Dateiberechtigungen für Dateien in ~ / .ssh nachdenken, damit sie nur minimal zugänglich sind. sshd ist sehr speziell in Bezug auf die Dateiberechtigungen.
JR Lawhorne

Unter Mac OS X funktionierte es nur, wenn dies -i ~/.ssh/id_rsadie erste Option war. So dies gearbeitet: scp -i ~/.ssh/mykey.pem -r dir user@remote_server:~/. Dies hat nicht funktioniert:scp -r -i ~/.ssh/mykey.pem dir user@remote_server:~/
Asmaier

1

Dies könnte einem anderen Noob helfen.

[Ich weiß, dass dies ein überflüssiges zirkuläres Beispiel ist, aber es ist gut zu veranschaulichen] Szenario:

  1. ssh von Mac -> Ubuntu
  2. scp-Dateien von Mac -> Ubuntu
  3. Schließen Sie ssh- und scp-Dateien von Ubuntu -> Mac

Ich hatte nur ssh-Schlüssel auf meinem Mac erstellt (über ssh-keygen) und sie mit dem Computer geteilt, auf dem Ubuntu ausgeführt wird (ssh-copy-id). So konnte ich Dateien kopieren, während ich von einem Ubuntu-Computer auf meinem Mac angemeldet war, aber nicht umgekehrt.

Lösung: Ich musste auf der Ubuntu-Maschine SSH-Schlüssel erstellen und diese mit meinem Mac teilen. Dann konnte ich den folgenden Befehl erfolgreich auf dem Ubuntu-Rechner ausführen

Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38

Auf dem Mac

ssh-keygen
ssh-copy-id ubuntu@192.168.1.38

ssh ubuntu@192.168.1.38

# Now on Ubuntu
ssh-keygen
ssh-copy-id MAC@192.168.1.40

Und jetzt sollte der folgende Befehl die Datei kopieren, ohne nach dem Kennwort für MAC zu fragen

sudo scp -i /home/ubuntu/.ssh/id_rsa MAC@192.168.1.40:~/Documents/Fluff/Version-Control/tools/pull.sh .

0

Getestet und korrigiert über diese Anleitung: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

Die Anweisungen hier haben beim Testen meiner Boxen (CentOS / CentOS) einwandfrei funktioniert. Ich stelle mir vor, das Problem ist, dass Ihre SSH-Schlüssel nicht an einen Benutzernamen gebunden sind.

Beispiel: Katze authorized_keys # auf Box Ich bin SSHing / scpin' auf ssh-rsa BLAHBLAHBLAHBLAH / zAcS4kD9pyPAjD3 / gd5D1rcQa6IztCMR9yMXiGFnxviWsT8 / oYevZw25k4yREuA8ibLKC9peH1X4LK1E + n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ / y0Ay2A / KmaC14YrDfqwm7 + ibTiUp4hOO8I6eIPmwwGn / 2hs0SewJXisGqUx2v my_user@machine.local #benutzername ist mit dem Schlüssel verknüpft und ist ein autorisierter Host

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.