Via ssh Dateien auf / von Server kopieren / verschieben

Alle Fragen zur Netzwerkkommunikation
navyseabear
Beiträge: 16
Registriert: So 21. Jan 2018, 09:27

Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von navyseabear »

Moin moin,
für mein Datenbankprojekt würde ich gerne Dateien vom Client (Linux) auf meinen Server (Synology NAS) via SSH kopieren oder ggf verschieben. Ebenso würde ich später gerne diese Dateien via SSH vom Server abrufen und anzeigen bzw. auf den Client kopieren.
Vielleicht habe ich auch nur Tomaten auf den Augen, doch kann ich keinen Befehl oder keinen Code finden der mir hier helfen könnte.

Daher meine Frage: Gibt es die Möglichkeit und wenn ja, gibt es dazu ein Code Beispiel, wie ich Dateien via SSH kopiere oder verschieben kann?

mfg
Tobias

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von theo »

Meinst du SFTP?
Da gibt es hier was:
http://synapse.ararat.cz/files/contrib/sftp.zip

EDIT: Hab's mir mal kurz angeschaut. Das Ist für Delphi/Windows.
Das liesse sich wahrscheinlich portieren, aber es wohl nicht ganz ohne Aufwand auf Lazarus/Linux zu übertragen.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von Socke »

Wenn es nur um einzelne Dateien geht, könntest du auch scp als externes Programm aufrufen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von six1 »

SFTP ist in SecureBridge von Devart drin.
Paket mit Source für Delphi und Lazarus kostet allerdings ein paar Steine.
Man muss für Lazarus das "Source Paket" nehmen... in den kleineren Ausgaben ist Lazarus nicht dabei.
Ich setzte das schon länger ein... geht 1a auch mit Mysql/mariadb Zugriff über den SSH Tunnel und Port Switching; kann ich empfehlen
Gruß, Michael

navyseabear
Beiträge: 16
Registriert: So 21. Jan 2018, 09:27

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von navyseabear »

Hallo,
ich habe es soweit hinbekommen. Leider weiß ich aber nun nicht, wie ich das Passwort für scp mit übergeben kann.

Code: Alles auswählen

var
  Process1 : TProcess;
begin
  Process1 := TProcess.Create(nil);
  Process1.Executable := 'scp';
  Process1.Parameters.add('-P 1223');
  Process1.Parameters.add('/home/tobias/Test.pdf');
  Process1.Parameters.Add('mariadbuser@192.168.178.40:/volume1/Datenbank');
  Process1.Execute;
end; 
Wie rufe ich scp nun korrekt auf? Ich will nicht, dass meine Frau für jede Datei die kopiert wird ein Passwort eingeben muss.

mfg
Tobias

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von Ich934 »

Option 1: SSH Config File und dort das Passwort hinterlegen.

Option 2: Keys verwenden und den als Parameter mit übergeben.

Beides geht und funktioniert bei SCP wie bei SSH gleich...
Tipp für PostgreSQL: www.pg-forum.de

navyseabear
Beiträge: 16
Registriert: So 21. Jan 2018, 09:27

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von navyseabear »

Ziel sollte es sein, dass ich jemanden mein Programm geben kann und das dann, meine Software ohne viele Eingriffe ins System oder sonstige Einstellungen sofort die Daten verschieben / kopieren kann.
Daher wäre für mich eine Lösung die ich vollständig in freePascal / Lazarus erledigen kann die Goldrandlösung.

mfg
Tobias

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von Socke »

Dann kannst du die Config-File auch per Programm anlegen und über den Parameter -F <config_file> angeben. Soweit ich herausgefunden habe, kann man dort aber kein Kennwort hinterlegen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

navyseabear
Beiträge: 16
Registriert: So 21. Jan 2018, 09:27

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von navyseabear »

