Frage zu "rsync" local2remote

Begonnen von Bartimaus, 22 November 2024, 11:41:35

Vorheriges Thema - Nächstes Thema

Bartimaus

Moin,

ich bastle immer noch an einem Rsync-Script zwecks Backup.

Es geht darum, Dateien auf einem lokalen Rechner zu einem Remoterechner zu sichern.
Bislang habe ich immer den Zielpfad vorab auf einen lokalen Ordner gemountet, und dann die Dateien gesichert. Das funktioniert solange, bis man vergisst den Pfad vorher zu mounten.
Ich könnte natürlich den Mount/Umount-Befehl auch in mein Script packen, finde ich aber "unschön".

Jetzt kann Rsync aber von Haus aus auch direkt auf einen Remotepfad sichern.

rsync /lokaler Pfad / user@remote-ip:/Zielpfad
Dabei fragt Rsync aber das Passwort des Zielrechners ab.

Jetzt habe ich aber einen passwortlosen Zugang zum Remoterechner erstellt, und wenn ich mich vom lokalen Rechner per ssh auf dem Zielrechner einlogge, klappt das jetzt auch ohne PW.
Lasse ich aber mein angepasstes Script laufen, wird wieder nach dem PW des Zielrechner gefragt.

Was habe ich hier vergessen ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

Hi,
Zitat von: Bartimaus am 22 November 2024, 11:41:35Lasse ich aber mein angepasstes Script laufen, wird wieder nach dem PW des Zielrechner gefragt.
das Script läuft mit dem gleichen User wie Dein interaktiver Test?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bartimaus

Ja,

aber werden Bash-Scripte nicht automatisch mit "Root-Rechten" ausgeführt ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

Wieso kommst Du darauf? Jeder User kann in seinem Kontext Bashscripte ausführen.

Also nochmal präziser Fragen:
  • Arbeitest Du mit ev. sudo im Script?
  • Welcher User ruft das Script auf, User fhem aus FHEM heraus? Oder aus einem Crontab?

Hintergrund: rsync braucht Zugriff auf den Private Key mit dem Du deinen "Test" durchgeführt hast. Der liegt per default: im ~/.ssh Verzeichnis des aktiven Users und darf auch nur von dem gelesen werden.
Wenn es ein andere User ist musst Du den Key im Befehl mitgeben oder für den User per "Standard" verfügbar machen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bartimaus

Erstmal zu Deinen Fragen:

- Im Script arbeite ich NICHT mit Sudo
- das Script rufe ich händisch mit "sudo bash script.sh" auf

Den PrivateKey habe ich auch mit dem User "Dietpi" erstellt, und auf den Remote/Zielserver kopiert.

Und wenn ich mich mit dem User "Dietpi" per ssh auf den Zielrechner einlogge, werde ich nicht nach dem PW gefragt.

LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

#5
Naja aber Du rufst (warum auch immer?) dein Script mit sudo auf. Damit arbeitest Du im root Kontext und hast per default keinen Zugriff mehr auf deine Umgebung, sprich er nimmt den private Key eventuell nicht aus Deinem Verzeichnis und darf ihn eigentlich nicht lesen (wenn es richtig gemacht ist).

Muss denn das Script mit sudo laufen?

Zitat von: Bartimaus am 22 November 2024, 14:55:24Den PrivateKey habe ich auch mit dem User "Dietpi" erstellt, und auf den Remote/Zielserver kopiert.
Wenn Du das wirklich getan hast, hast Du es überhaupt nicht verstanden!? Man kopiert nur den public Key in die Datei authorized_keys des Zielservers!!!

Du kannst dem Aufruf von rsync mit der Option -i den Standort von Deinen private Key übergeben, der muss dann aber von root gelesen werden dürfen. Und nein: root darf nicht automatisch alles lesen! ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bartimaus

Ha, danke Dir !!

Habe im Script jetzt die Option "-i" ergänzt und das ganze ohne "sudo" gestartet, schon funktioniert es.

Ich hatte mich wohl etwas falsch ausgedückt. Den Key habe ich gem. Deines Blogs wie folgt kopiert:

ssh-copy-id -i ~/.ssh/id_rsa <user>@<remote-system>
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

Öhh, nochmal ne Frage:

Kann man einen Server auch von 2 verschiedenen Servern "steuern" ?

