SFTP Nutzung

MyOOS [Dumper]ist ein Sicherungsprogramm für MySQL-Datenbanken. Damit können Sicherungskopien der Daten (Forum, Shop, Blog, usw.) erstellt und bei Bedarf auch wieder hergestellt werden. Besonders bei Web-Space ohne Shell-Zugang bietet sich MyOOS [Dumper] als sinnvolle Alternative an.
HaioPaio
Beiträge: 5
Registriert: 22.04.2021, 09:34

SFTP Nutzung

Beitrag von HaioPaio »

Hallo zusammen
Ich würde gerne die Dumps per SFTP übertragen, statt FTP oder FTPSSL.
Gibt es hierfür eine Möglichkeit?
L.G. HaioPaio
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Hallo,

willkommen.

Selbstverständlich kann man seine SFTP-Zugangsdaten verwenden. Hier ist dann der Port nicht mehr 21, sondern oft 22.

Ich hoffe, die Antwort hilft weiter?


Schönes Wochenende

Ralf
HaioPaio
Beiträge: 5
Registriert: 22.04.2021, 09:34

Re: SFTP Nutzung

Beitrag von HaioPaio »

Leider klappt das nicht wenn ich port 22 eingebe. Der Dumper meldet dann Verbindung nicht möglich!
Mit Port 21 klappt es, aber nur ftp.
Wenn ich mit Filezilla SSH SFTP mit den gleichen Credentials verwende kann ich die SFTP Verbindung herstellen.
Allerdings bleibt dort das Port Feld leer.
Sprichst du von SSL-FTP oder wirklich von SFTP?
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Hallo,

upps....

Es reicht leider nicht aus, nur den Port zu ändern....

Zurzeit ist SFTP Support noch nicht eingebaut.

Schönes Wochenende

Ralf
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Hallo,

eine Datensicherung per sFTP ist jetzt möglich. Voraussetzung ist mind. PHP 7.2

MySQL Dumper Version ab 5.0.4 - Veröffentlichung am 04.05.
viewtopic.php?f=16&t=2493


Beste Grüße

Ralf
HaioPaio
Beiträge: 5
Registriert: 22.04.2021, 09:34

Re: SFTP Nutzung

Beitrag von HaioPaio »

Hallo Ralf

Hab gerade 504 installiert. SFTP kann man prima konfigurieren und den Verbindungstest machen. Alles klappt.
Jedoch werden keine Daten übertragen und im Perl Log fehlt auch der Eintrag für die sftp Übertragung.
ftp funktioniert weiterhin und steht dann auch im log.
PHP Version ist 7.4.14

Hast du einen Tip was ich prüfen könnte?
HaioPaio
Beiträge: 5
Registriert: 22.04.2021, 09:34

Re: SFTP Nutzung

Beitrag von HaioPaio »

Mir ist aufgefallen dass im 504 Zip die 503 cronjob.pl enthalten ist. In diesem Script finde ich nichts zu sftp.
Gibt es eine neuere Version?
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Hallo,

ja - stimmt - wir sollten die Perl Scripte wirklich mal löschen.

Ich habe diese zwar vor wenigen Wochen auf einem Server mal getestet... aber die machen hier nur unnötigen Aufwand.

Und ja - sFTP fehlt in diesen Scripten. Man kann uns die notwendigen Änderungen über Pull Requests via GitHub.
https://github.com/r23/MyOOS/pulls

senden. Nach einer Prüfung bauen wir diese ein.

Viele Grüße

Ralf
HaioPaio
Beiträge: 5
Registriert: 22.04.2021, 09:34

Re: SFTP Nutzung

Beitrag von HaioPaio »

