ssh, sshpass alternativen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

ssh, sshpass alternativen

Beitrag von ASbetebe » 26.07.2019 12:49:24

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.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 26.07.2019 13:00:38

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.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 27.07.2019 09:21:43

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

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: ssh, sshpass alternativen

Beitrag von hec_tech » 27.07.2019 13:44:38

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.

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"]);

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 28.07.2019 08:26:50

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.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 28.07.2019 09:19:48

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 8O

@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

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 28.07.2019 17:25:46

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.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 28.07.2019 19:35:13

Hi uname,

ich steh auf dem Schlauch. Sorry wenn ich nochmal Nachfrage. Ich kann das auch gerade nicht testen. Aber morgen !! 8)
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 :hail:

Grüße

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 29.07.2019 07:51:58

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. Debianscreen und Debiantmux kannst du optional verwenden, wenn der Kunde zuschauen will. Auch das solltest du vielleicht vorher testen.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 02.08.2019 13:09:25

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

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 02.08.2019 18:02:00

Was soll das sshpass- und sudo-Geraffel. Weg damit.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 03.08.2019 10:33:09

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

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 03.08.2019 14:06:13

sudo? Du meinst root sein. sudo: weg damit.

Nutze

Code: Alles auswählen

su -
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.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 03.08.2019 18:36:05

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

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 03.08.2019 19:43:33

Wo braucht er root oder sudo?
Bei Keys braucht man kein Passwort.

ASbetebe
Beiträge: 15
Registriert: 14.11.2018 07:31:59

Re: ssh, sshpass alternativen

Beitrag von ASbetebe » 04.08.2019 10:52:48

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.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: ssh, sshpass alternativen

Beitrag von uname » 04.08.2019 15:24:53

sshpass und sudo braucht man nicht.

Antworten