Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:ssh [2020/10/02 07:40] – [Reverse SSH] adilinux:ssh [2024/02/26 14:23] (aktuell) adi
Zeile 11: Zeile 11:
  
 ===== SSH Ohne Password ===== ===== SSH Ohne Password =====
-Möchte man per Skript einen Befehl über ssh senden, dann würde das Skript immer nach dem Password fragen. +Möchte man per Script einen Befehl über ssh senden, dann würde das Script immer nach dem Password fragen. 
-Wenn dieses Skript dann aber per "cron" laufen soll, muss man hier eine andere Authentifizierungsmethode wählen: Host-Key+Wenn dieses Script dann aber per "cron" laufen soll, muss man hier eine andere Authentifizierungsmethode wählen: Host-Key
  
-==== RSA-Key erstellen ====+==== Public-Key erstellen ====
 So erstellt man einen RSA Host-Key: So erstellt man einen RSA Host-Key:
-  ssh-keygen -t rsa+  ssh-keygen -t [rsa|Ed25519]
 Zunächst fragt das Programm nach dem Pfad zur RSA-Datei. Diesen kann man einfach bestätigen. Zunächst fragt das Programm nach dem Pfad zur RSA-Datei. Diesen kann man einfach bestätigen.
 Nimmt man hier aber einen anderen Dateinamen oder Pfad, muss man bei der SSH-Verbindung den Pfad explizit angeben. Nimmt man hier aber einen anderen Dateinamen oder Pfad, muss man bei der SSH-Verbindung den Pfad explizit angeben.
Zeile 45: Zeile 45:
 echo echo
 echo echo
-echo "Dieses Skript kopiert den öffentlichen SSH-RSA Key auf den unten angegebenen PC."+echo "Dieses Script kopiert den öffentlichen SSH-RSA Key auf den unten angegebenen PC."
 echo "Danach kann man sich mit einer Passphrase am PC anmelden." echo "Danach kann man sich mit einer Passphrase am PC anmelden."
 echo echo
Zeile 71: Zeile 71:
  
 ===== Reverse SSH ===== ===== Reverse SSH =====
-Reverse SSH Tunnel können genutzt werden um Zugriff auf ein Remote SSH-Client zu erhalten, welcher hinter einer Firewall ist und diese keine Portfreigaben konfiguriert hat.+Reverse SSH Tunnel können genutzt werden um Zugriff auf ein Remote SSH-Server/CLient zu erhalten, welcher hinter einer Firewall ist und diese keine Portfreigaben konfiguriert hat.
  
-Remoteclient <-----> SSH-Gateway-Server <-----> SSH-Client+Remote-Ziel-Server <-----> FIREWALL <-----> SSH-Gateway-Server <-----> SSH-Client
  
 ==== Vorbereitungen auf dem Gateway ==== ==== Vorbereitungen auf dem Gateway ====
Zeile 87: Zeile 87:
 Die 3. Zeile aktivert den Gateway-Modus und die 4. Zeile aktiviert das Weiterleiten von TCP-Paketen. Die 3. Zeile aktivert den Gateway-Modus und die 4. Zeile aktiviert das Weiterleiten von TCP-Paketen.
  
-==== Verbindugn vom Remoteclient zum Gateway ==== +==== Verbindung vom Remote-Ziel-Server zum Gateway ==== 
-Die SSH-Verbindung vom Remoteclient zum Gateway wird wie folgt aufgebaut. +Die SSH-Verbindung vom Remote-Ziel-Server zum Gateway wird wie folgt aufgebaut. 
-<code bash>ssh -p2000 -fNC -R 10011:<IP_REMOTECLIENT | localhost>:22 <USER>@<SSH_GATEWAY_IP></code>+<code bash>ssh -p2000 -fNC -R 10011:<IP_REMOTEZIEL_SERVER | localhost>:22 <USER>@<SSH_GATEWAY_IP></code>
 ^Parameter ^ Beschreibung ^ ^Parameter ^ Beschreibung ^
 | –p2000 | (optional) anderer Port anstatt von "22" auf dem Gateway | | –p2000 | (optional) anderer Port anstatt von "22" auf dem Gateway |
Zeile 96: Zeile 96:
 | C | (optional) Komprimierung einschalten, evtl. dadurch Performanceeinbußen < | C | (optional) Komprimierung einschalten, evtl. dadurch Performanceeinbußen <
 | -R | Reverse Tunnel aufgebauen | | -R | Reverse Tunnel aufgebauen |
-| 10011 | Ausgangsport des Gateways zum Remoteclient, darüber verbindet man sich vom Gateway zum Remoteclient +| 10011 | Ausgangsport des Gateways zum Remote-Ziel-Server, darüber verbindet man sich vom Gateway zum Remote-Ziel-Server 
-| localhost | Hier ist der Remoteclient selbst gemeint, bei Verbindungen zu Geräten hinter dem Remoteclient, sollte die IP-Adresse des Remoteclient verwendet werden | +| localhost | Hier ist der Remote-Ziel-Server selbst gemeint, bei Verbindungen zu Geräten hinter dem Remote-Ziel-Server, sollte die IP-Adresse des Remote-Ziel-Server verwendet werden | 
-| 22 | SSH-Eingangsport am Remoteclient |+| 22 | SSH-Eingangsport am Remote-Ziel-Server |
  