Ralf
Ich verstehe schon dass ihr andere Prioritäten habt. Da gibt es nichts zu nörgeln.
Wenn ich eine Sicherung über php manuell auslöse funktioniert das sftp ja prima.
Mein Ziel ist es die Sicherung über einen Cronjob anzustossen. Da kenne ich nur den Weg über das Perl Skript.
Zum Programmieren fehlen mir die Kenntnisse. Ich würde ansonsten gerne helfen.
Ich frage mal in PHPBB Kreisen herum ob jemand Lust und Zeit hat da mit zu helfen.

Ich wünsche euch viel Glück und Erfolg mit eurem Hauptprodukt.
JanRadem
Beiträge: 1
Registriert: 23.11.2023, 10:09

Re: SFTP Nutzung

Beitrag von JanRadem »

Hallo zusammen,

ich erschrecke mich grade über die Aussage "wir sollten die Perl Scripte wirklich mal löschen".

Ist damit gemeint, die PERL Skripte für den Cronjob zu entfernen?
Das ist doch eines der wichtigsten Kerne vom Dumper?

Und da auch ich vor dem Problem stehe, das der Versand offenbar nicht via sftp funktioniert: Ist das mittlerweile möglich?
Ich habe leider nichts schlaues dazu gefunden?!

Vielen Dank für Tipps :)
(Und viiiiielen Dank, dass Ihr den Dumper weiter supported! Lebensretter :)
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

JanRadem hat geschrieben: 23.11.2023, 10:14 Und da auch ich vor dem Problem stehe, das der Versand offenbar nicht via sftp funktioniert: Ist das mittlerweile möglich?
Ich habe leider nichts schlaues dazu gefunden?!
Welches SFTP-Modul steht dir zur Verfügung?

Ich habe eben meine KI für die Programmierung gefragt und erhielt folgende Antwort:

Um SFTP in Perl zu nutzen, können Sie verschiedene Module verwenden, die Ihnen die Möglichkeit geben, Dateien sicher über eine SSH-Verbindung zu übertragen und zu verwalten. Einige Beispiele für solche Module sind:

8<--

- Net::SFTP: Ein reines Perl-Modul, das das SFTP-Protokoll implementiert. Sie können es mit dem Konstruktor Net::SFTP->new($host, %args) verwenden, um eine neue SFTP-Verbindung mit einem entfernten Host zu öffnen. Sie können dann Methoden wie $sftp->get($remote, $local) oder $sftp->put($local, $remote) verwenden, um Dateien zu holen oder zu senden. Sie können auch andere Operationen wie $sftp->ls($dir) oder $sftp->mkdir($dir) ausführen, um Verzeichnisse auf dem Server zu listen oder zu erstellen. Weitere Informationen finden Sie in der Dokumentation².
- Net::SFTP::Foreign: Ein anderes reines Perl-Modul, das das SFTP-Protokoll implementiert, aber verschiedene Backends verwenden kann, um die SSH-Verbindung zu verwalten. Das empfohlene Backend für Windows ist Net::SFTP::Foreign::Backend::Net_SSH2, das Net::SSH2 verwendet, um die Verschlüsselung und Authentifizierung zu handhaben. Sie können es mit dem Konstruktor Net::SFTP::Foreign->new(ssh2 => $ssh2, backend =>

- 'Net_SSH2') verwenden, wobei $ssh2 ein Net::SSH2-Objekt ist, das die Verbindung zum Server herstellt. Sie können dann ähnliche Methoden wie bei Net::SFTP verwenden, um Dateien zu übertragen und zu verwalten. Weitere Informationen finden Sie in der Dokumentation.

- Net::SSH::Any: Ein Modul, das eine einheitliche Schnittstelle für verschiedene SSH-Clients und -Module bietet, einschließlich Net::SSH2, Net::OpenSSH und plink. Es bietet auch sein eigenes Backend für Net::SFTP::Foreign, so dass Sie es verwenden können, um SFTP-Operationen auszuführen. Sie können es mit dem Konstruktor Net::SSH::Any->new($host, %args) verwenden, um eine neue SSH-Verbindung mit einem entfernten Host zu öffnen. Sie können dann die Methode $ssh->sftp verwenden, um ein Net::SFTP::Foreign-Objekt zu erhalten, mit dem Sie Dateien übertragen und verwalten können. Weitere Informationen finden Sie in der Dokumentation.

