sudo ssh mit Parametern
Hallo, ich synchronisiere eine lokale MySQL-Datenbank mit einer im www. Hierzu benutze ich als user "mysql" einen Tunnel über ssh mit einem passwortlosen Zugang. Dieser wird mit cron geöffnet/geschlossen. Zum Öffnen rufe ich "ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de" auf und lande wieder auf der Konsole bzw. kann mit dem cron-Skript fortfahren. Ich möchte den Synchronisierungs-Prozess aber gern von Hand über den Browser ausführen/auslösen können. Apache2 läuft aber als user "wwwrun" und ich möchte kein zweites Loch mit passwortlosem Zugang bohren. Ich habe daher folgendes bei /etc/sudoers eingetragen "wwwrun 192.168.1.10 = (mysql) NOPASSWD:/usr/bin/ssh" Ich wechsle dann zum Testen mit "sudo -u wwwrun -s" zum user "wwwrun". Wenn ich jetzt "sudo -u mysql '/usr/bin/ssh -fNg -L 3307:127.0.0.3:3306 ssh-117302-alex@koenig-dey.de'" eingebe, kommt die Fehlermeldung "sudo: ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de: command not found", während ein "sudo -u mysql 'ssh'" funktioniert. Ich habe dann die Zeile in "/etc/sudoers" sowohl von Hand als auch über das entsprechende Menü in yast2 um den Parameter ergänzt. Sie sieht nun wie folgt aus: "wwwrun 192.168.1.10 = (mysql) NOPASSWD:/usr/bin/ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de" Jetzt bekomme ich aber folgende Fehlermeldung(en): sudo: >>> /etc/sudoers: syntax error near line 74 <<< sudo: parse error in /etc/sudoers near line 74 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin Wenn yast2 das so einträgt, sollte es doch richti sein, oder? Wie bekomme ich mein Problem (notfalls auch anders) gelöst? Ich könnte das ganze in ein Skript packen und das dann bei /etc/sudoers reinpacken. Das finde ich aber bedenklich. Gruß, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Mon, Sep 02, 2013 at 07:02:24PM +0200, Alex Winzer wrote: Hallo,
ich synchronisiere eine lokale MySQL-Datenbank mit einer im www. Hierzu benutze ich als user "mysql" einen Tunnel über ssh mit einem passwortlosen Zugang.
Du kannst doch die mysql-interne Replikation verwenden, die geht auch über TLS. Rainer -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo. On Monday 02 September 2013 19:02:24 Alex Winzer wrote:
Hallo,
ich synchronisiere eine lokale MySQL-Datenbank mit einer im www. Hierzu benutze ich als user "mysql" einen Tunnel über ssh mit einem passwortlosen Zugang. Dieser wird mit cron geöffnet/geschlossen. Zum Öffnen rufe ich "ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de" auf und lande wieder auf der Konsole bzw. kann mit dem cron-Skript fortfahren.
...
Ich kenne mich zwar nicht mit der Replikation von MySQL-Datenbanken aus, aber wenn ich was von einem passwortlosen ssh-Zugang hoere, dann straeuben sich mir die Nackenhaare. Was spricht denn dagegen, ssh-Keys zu verwenden (ssh -i ~/.ssh/myspecialkey -fNg ... oder in der Art). Dann braucht man auch kein Passwort einzutippen - und kann das problemlos mit mehreren Usern machen. Und wer den zugheoerigen secret key nicht hat - der kann nicht rein. Gruss, Hartwig -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Rainer, hallo Hartwig, On 02.09.13 21:59, Hartwig Atrops wrote:
Hallo.
On Monday 02 September 2013 19:02:24 Alex Winzer wrote:
Hallo,
ich synchronisiere eine lokale MySQL-Datenbank mit einer im www. Hierzu benutze ich als user "mysql" einen Tunnel über ssh mit einem passwortlosen Zugang. Dieser wird mit cron geöffnet/geschlossen. Zum Öffnen rufe ich "ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de" auf und lande wieder auf der Konsole bzw. kann mit dem cron-Skript fortfahren.
...
Ich kenne mich zwar nicht mit der Replikation von MySQL-Datenbanken aus, aber
Ich auch nicht. Aber ich werde mir das auf jeden Fall mal näher ansehen.
wenn ich was von einem passwortlosen ssh-Zugang hoere, dann straeuben sich mir die Nackenhaare.
Das müssen sie nicht ;-)
Was spricht denn dagegen, ssh-Keys zu verwenden (ssh -i ~/.ssh/myspecialkey -fNg ... oder in der Art). Dann braucht man auch kein Passwort einzutippen - und kann das problemlos mit mehreren Usern machen. Und wer den zugheoerigen secret key nicht hat - der kann nicht rein.
Es spricht nichts dagegen. Ich frage bloß mal, wieviel Passwörter Du bei Verwednung der Schlüssel eingibst? Ich gebe nämlich keine Passwörter ein; Schlüssel tauschen die Maschinen aber schon aus. Ich dachte, das solle gerade so sein. Ansonsten hätte ich ja auch das Problem mit den verschiedenen Usern nicht, weil ganz ohne Passwort stets ganz ohne Passwort bliebe. Für mich als Laien ist das schon passwortlos. Ich bitte um Entschuldigung, falls ich mich da falsch ausgedrückt habe. Ich habe die Feststellung gemacht, dass das Problem nicht auftaucht, wenn ich den Befehl in ein Skript nach /usr/local/bin packe und von dort aus mit sudo aufrufe. Die immer gleichen Parameter stehen im Skript, so dass das Skript selbst keine Parameter braucht. Ist das irgendwie besonders unsicher? Gruß, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo. On Monday 02 September 2013 23:07:00 Alex Winzer wrote:
Hallo Rainer, hallo Hartwig,
On 02.09.13 21:59, Hartwig Atrops wrote:
Hallo.
On Monday 02 September 2013 19:02:24 Alex Winzer wrote:
Hallo,
ich synchronisiere eine lokale MySQL-Datenbank mit einer im www. Hierzu benutze ich als user "mysql" einen Tunnel über ssh mit einem passwortlosen Zugang. Dieser wird mit cron geöffnet/geschlossen. Zum Öffnen rufe ich "ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de" auf und lande wieder auf der Konsole bzw. kann mit dem cron-Skript fortfahren.
...
Ich kenne mich zwar nicht mit der Replikation von MySQL-Datenbanken aus, aber
Ich auch nicht. Aber ich werde mir das auf jeden Fall mal näher ansehen.
wenn ich was von einem passwortlosen ssh-Zugang hoere, dann straeuben sich mir die Nackenhaare.
Das müssen sie nicht ;-)
Doch, das muessen sie. Man kann - und wenn ich dich richtig verstanden habe, hast du das ja wohl getan - ssh so konfigurieren, dass User xy ohne Angabe eines Passworts (und auch ohne Schluessel) auf das Zielsystem zugreifen kann. Also kann jeder, der das weiss und den zugehoerigen Usernamen kennt, auf das System. Und in deinem Fall auch noch aus dem Internet. Schlimmer kann ein Sicherheitsloch ja wohl kaum sein ...
Was spricht denn dagegen, ssh-Keys zu verwenden (ssh -i ~/.ssh/myspecialkey -fNg ... oder in der Art). Dann braucht man auch kein Passwort einzutippen - und kann das problemlos mit mehreren Usern machen. Und wer den zugheoerigen secret key nicht hat - der kann nicht rein.
Es spricht nichts dagegen.
Ich frage bloß mal, wieviel Passwörter Du bei Verwednung der Schlüssel eingibst?
Gar keins. Ich erzeuge einmalig ein Schluesselpaar, alle Verbindungsaufbauten laufen dann damit, ohne dass ich noch Passwoerter eintippen muss. Stattdessen muss ich meinem ssh-Aufruf sagen, welchen Schluessel er benutzen soll. Das macht der -i Parameter, dem du den Schluessel (auch identity file genannt) mitgibts. (Siehe meine letzte Mail.) Auf der Kommandozeile ist das zwar auch viel Tipperei, aber in Scripts eingebaut laeuft dann alles vollautomatisch. Und da du schliesslich deinen SECRET key nie nie niemals nicht rausgibst, kannst auch nur du mit diesem Schluessel auf das Zielsystem. Auf dem Zielsystem muss der dortige User einmalig deinen PUBLIC key seinem "Schluesselbund" (Datei authorized_keys) hinzufuegen, dann geht's.
Ich gebe nämlich keine Passwörter ein; Schlüssel tauschen die Maschinen aber schon aus. Ich dachte, das solle gerade so sein. Ansonsten hätte ich ja auch das Problem mit den verschiedenen Usern nicht, weil ganz ohne Passwort stets ganz ohne Passwort bliebe.
Für mich als Laien ist das schon passwortlos. Ich bitte um Entschuldigung, falls ich mich da falsch ausgedrückt habe.
Du bezeichnest dich als Laien: hast du denn auf dem Zielsystem irgendwas konfiguriert? Oder hat das der Admin des Zielsystems fuer dich getan? Ich habe da so einen Verdacht ...
Ich habe die Feststellung gemacht, dass das Problem nicht auftaucht, wenn ich den Befehl in ein Skript nach /usr/local/bin packe und von dort aus mit sudo aufrufe. Die immer gleichen Parameter stehen im Skript, so dass das Skript selbst keine Parameter braucht. Ist das irgendwie besonders unsicher?
Gruß, Alex
Gruss, Hartwig -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Hartwig, für Deine Antworten. On 03.09.2013 09:11, Hartwig Atrops wrote:
Hallo.
On Monday 02 September 2013 23:07:00 Alex Winzer wrote:
Hallo Rainer, hallo Hartwig,
On 02.09.13 21:59, Hartwig Atrops wrote:
Hallo.
On Monday 02 September 2013 19:02:24 Alex Winzer wrote:
Hallo,
ich synchronisiere eine lokale MySQL-Datenbank mit einer im www. Hierzu benutze ich als user "mysql" einen Tunnel über ssh mit einem passwortlosen Zugang. Dieser wird mit cron geöffnet/geschlossen. Zum Öffnen rufe ich "ssh -fNg -L 3307:127.0.0.3:3306 dbuser@mydomain.de" auf und lande wieder auf der Konsole bzw. kann mit dem cron-Skript fortfahren.
... ...
wenn ich was von einem passwortlosen ssh-Zugang hoere, dann straeuben sich mir die Nackenhaare.
Das müssen sie nicht ;-)
Doch, das muessen sie. Man kann - und wenn ich dich richtig verstanden habe, hast du das ja wohl getan - ssh so konfigurieren, dass User xy ohne Angabe eines Passworts (und auch ohne Schluessel) auf das Zielsystem zugreifen kann. Also kann jeder, der das weiss und den zugehoerigen Usernamen kennt, auf das System. Und in deinem Fall auch noch aus dem Internet. Schlimmer kann ein Sicherheitsloch ja wohl kaum sein ...
Du hast mich immer noch nicht richtig verstanden. Ich schrieb "Schlüssel tauschen die Maschinen aber schon aus." und dachte, damit wäre klar, dass ich Schlüssel-Paare gebastelt und anhand des von Dir so super aufbereiteten Vorgehens in die entsprechenden Dateien auf Server und Client beim jeweiligen Benutzer hinterlegt habe.
Was spricht denn dagegen, ssh-Keys zu verwenden (ssh -i ~/.ssh/myspecialkey -fNg ... oder in der Art). Dann braucht man auch kein Passwort einzutippen - und kann das problemlos mit mehreren Usern machen. Und wer den zugheoerigen secret key nicht hat - der kann nicht rein.
Es spricht nichts dagegen.
Ich frage bloß mal, wieviel Passwörter Du bei Verwednung der Schlüssel eingibst?
Auch hier zitiere ich mich nochmal: "... bei Verwendung der Schlüssel ..." Ich verstehe nicht warum man bei den Worten immer noch glaubt, ich würde im weiten www einen _echten passwortlosen Zugang_ zu meinem Webspace haben. Da das an meiner Frage völlig vorbei geht - die gut gemeinten Warnungen in allen Ehren - habe ich davon abgesehen, mein genaues Vorgehen mittels "ssh-keygen", "cat id_rsa.pub >> authorized_keys" etc. pp. zu erläutern. Denn das kann man im Internet als howto finden. Meine E-Mail zur Ausgangsfrage hat je nach Formatierung mind. 25 Zeilen. Ich wollte diese nicht noch im weitere 25 Zeilen künstlich aufblähen und etwa Antwortwilligen dies durch langes Lesen-Müssen vermiesen. Jetzt habe ich es getan ;-)
Gar keins. Ich erzeuge einmalig ein Schluesselpaar, alle Verbindungsaufbauten laufen dann damit, ohne dass ich noch Passwoerter eintippen muss. Stattdessen muss ich meinem ssh-Aufruf sagen, welchen Schluessel er benutzen soll. Das macht der -i Parameter, dem du den Schluessel (auch identity file genannt) mitgibts. (Siehe meine letzte Mail.)
Auf der Kommandozeile ist das zwar auch viel Tipperei, aber in Scripts eingebaut laeuft dann alles vollautomatisch. Und da du schliesslich deinen SECRET key nie nie niemals nicht rausgibst, kannst auch nur du mit diesem Schluessel auf das Zielsystem.
Auf dem Zielsystem muss der dortige User einmalig deinen PUBLIC key seinem "Schluesselbund" (Datei authorized_keys) hinzufuegen, dann geht's.
Siehe bitte oben. Ich mache das auch über Skripten, die ich aber eben als halbwegs sicherheitsbewusster user nicht bei sudo reinsetzen möchte. Auch möchte ich kein weiteres Schlüsselpaar für den user "wwwrun" erzeugen. Die Frage wäre da nämlich auch, wo hinterlege ich das, wo doch "wwwrun" nur eine Art virtueller User ohne home-Verzeichnis etc. ist. Daher will ich gern über php den Aufruf mit Parametern machen, was mir bislang nicht gelingen will -> Siehe meine Frage im Betreff.
Ich gebe nämlich keine Passwörter ein; Schlüssel tauschen die Maschinen aber schon aus. Ich dachte, das solle gerade so sein. Ansonsten hätte ich ja auch das Problem mit den verschiedenen Usern nicht, weil ganz ohne Passwort stets ganz ohne Passwort bliebe.
Für mich als Laien ist das schon passwortlos. Ich bitte um Entschuldigung, falls ich mich da falsch ausgedrückt habe.
Du bezeichnest dich als Laien: hast du denn auf dem Zielsystem irgendwas konfiguriert? Oder hat das der Admin des Zielsystems fuer dich getan? Ich habe da so einen Verdacht ...
Ich habe konfiguriert, siehe oben.
Ich habe die Feststellung gemacht, dass das Problem nicht auftaucht, wenn ich den Befehl in ein Skript nach /usr/local/bin packe und von dort aus mit sudo aufrufe. Die immer gleichen Parameter stehen im Skript, so dass das Skript selbst keine Parameter braucht. Ist das irgendwie besonders unsicher?
Mein Problem pressiert etwas: Ich hatte vor meiner Umstellung über ca. 5 Jahre hinweg xampp mit einem real existierenden User genutzt. Nach vollständiger Neuinstallation bin ich dann - eben auch wegen der Sicherheit - auf die mitgelieferten Apache, MySQL etc. umgestiegen. Das war vor 2 Wochen und seither beschäftige ich mich damit, wie ich meine beiden MySQL-DB endlich wieder automatisch synchronisiert bekomme. @Rainer -> Falls Du noch bis hierhin liest ;-) Ich habe das Stichwort "TLS" mal aufgegriffen und gesucht. Wirklich schlau bin ich daraus nicht geworden. Ich meine nur verstanden zu haben, dass man das aus Sicherheitsgründe über einen Tunnel oder ssh laufen lassen sollte. Damit wäre ich dann aber wieder bei meiner Ausgangsfrage und drehe mich sozusagen im Kreis. Könntest Du mir bitte mal ein paar mehr Stichworte zukommen lassen, wie / was genau Du machst? Gruß & Dank, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Alex Winzer [03.09.2013 11:49]:
Ich mache das auch über Skripten, die ich aber eben als halbwegs sicherheitsbewusster user nicht bei sudo reinsetzen möchte. Auch möchte ich kein weiteres Schlüsselpaar für den user "wwwrun" erzeugen. Die Frage wäre da nämlich auch, wo hinterlege ich das, wo doch "wwwrun" nur eine Art virtueller User ohne home-Verzeichnis etc. ist.
$ getent passwd wwwrun wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false Auf meiner openSUSE 12.3 hat wwwrun also das Home-Verzeichnis </var/lib/wwwrun> :-). Gruß Werner -- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 03.09.13 11:49, schrieb Alex Winzer:
Hallo Hartwig,
[...]
@Rainer -> Falls Du noch bis hierhin liest ;-) Ich habe das Stichwort "TLS" mal aufgegriffen und gesucht. Wirklich schlau bin ich daraus nicht geworden. Ich meine nur verstanden zu haben, dass man das aus Sicherheitsgründe über einen Tunnel oder ssh laufen lassen sollte. Damit wäre ich dann aber wieder bei meiner Ausgangsfrage und drehe mich sozusagen im Kreis. Könntest Du mir bitte mal ein paar mehr Stichworte zukommen lassen, wie / was genau Du machst?
Ich greife auf meine Root-Server MySQL-DBs und LDAP-DBs mit STunnel zu. Zertifikat erstellen und auf beiden Seiten einrichten. -- ae | Andreas Ernst | IT Spektrum Postfach 5, 65612 Beselich Schupbacher Str. 32, 65614 Beselich, Germany Tel: +49-6484-91002 Fax: +49-6484-91003 ae@ae-online.de | www.ae-online.de www.tachyon-online.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Leute, On 03.09.2013 11:49, Werner Flamme wrote:
Alex Winzer [03.09.2013 11:49]:
Ich mache das auch über Skripten, die ich aber eben als halbwegs sicherheitsbewusster user nicht bei sudo reinsetzen möchte. Auch möchte ich kein weiteres Schlüsselpaar für den user "wwwrun" erzeugen. Die Frage wäre da nämlich auch, wo hinterlege ich das, wo doch "wwwrun" nur eine Art virtueller User ohne home-Verzeichnis etc. ist.
$ getent passwd wwwrun wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
Auf meiner openSUSE 12.3 hat wwwrun also das Home-Verzeichnis </var/lib/wwwrun> .
Das trifft sich gut. Ich habe hier auch die 12.3 und mache das über einen Tunnel, den ich eben mit ssh aufbaue. Meine frage ist bloß, wie lange lässt man den stehen? Meine Software ist darauf angewiesen, bestimmt Dinge - also nicht alles - aus der DB auf den Webspace zu übertragen. Mein Kollege tendiert dazu, den Tunnel zu öffnen und stehen zu lassen. Da bin ich aber dagegen. Daher wäre meine Frage am Rande: Lässt Du den Tunnel stehen oder baust Du ihn auf, synchronisiert und machst ihn dann wieder zu? On 03.09.2013 12:24, Andreas Ernst wrote:
Am 03.09.13 11:49, schrieb Alex Winzer:
Hallo Hartwig,
[...]
@Rainer -> Falls Du noch bis hierhin liest ;-) Ich habe das Stichwort "TLS" mal aufgegriffen und gesucht. Wirklich schlau bin ich daraus nicht geworden. Ich meine nur verstanden zu haben, dass man das aus Sicherheitsgründe über einen Tunnel oder ssh laufen lassen sollte. Damit wäre ich dann aber wieder bei meiner Ausgangsfrage und drehe mich sozusagen im Kreis. Könntest Du mir bitte mal ein paar mehr Stichworte zukommen lassen, wie / was genau Du machst?
Ich greife auf meine Root-Server MySQL-DBs und LDAP-DBs mit STunnel zu. Zertifikat erstellen und auf beiden Seiten einrichten.
Ist das daselbe wie ich es nutze (Siehe oben)? TLS geht wohl leider nicht. Ich bin - nun ist es doch raus - bei domainfactory. Die schreiben dazu folgendes: "Bitte beachten Sie, dass die Datenbanken bei domainFACTORY nicht von extern erreichbar sind. Der Zugriff über einen SSH-Tunnel bietet hierfür eine Alternative, da vorab eine Verbindung zum Server aufgebaut wird und erst im Anschluss auf den MySQL-Server zugegriffen wird, der Zugriff somit nicht mehr extern stattfindet." Plan B scheidet damit also aus. Ich bin also im Moment völlig ohne Fahrplan und gehe erstmal zum Bhf um meine Kinder abzuholen ;-) Gruß, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Tue, Sep 03, 2013 at 11:49:48AM +0200, Alex Winzer wrote:
@Rainer -> Falls Du noch bis hierhin liest ;-) Ich habe das Stichwort "TLS" mal aufgegriffen und gesucht. Wirklich schlau bin ich daraus nicht geworden. Ich meine nur verstanden zu haben, dass man das aus Sicherheitsgründe über einen Tunnel oder ssh laufen lassen sollte. Damit wäre ich dann aber wieder bei meiner Ausgangsfrage und drehe mich sozusagen im Kreis. Könntest Du mir bitte mal ein paar mehr Stichworte zukommen lassen, wie / was genau Du machst?
Geht alles mit Boardmitteln von mysql :-) https://dev.mysql.com/doc/refman/5.1/en/replication-solutions-ssl.html Rainer -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (5)
-
Alex Winzer
-
Andreas Ernst
-
Hartwig Atrops
-
Rainer Sokoll
-
Werner Flamme