-==== Verbindung Gateway zum Remoteclient ==== +==== Verbindung Gateway zum Remote-Ziel-Server ==== 
-Hiermit verbindet man sich vom Gateway zum Remoteclient+Hiermit verbindet man sich vom Gateway zum Remote-Ziel-Server
-<code bash>ssh -p10011 <IP_REMOTECLIENT | localhost></code>+<code bash>ssh -p10011 <IP_REMOTEZIEL_SERVER | localhost></code>
  
 ==== Autossh ==== ==== Autossh ====
Zeile 108: Zeile 108:
 <code bash>apt install autossh</code> <code bash>apt install autossh</code>
  
-Verbindungsskript zum Aufbau des Reverse SSH Tunnel anlegen.+Verbindungsscript zum Aufbau des Reverse SSH Tunnel anlegen.
  
 Inhalt: Inhalt:
 <code>#!/bin/bash <code>#!/bin/bash
-/usr/bin/autossh -p2000 -fNC -R 10011:<IP_REMOTECLIENT | localhost>:22 <USER>@<SSH_GATEWAY_IP></code>+/usr/bin/autossh -p2000 -fNC -R 10011:<IP_REMOTEZIEL_SERVER | localhost>:22 <USER>@<SSH_GATEWAY_IP></code>
  
-<code bash>chmod +x <SKRIPT>.sh</code>+<code bash>chmod +x <SCRIPT>.sh</code>
  
-Nun noch das Skript per Crontab starten lassen+Nun noch das Script per Crontab starten lassen
 <code bash>crontab -e</code> <code bash>crontab -e</code>
 Inhalt einfügen: Inhalt einfügen:
-<code>@reboot <PFAD_ZU_SKRIPT.sh></code>+<code>@reboot <PFAD_ZU_SCRIPT.sh></code>
  
 ==== SSH-Tunnel erweitern ==== ==== SSH-Tunnel erweitern ====
 Mit Reverse SSH kann man auch andere Ports, wie z.B. HTTP erreichen. Mit Reverse SSH kann man auch andere Ports, wie z.B. HTTP erreichen.
 Dazu erweitert man die Verbindung um eine weitere "-R" Anweisung. Dazu erweitert man die Verbindung um eine weitere "-R" Anweisung.
-<code bash>ssh -p2000 -fNC -R 8000:<IP_REMOTECLIENT | localhost>:80 -R 10011:<IP_REMOTECLIENT | localhost>:22 <USER>@<SSH_GATEWAY_IP></code> +<code bash>ssh -p2000 -fNC -R 8000:<IP_REMOTEZIEL_SERVER | localhost>:80 -R 10011:<IP_REMOTEZIEL_SERVER | localhost>:22 <USER>@<SSH_GATEWAY_IP></code> 
-Hier wird der Port 8000 von Außen auf den Port 80 umgeleitet. Läuft der Webserver auf einem anderen Gerät, wird anstatt ''<IP_REMOTECLIENT | localhost>'' die IP-Adresse des Gerätes angegeben.+Hier wird der Port 8000 von Außen auf den Port 80 umgeleitet. Läuft der Webserver auf einem anderen Gerät, wird anstatt ''<IP_REMOTEZIEL_SERVER | localhost>'' die IP-Adresse des Gerätes angegeben. 
 ===== Troubleshooting ===== ===== Troubleshooting =====
 Wenn bei einer Verbindung folgende Antwort kommt: <code>Unable to negotiate with <IP-ADRESSE> port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1</code> Wenn bei einer Verbindung folgende Antwort kommt: <code>Unable to negotiate with <IP-ADRESSE> port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1</code>
-Dann die Verbindung wie folgt aufbauen <code bash>ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 <IP-ADRESSE></code>oder <code bash>ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes256-cbc <IP-ADRESSE></code>+Dann die Verbindung wie folgt aufbauen <code bash>ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 <IP-ADRESSE></code>oder <code bash>ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes256-cbc <IP-ADRESSE></code> oder <code bash>ssh -oHostKeyAlgorithms=+ssh-dss -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes256-cbc <IP-ADRESSE></code> 
 + 
 +Man kann in der ''~/.ssh/config'' das auch dauerhaft für den Host definieren: 
 +<code bash>Host <HOSTNAME> <FQDN> 
 +  KexAlgorithms diffie-hellman-group1-sha1 
 +  Ciphers 3des-cbc</code>
  
 Ggf. folgendes in der ''/etc/ssh/ssh_config'' einfügen/anpassen um die Parameter automatisch bei Verbindung zu verwenden: <code>KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 Ggf. folgendes in der ''/etc/ssh/ssh_config'' einfügen/anpassen um die Parameter automatisch bei Verbindung zu verwenden: <code>KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
 Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr</code> Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr</code>
Navigation
Drucken/exportieren
QR-Code
QR-Code SSH (erstellt für aktuelle Seite)