Sie können diese Module entweder von CPAN installieren oder, wenn Sie Ubuntu verwenden, die entsprechenden Pakete aus den Repositories installieren. Zum Beispiel ist Net::SFTP::Foreign als libnet-sftp-foreign-perl verfügbar.


(1) Net::SFTP - Secure File Transfer Protocol client - metacpan.org. https://metacpan.org/pod/Net::SFTP.
(2) Perl - Best way to establish an SFTP connection on windows. https://stackoverflow.com/questions/498 ... on-windows.
(3) SFTP Examples for Perl. https://www.example-code.com/perl/sftp.asp.
(4) How do you install the Net::SFTP module on Ubuntu?. https://stackoverflow.com/questions/154 ... -on-ubuntu.
(5) Net::FTPServer - A secure, extensible and configurable Perl FTP server .... https://metacpan.org/pod/Net::FTPServer.
(6) undefined. http://www.openssh.com/txt/draft-ietf-s ... fer-00.txt.

8<--

weitere Rückfrage:

8<--
Um festzustellen, welches Perl-Modul Ihr Provider für SFTP zur Verfügung stellt, können Sie verschiedene Methoden ausprobieren:

- Sie können die Dokumentation Ihres Providers lesen oder ihn direkt kontaktieren, um zu erfahren, welche Module er unterstützt oder installiert hat.

- Sie können versuchen, ein Perl-Modul zu verwenden, das SFTP implementiert, und sehen, ob es erfolgreich geladen wird oder nicht. Zum Beispiel können Sie den folgenden Befehl in der Shell ausführen, um zu testen, ob Net::SFTP installiert ist:

`perl -MNet::SFTP -e 1`

Wenn Sie keine Fehlermeldung erhalten, bedeutet das, dass das Modul vorhanden ist. Wenn Sie eine Fehlermeldung wie "Can't locate Net/SFTP.pm in @INC" erhalten, bedeutet das, dass das Modul fehlt oder nicht gefunden werden kann.
- Sie können die instmodsh-Utility verwenden, um eine Liste aller installierten Perl-Module anzuzeigen. Geben Sie dazu den folgenden Befehl in der Shell ein:

`instmodsh`

Sie werden dann aufgefordert, einen Befehl aus einer Liste von Optionen auszuwählen. Geben Sie `l` ein, um alle installierten Module aufzulisten, oder `m <module>` ein, um ein bestimmtes Modul auszuwählen und Informationen darüber zu erhalten. Geben Sie `q` ein, um das Programm zu beenden. Weitere Informationen finden Sie in [diesem Artikel](^4^).


(1) Perl - Easy way to check installed modules on Mac and Ubuntu - DevTut. https://devtut.github.io/perl/easy-way- ... buntu.html.
(2) How can I check if a Perl module is installed on my system from the .... https://stackoverflow.com/questions/103 ... mmand-line.
(3) How to check if perl module is available? - Stack Overflow. https://stackoverflow.com/questions/326 ... -available.
(4) How to check if Perl module is installed - Cartika. https://support.cartika.com/portal/en/k ... -installed.

8<--

Ich sehe in meiner Entwicklungsumgebung bei meinem Provider nach, welches Modul mir für SFTP zur Verfügung gestellt wird.

Vielleicht finden wir eine Basis.

Beste Grüße

Ralf
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Hallo,

ich habe folgende Erweiterung für das ... test..pl Script geschrieben

Code: Alles auswählen

print "<br><strong>testing Net::sFTP (needed if you want to transfer backups to another server)...</strong><br>\n";
eval { $eval_in_died = 1; require Net::sFTP; };
       if(!$@){
            $mod_sftp = 1;
            import Net::sFTP;
            }
