Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
linux:ssh [2020/10/02 06:55] – adi | linux:ssh [2024/02/26 14:23] (aktuell) – adi | ||
---|---|---|---|
Zeile 11: | Zeile 11: | ||
===== SSH Ohne Password ===== | ===== SSH Ohne Password ===== | ||
- | Möchte man per Skript | + | Möchte man per Script |
- | Wenn dieses | + | Wenn dieses |
- | ==== 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 " | + | echo " |
echo " | echo " | ||
echo | echo | ||
Zeile 70: | Zeile 70: | ||
fi</ | fi</ | ||
- | ==== Reverse SSH ==== | + | ===== Reverse SSH ===== |
+ | Reverse SSH Tunnel können genutzt werden um Zugriff auf ein Remote SSH-Server/ | ||
- | 1 | + | Remote-Ziel-Server < |
- | sudo nano / | + | |
- | dort dann am besten folgende Einträge suchen und abändern bzw. die Einträge am Ende vornehmen: | + | |
- | ClientAliveInterval 30 | + | ==== Vorbereitungen auf dem Gateway ==== |
+ | Folgende Vorbereitungen auf dem SSH-Gateway-Server treffen. | ||
+ | <code bash>vi / | ||
+ | Einträge andern/ | ||
+ | < | ||
ClientAliveCountMax 99999 | ClientAliveCountMax 99999 | ||
GatewayPorts yes | GatewayPorts yes | ||
- | AllowTcpForwarding yes | + | AllowTcpForwarding yes</ |
- | 1 | + | |
- | 2 | + | |
- | 3 | + | |
- | 4 | + | |
- | ClientAliveInterval 30 | + | |
- | ClientAliveCountMax 99999 | + | |
- | GatewayPorts yes | + | |
- | AllowTcpForwarding yes | + | |
- | Mit den ersten beiden Zeilen wird sichergestellt, | + | |
- | GatewayPorts yes erlaubt es, das Gateway quasi als “Durchlauferhitzer” zu nutzen, d.h. von einem anderen Gerät über den Gateway | + | Die ersten 2 Zeilen sorgen dafür, dass die Verbindung, bei Inaktivität, |
+ | Die 3. Zeile aktivert | ||
- | AllowTcpForwarding yes erlaubt es, auch andere | + | ==== Verbindung vom Remote-Ziel-Server zum Gateway ==== |
+ | Die SSH-Verbindung vom Remote-Ziel-Server zum Gateway wird wie folgt aufgebaut. | ||
+ | <code bash>ssh -p2000 -fNC -R 10011:< | ||
+ | ^Parameter ^ Beschreibung ^ | ||
+ | | –p2000 | (optional) anderer Port anstatt von " | ||
+ | | -f | SSH in den Hintergrund schicken, damit die Verbindung weiterläuft, auch wenn man die eigene SSH-Verbindung trennt | | ||
+ | | N | keine Remote-Kommandos annemmen, nur Tunnel aufbauen | | ||
+ | | C | (optional) Komprimierung einschalten, | ||
+ | | -R | Reverse Tunnel aufgebauen | | ||
+ | | 10011 | Ausgangsport des Gateways zum Remote-Ziel-Server, | ||
+ | | localhost | Hier ist der Remote-Ziel-Server selbst gemeint, bei Verbindungen zu Geräten hinter dem Remote-Ziel-Server, | ||
+ | | 22 | SSH-Eingangsport am Remote-Ziel-Server | | ||
+ | |||
+ | ==== Verbindung Gateway zum Remote-Ziel-Server ==== | ||
+ | Hiermit verbindet man sich vom Gateway zum Remote-Ziel-Server. | ||
+ | <code bash>ssh -p10011 < | ||
+ | |||
+ | ==== Autossh ==== | ||
+ | Die Verbindung kann mit dem Tool '' | ||
+ | <code bash>apt install autossh</ | ||
+ | |||
+ | Verbindungsscript zum Aufbau des Reverse SSH Tunnel anlegen. | ||
+ | |||
+ | Inhalt: | ||
+ | < | ||
+ | / | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Nun noch das Script per Crontab starten lassen | ||
+ | <code bash> | ||
+ | Inhalt einfügen: | ||
+ | < | ||
+ | |||
+ | ==== SSH-Tunnel erweitern ==== | ||
+ | Mit Reverse SSH kann man auch andere | ||
+ | Dazu erweitert man die Verbindung um eine weitere " | ||
+ | <code bash>ssh -p2000 -fNC -R 8000:< | ||
+ | Hier wird der Port 8000 von Außen auf den Port 80 umgeleitet. Läuft der Webserver auf einem anderen Gerät, wird anstatt ''< | ||
===== Troubleshooting ===== | ===== Troubleshooting ===== | ||
Wenn bei einer Verbindung folgende Antwort kommt: < | Wenn bei einer Verbindung folgende Antwort kommt: < | ||
- | Dann die Verbindung wie folgt aufbauen <code bash>ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 < | + | Dann die Verbindung wie folgt aufbauen <code bash>ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 < |
+ | |||
+ | Man kann in der '' | ||
+ | <code bash> | ||
+ | KexAlgorithms diffie-hellman-group1-sha1 | ||
+ | Ciphers 3des-cbc</ | ||
Ggf. folgendes in der ''/ | Ggf. folgendes in der ''/ | ||
Ciphers 3des-cbc, | Ciphers 3des-cbc, |