Login und scp ohne Password: Unterschied zwischen den Versionen
Geli (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Geli (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung Markierung: visualeditor |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
http://www.schlittermann.de/doc/ssh.html | http://www.schlittermann.de/doc/ssh.html<br /> | ||
https://www.computerhope.com/unix/scp.htm | https://www.computerhope.com/unix/scp.htm<br /> | ||
====Vorbereitung==== | ====Vorbereitung==== | ||
Für cronjobs, die Dateien über Netzwerk kopieren ist Voraussetzung, dass dabei keine Password-Eingabe erforderlich ist. Die einfachste Variante ist die Nutzung der SSH mit public und private Key.<br /> | Für cronjobs, die Dateien über Netzwerk kopieren ist Voraussetzung, dass dabei keine Password-Eingabe erforderlich ist. Die einfachste Variante ist die Nutzung der SSH mit public und private Key.<br /> | ||
Zeile 19: | Zeile 19: | ||
Mit ''Server1$ ssh Server2'' sollte ein Login ohne Password-prompt erfolgen. | Mit ''Server1$ ssh Server2'' sollte ein Login ohne Password-prompt erfolgen. | ||
====bash-Skript und cronjob erstellen==== | ====bash-Skript und cronjob erstellen==== | ||
Damit sollte auch scp (secure copy) ohne Passwordangabe funktionieren und wir können bash-Skript und | Damit sollte auch scp (secure copy) ohne Passwordangabe funktionieren und wir können ein bash-Skript (piccopy.sh) und einen crontab-Eintrag erstellen. | ||
#!/bin/bash | #!/bin/bash | ||
# Script holt weather.jpg von raspicam und kopiert dieses ins Verzeichnis html | # Script holt weather.jpg von raspicam und kopiert dieses ins Verzeichnis html | ||
Zeile 25: | Zeile 25: | ||
scp -pq pi@10.0.0.141:/media/usbhdd/webpic/weather.jpg /home/pi/. | scp -pq pi@10.0.0.141:/media/usbhdd/webpic/weather.jpg /home/pi/. | ||
sudo mv /home/pi/weather.jpg /var/www/html/. | sudo mv /home/pi/weather.jpg /var/www/html/. | ||
Das JPEG wird zuerst in das User-Directory kopiert, da ein ''sudo scp'' die Angabe eines Password verlangt. ''sudo mv'' funktioniert nur im Userkontext und nicht im Systemkontext (root). | |||
-p Preserves modification times, access times, and modes from the original file. | |||
-q Disables the progress meter. | |||
Der crontab-Eintrag sieht folgendermaßen aus: | |||
*/5 * * * * /home/pi/piccopy.sh | |||
Das JPEG wird zuerst in das User-Directory kopiert, da ein ''sudo scp'' die Angabe eines Password verlangt. ''sudo mv'' funktioniert so (mit sudo) nur im Userkontext und nicht im Systemkontext (root). | |||
Den CRON-Logfile findet man: | |||
<code>grep CRON /var/log/syslog</code> |
Aktuelle Version vom 18. Januar 2023, 18:58 Uhr
http://www.schlittermann.de/doc/ssh.html
https://www.computerhope.com/unix/scp.htm
Vorbereitung
Für cronjobs, die Dateien über Netzwerk kopieren ist Voraussetzung, dass dabei keine Password-Eingabe erforderlich ist. Die einfachste Variante ist die Nutzung der SSH mit public und private Key.
Wichtiger Hinweis: das ganze Verfahren funktioniert nur, wenn die User-Directorys im home-Verzeichnis über die passenden Zugriffsrechte verfügen, d.h. sie dürfen nur vom Eigentümer beschreibbar sein. Es ist keine gute Idee, das home-Verzeichnis etwa für den Samba-Zugriff mit chmod 777 zu öffnen. Folgende Zugriffsrechte sollten bestehen:
userdirectory 755 .ssh 700 .ssh/id_rsa 600
Gegeben sei folgendes Szenario: auf Server2 läuft alle 5 Minuten ein cronjob, der ein JPEG in das Directory webpic stellt. 20 Sekunden später soll auf Server1 ein cronjob laufen, der das Bild abholt und in das Directory html auf Server1 stellt. Bei nicht vorhandener Namesauflösung müssen die IP-Adressen verwendet werden.
Public und private Keys erzeugen
Auf Server1 erzeugen wir die erforderlichen Keys.
Server1$ ssh-keygen
Die Fragen nach file, passphrase und passphrase again beantworten wir mit <ENTER>.
Public Key auf Server2 kopieren
Server1$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@Server2
Dieser Befehl fügt die Keys der Datei .ssh/authorized_key hinzu.
Login ohne Password
Mit Server1$ ssh Server2 sollte ein Login ohne Password-prompt erfolgen.
bash-Skript und cronjob erstellen
Damit sollte auch scp (secure copy) ohne Passwordangabe funktionieren und wir können ein bash-Skript (piccopy.sh) und einen crontab-Eintrag erstellen.
#!/bin/bash # Script holt weather.jpg von raspicam und kopiert dieses ins Verzeichnis html sleep 20s # waits 20 seconds scp -pq pi@10.0.0.141:/media/usbhdd/webpic/weather.jpg /home/pi/. sudo mv /home/pi/weather.jpg /var/www/html/.
-p Preserves modification times, access times, and modes from the original file. -q Disables the progress meter.
Der crontab-Eintrag sieht folgendermaßen aus:
*/5 * * * * /home/pi/piccopy.sh
Das JPEG wird zuerst in das User-Directory kopiert, da ein sudo scp die Angabe eines Password verlangt. sudo mv funktioniert so (mit sudo) nur im Userkontext und nicht im Systemkontext (root).
Den CRON-Logfile findet man:
grep CRON /var/log/syslog