if($mod_sftp!=1){
    print $err."Error: modul Net::sFTP not found! crondump.pl can't transfer data via sFTP.</font><br>\n";
} else {
    print $ok."Found modul Net::sFTP. OK - crondump.pl can send backups via sFTP.</font><br>\n";
}
laut der Überprüfung der KI

8<-
Ja, Sie können mit diesem Perl-Skript prüfen, ob ein SFTP-Modul vorhanden ist. Das Skript versucht, das Modul Net::SFTP zu laden und zu importieren, und gibt eine entsprechende Nachricht aus, je nachdem, ob es erfolgreich war oder nicht. Wenn das Modul nicht gefunden wird, wird eine Fehlermeldung angezeigt. Wenn das Modul gefunden wird, wird eine Bestätigungsmeldung angezeigt. Sie können das Skript in einem Perl-Interpreter ausführen oder in eine Datei speichern und von der Shell aus aufrufen. Zum Beispiel:

`perl -e 'print "<br><strong>testing Net::sFTP (needed if you want to transfer backups to another server)...</strong><br>\n"; eval { $eval_in_died = 1; require Net::sFTP; }; if(!$@){ $mod_sftp = 1; import Net::sFTP; } if($mod_sftp!=1){ print $err."Error: modul Net::sFTP not found! crondump.pl can't transfer data via sFTP.</font><br>\n"; } else { print $ok."Found modul Net::sFTP. OK - crondump.pl can send backups via sFTP.</font><br>\n"; }'`

Oder:

`perl test_sftp.pl`

Wobei test_sftp.pl die Datei ist, die das Skript enthält.
8<--

bitte einmal prüfen, ob das Script funktioniert
https://github.com/r23/MyOOS-Dumper/blo ... erltest.pl

Viele Grüße

Ralf
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Hallo,

bei meinem Provider erhalte ich die Information das kein sFTP zur Verfügung steht.
2023-11-23 18_07_22-Greenshot.png
2023-11-23 18_07_22-Greenshot.png (20.8 KiB) 158 mal betrachtet

a - Script ist falsch
b - das Modul steht mir nicht zur Verfügung

Welche Information bekommt ihr?
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

kein Server von mir hat perl ;)

8<-
Um Perl auf einem Apache-Server zu aktivieren und einzuschalten, müssen Sie einige Schritte befolgen:

- Stellen Sie sicher, dass Sie Perl auf Ihrem System installiert haben. Sie können dies überprüfen, indem Sie den Befehl `perl -v` in der Shell ausführen. Wenn Sie Perl nicht haben, können Sie es von der offiziellen Website¹ herunterladen und installieren.

- Stellen Sie sicher, dass Sie das Modul mod_perl auf Ihrem Apache-Server installiert haben. Dieses Modul ermöglicht es Apache, Perl-Skripte auszuführen und zu optimieren. Sie können dies überprüfen, indem Sie den Befehl `apachectl -M | grep perl` in der Shell ausführen. Wenn Sie mod_perl nicht haben, können Sie es von der offiziellen Website² herunterladen und installieren.

- Konfigurieren Sie Apache, um Perl-Skripte zu erkennen und auszuführen. Dazu müssen Sie die Datei httpd.conf (oder eine andere Konfigurationsdatei) bearbeiten und folgende Anweisungen hinzufügen:

```
# Laden Sie das Modul mod_perl
LoadModule perl_module modules/mod_perl.so

# Legen Sie den Pfad zum Perl-Interpreter fest
PerlSwitches /usr/bin/perl

# Geben Sie an, welche Dateierweiterungen Perl-Skripte sind
AddHandler cgi-script .pl .cgi

# Geben Sie an, welche Verzeichnisse Perl-Skripte enthalten
<Directory "/var/www/cgi-bin">
Options +ExecCGI
AllowOverride None
Require all granted
</Directory>
```

