ssh, sshpass alternativen
ssh, sshpass alternativen
Hallo,
ich habe folgendes anliegen.
Ich möchte gerne eine Verbindung zwischen zwei Rechnern über das internet (Beaglebone Black mit debian Stretch) aufbauen.
Bei dem einen Board meinem"Server" habe ich alle Möglichkeiten denn dort sitze ich und habe den vollen Zugriff. Ich kann hier auch eine Portweiterleitung einrichten damit der Server von "aussen" erreichbar ist.
Auf der anderen Seite dem "Client" läuft ein WebServer und dementsprechend sind die Eingabe Möglichkeiten begrenzt.
Ich habe es mit ssh und sshpass ausprobiert aber ohne Erfolg. Die Passworteingabe beim Verbindungsaufbau muss wohl interaktiv geschehen.
Das erzeugen eines keyPairs auf dem Client und auch das kopieren des public keys auf den Server kriege ich hin.
Ich scheitere daran die Verbindung aufzubauen denn dazu muss interaktiv das Passwort des Benutzers auf dem Server eingegeben werden. Mit sshpass hat es nicht geklappt.
Ich weiß nicht wie ich die Aufforderungen des terminals auf dem WebServer ausgeben kann. Und dann muss ja auch in der terminal Sitzung das Passwort eingegeben werden.
Gibt es eine alternative Möglichkeit bei der evtl. der Client bei dem Server anklopft und dieser die Verbindung dann überprüft und zuläßt.
Ich hoffe das ich mich verständlich ausgedrückt habe und hoffe auf zahlreiche Ansätze.
Ich wünsche ein schönes Wochenende.
ich habe folgendes anliegen.
Ich möchte gerne eine Verbindung zwischen zwei Rechnern über das internet (Beaglebone Black mit debian Stretch) aufbauen.
Bei dem einen Board meinem"Server" habe ich alle Möglichkeiten denn dort sitze ich und habe den vollen Zugriff. Ich kann hier auch eine Portweiterleitung einrichten damit der Server von "aussen" erreichbar ist.
Auf der anderen Seite dem "Client" läuft ein WebServer und dementsprechend sind die Eingabe Möglichkeiten begrenzt.
Ich habe es mit ssh und sshpass ausprobiert aber ohne Erfolg. Die Passworteingabe beim Verbindungsaufbau muss wohl interaktiv geschehen.
Das erzeugen eines keyPairs auf dem Client und auch das kopieren des public keys auf den Server kriege ich hin.
Ich scheitere daran die Verbindung aufzubauen denn dazu muss interaktiv das Passwort des Benutzers auf dem Server eingegeben werden. Mit sshpass hat es nicht geklappt.
Ich weiß nicht wie ich die Aufforderungen des terminals auf dem WebServer ausgeben kann. Und dann muss ja auch in der terminal Sitzung das Passwort eingegeben werden.
Gibt es eine alternative Möglichkeit bei der evtl. der Client bei dem Server anklopft und dieser die Verbindung dann überprüft und zuläßt.
Ich hoffe das ich mich verständlich ausgedrückt habe und hoffe auf zahlreiche Ansätze.
Ich wünsche ein schönes Wochenende.
Re: ssh, sshpass alternativen
Leider ist das ganze missverständlich geschrieben.
Also du hast einen Rechner (wahrscheinlich hinter DSL), den du von außen z. B. per SSH erreichbar machen könntest. Im Internet ist aber ein System mit einen Webserver, wo du nicht drauf kommst. Darf man sich dort überhaupt per SSH anmelden? Erkläre genauer was funktioniert und was nicht. Post evtl. Fehlermeldungen.
Also du hast einen Rechner (wahrscheinlich hinter DSL), den du von außen z. B. per SSH erreichbar machen könntest. Im Internet ist aber ein System mit einen Webserver, wo du nicht drauf kommst. Darf man sich dort überhaupt per SSH anmelden? Erkläre genauer was funktioniert und was nicht. Post evtl. Fehlermeldungen.
Re: ssh, sshpass alternativen
Hallo,
Ich habe ein Beaglebone Black den ich als "Gateway oder Server" verwende. An diesem kann sich über das Internet der Kunde mit seinem Beaglebone Black via ssh anmelden.
Beim Kunden kann ich keine Änderungen an seinem Router etc vornehmen. Deshalb ist sein System von "aussen" auch nicht erreichbar.
Allerdings kann der Kunde zu meinem Board eine Verbindung aufbauen. Eine Portweiterleitung habe ich eingerichtet und das ganze funktioniert soweit.
Der Kunde soll von seinem System einen reverse SSH Tunnel aufbauen. Allerdings hat der Kunde keinen direkten zugriff auf eine Shell Sitzung.
Der Kunde sieht nur eine Weboberfläche. Die gesamte Anwendung ist in javascript/HTML5 geschrieben.
Sobald ich versuche einen Tunnel aufzubauen benötige ich einen Benutzernamen (mit dem sich der Kunde bei meinem Server anmelden kann) und muss das Passwort "interaktiv" eingeben. Der Benutzername ist natürlich kein Problem aber die "interaktive" Eingabe des Passworts kann ich nicht bzw. ich weiss noch nicht wie.
Ich habe schon überlegt ob es mit dem starten eines Scripts (starten einer neuen Shell Sitzung Verbindungsaufbau des ssh tunnels,...) gehen würde ? Kann mir da jemand weiterhelfen ? Oder scheitert es dann auch wieder daran das das Passwort nicht "interaktiv" eingegeben wird ?
Ich habe auch schon daran gedacht auf meinem Server das Passwort zu entfernen. Vielleicht funktioniert das sogar aber das ist wohl das unsicherste was ich machen kann.
Am coolsten wäre es für mich, wenn der Kunde versucht einen Tunnel zu meinem Board aufzubauen. Der klopft dann quasi an meinem Board an und ich lasse ihn rein oder eben nicht.
Grüße
Ich habe ein Beaglebone Black den ich als "Gateway oder Server" verwende. An diesem kann sich über das Internet der Kunde mit seinem Beaglebone Black via ssh anmelden.
Beim Kunden kann ich keine Änderungen an seinem Router etc vornehmen. Deshalb ist sein System von "aussen" auch nicht erreichbar.
Allerdings kann der Kunde zu meinem Board eine Verbindung aufbauen. Eine Portweiterleitung habe ich eingerichtet und das ganze funktioniert soweit.
Der Kunde soll von seinem System einen reverse SSH Tunnel aufbauen. Allerdings hat der Kunde keinen direkten zugriff auf eine Shell Sitzung.
Der Kunde sieht nur eine Weboberfläche. Die gesamte Anwendung ist in javascript/HTML5 geschrieben.
Sobald ich versuche einen Tunnel aufzubauen benötige ich einen Benutzernamen (mit dem sich der Kunde bei meinem Server anmelden kann) und muss das Passwort "interaktiv" eingeben. Der Benutzername ist natürlich kein Problem aber die "interaktive" Eingabe des Passworts kann ich nicht bzw. ich weiss noch nicht wie.
Ich habe schon überlegt ob es mit dem starten eines Scripts (starten einer neuen Shell Sitzung Verbindungsaufbau des ssh tunnels,...) gehen würde ? Kann mir da jemand weiterhelfen ? Oder scheitert es dann auch wieder daran das das Passwort nicht "interaktiv" eingegeben wird ?
Ich habe auch schon daran gedacht auf meinem Server das Passwort zu entfernen. Vielleicht funktioniert das sogar aber das ist wohl das unsicherste was ich machen kann.
Am coolsten wäre es für mich, wenn der Kunde versucht einen Tunnel zu meinem Board aufzubauen. Der klopft dann quasi an meinem Board an und ich lasse ihn rein oder eben nicht.
Grüße
Re: ssh, sshpass alternativen
Warum nicht public key und du hast das problem nicht?
Ich glaub ich weiß was du suchst sowas haben wir mal in der Firma programmiert. Ist einige Jahre her und in Perl geschrieben das kann mit Passwörtern umgehen.
Ich glaub ich weiß was du suchst sowas haben wir mal in der Firma programmiert. Ist einige Jahre her und in Perl geschrieben das kann mit Passwörtern umgehen.
Code: Alles auswählen
$Net::OpenSSH::debug |= 16 if $debug;
$ssh = Net::OpenSSH->new($host, user => $user, password=> $pass, port=> $remote_port, master_opts => [-o => "LocalForward [da kommen deine forwards rein]", -o => "StrictHostKeyChecking no"]);
Re: ssh, sshpass alternativen
Du könntest dem Kunden bei dir die Shell /bin/false geben und er macht nur Remote-Port-Forwarding gerne per Key. Du gehst dann auf seinen SSH-Server als Localhost durch den Tunnel. Würde auch mit Key gehen. Lass die Weboberfläche weg.
Re: ssh, sshpass alternativen
Guten morgen,
vielen Dank für die Lösungsansätze.
von Perl habe ich keine Ahnung. Dehalb weiß ich auch nicht wie das funktionieren soll
@uname
könntest du deinen Ansätz etwas ausführlicher beschreiben.
Soviel ich weiss kann nur derjenige den Tunnel aufbauen der auch den Schlüssel erzeugt hat. Und bei meinem scenario kann nur der Kunde den Schlüssel erzeugen und an mich übergeben weil sein System von aussen nicht erreichbar ist. Portforwarding kann ich nur auf meiner Seite ermöglichen.
Kann ich wenn ich im Besitz seines public Keys bin einen Tunnel aufbauen ??
Grüße und einen schönen Sonntag noch
vielen Dank für die Lösungsansätze.
von Perl habe ich keine Ahnung. Dehalb weiß ich auch nicht wie das funktionieren soll
@uname
könntest du deinen Ansätz etwas ausführlicher beschreiben.
Soviel ich weiss kann nur derjenige den Tunnel aufbauen der auch den Schlüssel erzeugt hat. Und bei meinem scenario kann nur der Kunde den Schlüssel erzeugen und an mich übergeben weil sein System von aussen nicht erreichbar ist. Portforwarding kann ich nur auf meiner Seite ermöglichen.
Kann ich wenn ich im Besitz seines public Keys bin einen Tunnel aufbauen ??
Grüße und einen schönen Sonntag noch
Re: ssh, sshpass alternativen
Genau. Der Kunde erstellt einen Key und schickt dir den Public-Key auf einen beliebigen Weg.
Bei dir gibst du dem Benutzer /bin/false
Schau viewtopic.php?t=138442
Screen oder Tmux nur, wenn der Benutzer zusehen will.
Bei dir gibst du dem Benutzer /bin/false
Schau viewtopic.php?t=138442
Screen oder Tmux nur, wenn der Benutzer zusehen will.
Re: ssh, sshpass alternativen
Hi uname,
ich steh auf dem Schlauch. Sorry wenn ich nochmal Nachfrage. Ich kann das auch gerade nicht testen. Aber morgen !!
Hier noch mal die Schritte für Dummies
1.
Der Kunde erzeugt ein Key Pair.
2.
Den public Key sendet der Kunde zu meinem Server.
3.
Mit dem Befehl
$ /bin/false "public_key"
akzeptiere ich den Schlüssel auf meinem Server.
Sonst nichts ?? Benutzername oder so etwas ??
4.
Der Kunde baut den reverse Tunnel zu meinem Server auf und braucht nicht das Passwort eingeben.
Habe ich das richtig verstanden ?
So werde ich das morgen testen und über meinen Erfolg oder misserfog berichten
Grüße
ich steh auf dem Schlauch. Sorry wenn ich nochmal Nachfrage. Ich kann das auch gerade nicht testen. Aber morgen !!
Hier noch mal die Schritte für Dummies
1.
Der Kunde erzeugt ein Key Pair.
2.
Den public Key sendet der Kunde zu meinem Server.
3.
Mit dem Befehl
$ /bin/false "public_key"
akzeptiere ich den Schlüssel auf meinem Server.
Sonst nichts ?? Benutzername oder so etwas ??
4.
Der Kunde baut den reverse Tunnel zu meinem Server auf und braucht nicht das Passwort eingeben.
Habe ich das richtig verstanden ?
So werde ich das morgen testen und über meinen Erfolg oder misserfog berichten
Grüße
Re: ssh, sshpass alternativen
Du kannst /bin/false sowohl als Shell in /etc/passwd als auch direkt bei den Keys konfigurieren. Am besten du testest das mal selbst aus, bevor du deinen Kunden damit beschäftigst /bin/false dient einzig dazu deinen eigenen Server vor dem Kunden zu schützen. So bekommt er bei dir keine Shell und erhält über die zusätzliche Option (-N : no shell) die Möglichkeit nur den Remote-SSH-Tunnel aufzubauen. Die Option -N ist dann zwingend notwendig. screen und tmux kannst du optional verwenden, wenn der Kunde zuschauen will. Auch das solltest du vielleicht vorher testen.
Re: ssh, sshpass alternativen
Hallo, ich nochmal,
leider habe ich es immer noch nicht zufriedenstellend hinbekommen.
Auf dem Server habe ich Debian Stretch installiert, eine feste IP vergeben und die Portweiterleitung auf dem Router entsprechend konfiguriert und zusätzlich folgende ssh Anpassung vorgenommen.
sudo nano /etc/ssh/sshd_config
ClientAliveInterval 30
ClientAliveCountMax 5
GatewayPorts yes
AllowTCPForwarding yes
Schritt 1:
Ich erstelle ein Keypair (beim Kunden) in dem default Verzeichnis ohne Passwort.
$ sshpass -p Passwort sudo ssh-keygen -A
Schritt 2:
Kopieren des public keys
$ sshpass -p Passwort sudo ssh-copy-id -i /etc/ssh/ssh_host_dsa_key.pub -p9000 dyn.IP.Address
Schritt 3:
Aufbau des reverse tunnels vom Kunden aus.
$ sshpass -p Passwort sudo ssh -o StrictHostKeyChecking=no –p 9000 dyn.IP.Address –R 10022:localhost:22
Schritt 4:
zugriff vom Server auf das Board beim Kunden
$ ssh -p 10022 localhost
Das funktioniert soweit ohne das interaktiv beim Kunden das Passwort eingeben muss.
Ich möchte aber unbedingt das ssh im Hintergrund läuft.
Wenn ich beim Tunnelaufbau (Schritt 3) die optionen -fN mit angebe dann muss ich das Passwort wieder interaktiv eingeben.
@uname
Ich habe auf meinem Server einen zusätzlichen System User angelegt
$ adduser --system remoteUser
Dadurch wird automatisch in der Datei /etc/passwd dieser neue User mit der Endung /bin/false angelegt.
Wenn ich nun versuche mich mit diesem Usernamen mit dem Server zu verbinden muss ich das Passwort eingeben. Das gibt es aber nicht und somit wird auch kein tunnel aufgebaut.
Was mache ich falsch ?
Grüße und ein schönes Wochenende
leider habe ich es immer noch nicht zufriedenstellend hinbekommen.
Auf dem Server habe ich Debian Stretch installiert, eine feste IP vergeben und die Portweiterleitung auf dem Router entsprechend konfiguriert und zusätzlich folgende ssh Anpassung vorgenommen.
sudo nano /etc/ssh/sshd_config
ClientAliveInterval 30
ClientAliveCountMax 5
GatewayPorts yes
AllowTCPForwarding yes
Schritt 1:
Ich erstelle ein Keypair (beim Kunden) in dem default Verzeichnis ohne Passwort.
$ sshpass -p Passwort sudo ssh-keygen -A
Schritt 2:
Kopieren des public keys
$ sshpass -p Passwort sudo ssh-copy-id -i /etc/ssh/ssh_host_dsa_key.pub -p9000 dyn.IP.Address
Schritt 3:
Aufbau des reverse tunnels vom Kunden aus.
$ sshpass -p Passwort sudo ssh -o StrictHostKeyChecking=no –p 9000 dyn.IP.Address –R 10022:localhost:22
Schritt 4:
zugriff vom Server auf das Board beim Kunden
$ ssh -p 10022 localhost
Das funktioniert soweit ohne das interaktiv beim Kunden das Passwort eingeben muss.
Ich möchte aber unbedingt das ssh im Hintergrund läuft.
Wenn ich beim Tunnelaufbau (Schritt 3) die optionen -fN mit angebe dann muss ich das Passwort wieder interaktiv eingeben.
@uname
Ich habe auf meinem Server einen zusätzlichen System User angelegt
$ adduser --system remoteUser
Dadurch wird automatisch in der Datei /etc/passwd dieser neue User mit der Endung /bin/false angelegt.
Wenn ich nun versuche mich mit diesem Usernamen mit dem Server zu verbinden muss ich das Passwort eingeben. Das gibt es aber nicht und somit wird auch kein tunnel aufgebaut.
Was mache ich falsch ?
Grüße und ein schönes Wochenende
Re: ssh, sshpass alternativen
Was soll das sshpass- und sudo-Geraffel. Weg damit.
Re: ssh, sshpass alternativen
Hi,
ohne funktioniert es nicht.
Beim erstellen des keypairs weiß ich nicht genau ob ich sudo Rechte benötige.
Beim kopieren des public Keys benötige ich definitiv sudo rechte.
Für sudo benötige ich ein passwort. Naja und und um die Eingabe zu umgehen verwende ich sshpass.
Grüße
ohne funktioniert es nicht.
Beim erstellen des keypairs weiß ich nicht genau ob ich sudo Rechte benötige.
Beim kopieren des public Keys benötige ich definitiv sudo rechte.
Für sudo benötige ich ein passwort. Naja und und um die Eingabe zu umgehen verwende ich sshpass.
Grüße
Re: ssh, sshpass alternativen
sudo? Du meinst root sein. sudo: weg damit.
Nutze
Keys werden eigentlich vom Benutzer selbst erstellt.
Achte auch den Speicherort und die Rechte.
Wenn root es kopiert musst du es evtl. von den Rechten anpassen.
Wenn du Ubuntu-Anleitungen liest ignoriere den sudo-Quatsch und sei dafür root.
Nutze
Code: Alles auswählen
su -
Achte auch den Speicherort und die Rechte.
Wenn root es kopiert musst du es evtl. von den Rechten anpassen.
Wenn du Ubuntu-Anleitungen liest ignoriere den sudo-Quatsch und sei dafür root.
Re: ssh, sshpass alternativen
Hi,
eigentlich wollte ich dem Kunden keine root zugriffsrechte gewähren.
Ich werde darüber nochmal nachdenken.
Allerdings habe ich mit sshpass und sudo den teil soweit hinbekommen.
Wie schon erwähnt habe ich das Problem beim tunnelaufbau zum Server wenn ich diesen im Hintergrund laufen lassen möchte mit -fN.
Denn dann muss ich das Passwort von dem Account interaktiv eingeben mit dem man sich beim Server anmelden möchte.
Grüße
eigentlich wollte ich dem Kunden keine root zugriffsrechte gewähren.
Ich werde darüber nochmal nachdenken.
Allerdings habe ich mit sshpass und sudo den teil soweit hinbekommen.
Wie schon erwähnt habe ich das Problem beim tunnelaufbau zum Server wenn ich diesen im Hintergrund laufen lassen möchte mit -fN.
Denn dann muss ich das Passwort von dem Account interaktiv eingeben mit dem man sich beim Server anmelden möchte.
Grüße
Re: ssh, sshpass alternativen
Wo braucht er root oder sudo?
Bei Keys braucht man kein Passwort.
Bei Keys braucht man kein Passwort.
Re: ssh, sshpass alternativen
Hi,
beim kopieren des keys werden sudo zugriffsrechte benötigt weil die Schlüssel nicht im Home Verzeichnis des Users angelegt werden.
Das kann ich ja auch verändern. Aber das funktioniert ja auch so wie ich es mache.
Wenn ich den tunnel aufbauen möchte mit
$ sshpass -p Passwort sudo ssh -o StrictHostKeyChecking=no –p 9000 dyn.IP.Address -fN –R 10022:localhost:22
Dann muss ich das Passwort des Users eingeben mit dem sich der Kunde beim Server anmelden möchte.
Wenn ich die Verbindung mit
$ sshpass -p Passwort sudo ssh -o StrictHostKeyChecking=no –p 9000 dyn.IP.Address –R 10022:localhost:22
aufbaue dann brauche ich kein Passwort eingeben.
beim kopieren des keys werden sudo zugriffsrechte benötigt weil die Schlüssel nicht im Home Verzeichnis des Users angelegt werden.
Das kann ich ja auch verändern. Aber das funktioniert ja auch so wie ich es mache.
Wenn ich den tunnel aufbauen möchte mit
$ sshpass -p Passwort sudo ssh -o StrictHostKeyChecking=no –p 9000 dyn.IP.Address -fN –R 10022:localhost:22
Dann muss ich das Passwort des Users eingeben mit dem sich der Kunde beim Server anmelden möchte.
Wenn ich die Verbindung mit
$ sshpass -p Passwort sudo ssh -o StrictHostKeyChecking=no –p 9000 dyn.IP.Address –R 10022:localhost:22
aufbaue dann brauche ich kein Passwort eingeben.
Re: ssh, sshpass alternativen
sshpass und sudo braucht man nicht.