Meinen BackupServer fahre ich von FHEM aus herunter (ohne PW), und von einem anderen Server sichere ich dorthin jetzt auch div. Daten.
Nachdem ich das jetzt eingestellt habe, kann ich den Server nicht mehr aus FHEM herunterfahren, weil der Key scheinbar überschrieben wurde.

Gibts dafür einen Workaroud um von 2 verschiedenen Servern ohne PW damit zu arbeiten ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

#8
Ja natürlich. Die Datei authorized_keys auf dem Server muss dafür beide public_keys enthalten.
Entweder hast Du bei Deiner Einrichtung die datei nicht ergänzt sondern überschrieben? Oder Du hast das Keypärchen auf dem FHEM Server aus versehen neu erzeugt?

Du kannst den public Key von FHEM damit im Browser anzeigen (id_rsa oder id_ed25519 anstatt id_xxx) :
{qx(cat ~/.ssh/id_xxx.pub)}und schauen ob er am Server in der Datei steht:
cat .ssh/authorized_keys
Beachte dabei die User Zuordnung! Also schau beim richtigen User auf dem Server.

Wenn der Key nicht drin steht, kannst Du ihn einfach manuell einfügen wie hier beschrieben.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bartimaus

#9
Danke Dir.

Hm, im Remoteserver stehen 4 Keys, einmal aus FHEM und 3x von meinem DietPi-Server.
Der aus FHEM steht auch drin... zumindest wird er es anhand der ersten 20 Stellen sein....

user@remote-ip: Permission denied (publickey,password,keyboard-interactive).
Scheint doch was mit dem Key zu sein.

Edith: Danke für den Link, habe die Keys mal aufgeräumt und neu generiert/kopiert. Jetzt funktioniert es von beiden Servern wie gewünscht.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

#10
Liegt es an ssh oder an sudoers?
Klappt das aus der FHEM Kommandozeile (Browser) user und host ersetzen den \ und Rest belassen!
{qx(ssh user\@host echo VomAnderenHost)}Steht was im FHEM Log?
Liegt es an der known_hosts auf dem FHEM Server?
{qx(cat ~/.ssh/known_hosts)}Da musst Du den gleichen hostkey wie auf dem Backup finden...

Kann man ev. so auch in FHEM eintragen lassen.
{qx(ssh -o StrictHostKeyChecking=no user\@host echo VomAnderenHost)}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bartimaus

Hi,

hatte meinen Beitrag editiert ohne Deine Antwort gesehen zu haben. Hätte vorher mal F5 drücken sollen.

Ich werde Deine Tips morgen nochmal befolgen, habe den Server bereits erfolgreich via FHEM heruntergefahren  ::)

Jetzt muss ich morgen nur mal prüfen, wie ich den beiden Qnaps ,,ssh copy id" beibringen kann, damit ich den rsync auch ohne pw zwischen beiden qnaps ausführen kann.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Otto123

Zitat von: Bartimaus am 23 November 2024, 18:16:20,,ssh copy id" beibringen kann, damit ich den rsync auch ohne pw zwischen beiden qnaps ausführen kann.
Wie gesagt, per Hand kopieren ist keine Zauberei - man muss nur wissen was wohin - das steht im Artikel ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bartimaus

Moin,

super, ich danke Dir.
Habe den Key jetzt auf dem Zielserver eingetragen, und mein Backup-Rsync-Script (Option "-i" & user@ziel:/Pfad) angepasst.
Die Lösung mit dem vorab mounten des Zielrechners auf einen Pfad im Quellrechner hat mir nicht wirklich gefallen, und führte oft zu Fehlern. Jetzt läuft es sauber durch.

Schönen Restsonntag noch

LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

Auch wenn es gelöst ist:
Der .ssh-Ordner wird im Home-Dir des Users eingetragen. Wie kriegt man jetzt aber das HomeDir raus? Dazu guckt man am besten auf den Rechner in der passwd-Datei nach:
Zitatgrep <username> /etc/passwd
<username>:x:1000:1000:<Name>,,,:<homedir>:/bin/bash
Natürlich muß beim grep der <username> passend ersetzt werden. Es soll passwd-Dateien von Unixen geben, die ein anderes Format haben, dieses ist mir persönlich aber noch nicht untergekommen. oder um es anders zu sagen: unter Linux ist es so ;)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html