- Starten Sie Apache neu, um die Änderungen zu übernehmen. Sie können dies tun, indem Sie den Befehl `apachectl restart` in der Shell ausführen.
- Testen Sie, ob Perl-Skripte funktionieren, indem Sie ein einfaches Skript erstellen und in einem der angegebenen Verzeichnisse speichern. Zum Beispiel:

```
#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hello, Perl!";
```

- Rufen Sie das Skript in Ihrem Browser auf, indem Sie die entsprechende URL eingeben. Zum Beispiel: http://localhost/cgi-bin/hello.pl. Sie sollten die Ausgabe "Hello, Perl!" sehen.

Weitere Informationen finden Sie in den folgenden Quellen:

- [How can I enable Perl web scripts to run on Apache?](^3^)
- [Webserver/lokal einrichten – SELFHTML-Wiki](^4^)
- [Wie man HTTP/2 in Apache Web Server aktiviert - HowtoForge](^5^)


(1) How can I enable Perl web scripts to run on Apache?. https://stackoverflow.com/questions/372 ... -on-apache.
(2) Webserver/lokal einrichten – SELFHTML-Wiki. https://wiki.selfhtml.org/wiki/Webserve ... einrichten.
(3) Wann ist ein Perl-Script startfähig? | STRATO. https://www.strato.de/faq/hosting/wann- ... artfaehig/.
(4) Wie man HTTP/2 in Apache Web Server aktiviert - HowtoForge. https://www.howtoforge.de/anleitung/wie ... aktiviert/.
(5) undefined. http://127.0.0.1/example.pl.

8<---

oh mann ...
r23
Beiträge: 2624
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: SFTP Nutzung

Beitrag von r23 »

Perl läuft jetzt auf meinem Server:

Anleitung von der KI

8<-
Um Perl auf einem Apache-Webserver mit Ubuntu zu installieren, müssen Sie einige Schritte befolgen. Hier ist eine Schritt-für-Schritt-Anleitung, die Ihnen helfen kann:

1. Installieren Sie das Perl-Paket mit dem Befehl `sudo apt install perl`.
2. Installieren Sie das Apache-Paket mit dem Befehl `sudo apt install apache2`.
3. Aktivieren Sie das CGI-Modul für Apache mit dem Befehl `sudo a2enmod cgi`.
4. Erstellen Sie ein Verzeichnis für Ihre Perl-Skripte, zum Beispiel `/var/www/html/cgi-bin`.
5. Ändern Sie die Berechtigungen für das Verzeichnis, damit Apache darauf zugreifen kann, mit dem Befehl `sudo chmod 755 /var/www/html/cgi-bin`.
6. Erstellen Sie eine Konfigurationsdatei für Apache, die das Verzeichnis als CGI-Verzeichnis definiert, zum Beispiel `/etc/apache2/conf-available/cgi-bin.conf`. Die Datei sollte folgenden Inhalt haben:

<Directory "/var/www/html/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .pl
</Directory>

7. Aktivieren Sie die Konfigurationsdatei mit dem Befehl `sudo a2enconf cgi-bin`.
8. Starten Sie den Apache-Server neu, damit die Änderungen wirksam werden, mit dem Befehl `sudo systemctl restart apache2`.
9. Schreiben Sie Ihr Perl-Skript und speichern Sie es in dem Verzeichnis, das Sie erstellt haben, zum Beispiel `/var/www/html/cgi-bin/hello.pl`. Das Skript sollte folgenden Inhalt haben:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Hello, World!</h1>";

10. Geben Sie Ihrem Skript die Ausführungsberechtigung mit dem Befehl `sudo chmod 755 /var/www/html/cgi-bin/hello.pl`.
11. Öffnen Sie Ihren Webbrowser und geben Sie die URL Ihres Skripts ein, zum Beispiel `http://localhost/cgi-bin/hello.pl`. Sie sollten die Ausgabe Ihres Skripts sehen.