Genau das ist aber was ich brauche.
Zum Hintergrund. Ich möchte eine Datenbank anlegen (habe ich schon soweit lauffähig) bei der ich auch viele Dateien mit abspeichern will. Also PDF, Videos und Bilder. Da ich die aber nicht alle in die Datenbank packen will, (zu mindestens rät mir jeder davon ab) möchte ich diese Dateien parallel zum anlegen des Datensatzes in ein Verzeichnis auf den Server verschieben. Am besten so, dass der User, in dem Fall meine Familie, keinen direkten Zugriff mehr auf diese Daten außerhalb der Datenbank hat. Daher mein Gedanke dies im Hintergrund mit scp und einem hinterlegten Passwort zu machen. Nach Möglichkeit sollte auch alles in einem Programm vereint sein und ohne zusätzliche Konfiguration oder Einstellungen funktionieren. Soweit meine Idee.
Bin natürlich für jede neue oder andere Idee zu haben und Dankbar wenn ich einen neuen Lösungsansatz mit ggf etwas Code bekommen kann.

mfg
Tobias

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von Ich934 »

Soweit ich herausgefunden habe, kann man dort aber kein Kennwort hinterlegen.
Das ist korrekt und war mein Fehler. In einer Konfigurationsdatei kann kein Passwort hinterlegt werden. Dort können nur die Parameter für die Verbindung definiert werden. Das Passwort muss dann noch eingegeben werden.

Ich würde hier eine Authentifizierung per Key machen. Jeder hat einen key und wenn der stimmt, dann klappt der Login. Einfach zu realisieren, sicherer (da viel komplexer als ein Passwort) und erlaubt einen automatisierten Login.
Tipp für PostgreSQL: www.pg-forum.de

navyseabear
Beiträge: 16
Registriert: So 21. Jan 2018, 09:27

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von navyseabear »

Sorry wenn ich jetzt vielleicht ein wenig blöd frage, doch wie mache ich das? Das mit scp habe ich gerade noch so hinbekommen. Bei dem Rest steige ich aktuell gerade aus.
Wie gesagt, meine Kenntnisse beschränken sich wirklich nur auf den Hausgebrauch.

mfg
Tobias

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von Socke »

Hier gibt's ein Tutorial, wie die Keys generiert werden: https://www.heise.de/tipps-tricks/SSH-K ... 00280.html
Am Ende muss der öffentliche Schlüssel natürlich noch auf dem Server abgelegt werden; das geht entweder manuell (auf die Dateiberechtigungen achten!) oder per Befehl ssh-copy-id (siehe Link). Dort muss dann nur einmal ein Kennwort eingegeben werden.

Willst du ssh-copy-id auch aus deinem Programm heraus im Hintergrund aufrufen, kommst du hier nicht darum hin, über TProcess die Ausgabe von ssh-copy-id auszulesen und das Kennwort dan das Programm zu übergeben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

navyseabear
Beiträge: 16
Registriert: So 21. Jan 2018, 09:27

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von navyseabear »

Uff, alles komplizierter wie ich dachte.
Im Stillen hatte ich gehofft, dass ich nur ein paar Parameter an scp übergeben muss und fertig. Oder noch besser, wenn es eine entsprechende Funktion oder einen Befehl dafür geben würde. Na mal sehen ob ich es hin bekomme. Werde ich wohl heute Abend viel zu lesen haben.

mfg
Tobias

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von Maik81SE »

Ich greife dies mal kurz auf.

Bilde mir sogar ein, das es eine mgl gab, den Befehl so zu senden.

Code: Alles auswählen

ssh <user>*<passwd>@Host
zumindest irgendwie in der Richtung hatte ich mal was im Filter.

Über dies https://wiki.ubuntuusers.de/SSH/#ssh-confighatte ich mir später mal ein Script geschrieben, ob von zB der Artbeit ein meinen Server zuzugreifen.

Somit wäre es ja eigentlich möglich das Tool, das gewünscht wird so zu schreiben, das alle Parameter max beim Start eigelesen werden und alle Files in einer Art Memolist eingetragen werden.
Zielverzeichnis rein und schon sollte der Spaß laufen.

Auf den Prozesstimer würde ich aber auch da nicht verzichten.

Jetzt aber nur noch eine Frage am rande.
unter welchen Plattformen soll es laufen?

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Via ssh Dateien auf / von Server kopieren / verschieben

Beitrag von theo »

Schon mal überlegt, einfach FTP zu nehmen?
Wenn du die Files nur in-house (hinter dem Router) verschiebst und sie nicht gerade hochbrisant sind, sehe ich da kein großes Problem.

Antworten