Ich hoffe, diese Anleitung war hilfreich für Sie. Wenn Sie mehr Informationen über Apache, Perl oder Ubuntu benötigen, können Sie die folgenden Quellen konsultieren:

- [Tutorial: Apache, MySQL, PHP (LAMP) auf Ubuntu 18.04 installieren](^1^)
- [So installieren Sie den Apache-Webserver unter Ubuntu 20.04](^2^)
- [Ubuntu: Apache installieren und richtig konfigurieren - IONOS](^3^)

(1) Tutorial: Apache, MySQL, PHP (LAMP) auf Ubuntu 18.04 installieren. https://www.webhosterwissen.de/know-how ... tallieren/.
(2) So installieren Sie den Apache-Webserver unter Ubuntu 20.04. https://www.digitalocean.com/community/ ... u-20-04-de.
(3) Ubuntu: Apache installieren und richtig konfigurieren - IONOS. https://www.ionos.de/digitalguide/serve ... tallieren/.
8<-

nach der Installation habe ich eine Fehlermeldung erhalten.

8<-
Die Fehlermeldung, die Sie erhalten, deutet darauf hin, dass es ein Problem mit der Konfiguration oder dem Skript auf dem Server gibt. Um die Ursache des Fehlers zu finden, müssen Sie die Apache-Error-Log-Datei überprüfen, die die Details des Fehlers enthält. Die Apache-Error-Log-Datei befindet sich in der Regel unter `/var/log/apache2/error.log` auf einem Ubuntu-Server¹. Sie können diese Datei mit einem Texteditor öffnen oder den folgenden Befehl verwenden, um die letzten Einträge in der Datei anzuzeigen:

sudo tail -f /var/log/apache2/error.log

Sie können auch nach bestimmten Schlüsselwörtern in der Datei suchen, zum Beispiel nach `GET` oder `Internal Server Error`, indem Sie den Befehl `grep` verwenden:

sudo tail -f /var/log/apache2/error.log | grep GET

In der Error-Log-Datei sollten Sie Informationen wie das Datum und die Uhrzeit des Fehlers, die IP-Adresse des Clients, der die Anfrage gestellt hat, die URL der Anfrage, die Fehlermeldung und die Datei oder das Skript sehen, das den Fehler verursacht hat. Sie können diese Informationen verwenden, um die Konfiguration oder das Skript zu korrigieren, das den Fehler verursacht hat. Sie können auch die Apache-Access-Log-Datei überprüfen, die die erfolgreichen Anfragen an den Server protokolliert. Die Apache-Access-Log-Datei befindet sich in der Regel unter `/var/log/apache2/access.log` auf einem Ubuntu-Server⁴. Sie können diese Datei auf die gleiche Weise wie die Error-Log-Datei anzeigen oder durchsuchen.

Ich hoffe, diese Antwort war hilfreich für Sie. Wenn Sie mehr über Apache, Ubuntu oder die Fehlerbehebung erfahren möchten, können Sie die folgenden Quellen konsultieren:

- [How To Troubleshoot Common Apache Errors](^2^)
- [How to Monitor Your Apache Logs](^3^)
- [Parsing Apache Error.Log in Ubuntu 14.04](^5^)


(1) apache2 - Where are the Apache and PHP log files? - Ask Ubuntu. https://askubuntu.com/questions/14763/w ... -log-files.
(2) How to Check Apache Access & Error Log Files in Ubuntu Server?. https://www.itsolutionstuff.com/post/ho ... ample.html.
(3) How To Troubleshoot Common Apache Errors | DigitalOcean. https://www.digitalocean.com/community/ ... che-errors.
(4) How to Monitor Your Apache Logs | Loggly. https://www.loggly.com/use-cases/how-to ... ache-logs/.
(5) Parsing Apache Error.Log in Ubuntu 14.04 - Stack Overflow. https://stackoverflow.com/questions/363 ... untu-14-04.
Zuletzt geändert von r23 am 24.11.2023, 05:26, insgesamt 1-mal geändert.
Antworten