| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
| netzwerke:ssh [2022/06/18 17:52] – [SSH absichern] st | netzwerke:ssh [2026/05/26 16:15] (aktuell) – [ForwardAgent / ProxyCommand] st |
|---|
| * [[http://www.freesoftwaremagazine.com/articles/run_any_gnu_linux_app_on_windows_without_any_virtualization|Using SSH to access programs from an Ubuntu box]] | * [[http://www.freesoftwaremagazine.com/articles/run_any_gnu_linux_app_on_windows_without_any_virtualization|Using SSH to access programs from an Ubuntu box]] |
| * [[http://www.pro-linux.de/news/1/22882/microsoft-portiert-openssh-auf-windows.html|Microsoft portiert OpenSSH auf Windows]] | * [[http://www.pro-linux.de/news/1/22882/microsoft-portiert-openssh-auf-windows.html|Microsoft portiert OpenSSH auf Windows]] |
| | * Powershell einstellen das er sich passphrase merkt: |
| | * https://gist.github.com/danieldogeanu/16c61e9b80345c5837b9e5045a701c99 |
| | * https://stackoverflow.com/questions/370030/why-git-cant-remember-my-passphrase-under-windows |
| | |
| |
| === Clients === | === Clients === |
| |
| - man legt ggf. einen eigenen Benutzer an | - man legt ggf. einen eigenen Benutzer an |
| - RSA-Schlüssel erzeugen (dsa-keys sind unsicher; Standard sind 2048 Bit, hier auf 3072 Bit erhöht) <code bash>ssh-keygen -t rsa -b 3072</code>. Ausgabe:<file> | - **Ed25519** <code bash>ssh-keygen -t ecdsa</code> oder **RSA**-Schlüssel erzeugen (für alten OpenSSH-Versionen vor 6.5; dsa-keys sind unsicher; Standard sind 2048 Bit, hier auf 4096 Bit erhöht) <code bash>ssh-keygen -t rsa -b 4096</code>. Ausgabe:<file> |
| ssh-keygen -t rsa -b 3072 | ssh-keygen -t rsa -b 4096 |
| Generating public/private rsa key pair. | Generating public/private rsa key pair. |
| Enter file in which to save the key (/home/USER/.ssh/id_rsa): id_rsa | Enter file in which to save the key (/home/USER/.ssh/id_rsa): id_rsa |
| SHA256:hspFtyqTQd0VdPwMpgIa/FVHResMIZBJG/VgNHYi3hk freier-Kommentar-z.B.-e-Mail-oder-USER@HOST | SHA256:hspFtyqTQd0VdPwMpgIa/FVHResMIZBJG/VgNHYi3hk freier-Kommentar-z.B.-e-Mail-oder-USER@HOST |
| The key's randomart image is: | The key's randomart image is: |
| +---[RSA 3072]----+ | +---[RSA 4096]----+ |
| | . .=OE+*oo | | | .+.o. ++| |
| | o..o+O %+. . | | | . .o+o. = +| |
| | .+oo= ooo+. | | | . ..oo+ + = | |
| | ....o... +o | | | . .. oo+o o .| |
| | . o S. o | | | o .S oo.. *.| |
| | . = o | | | =oo o = o| |
| | * . | | | +.* + E| |
| | o | | | ..o * | |
| | | | | .+++ | |
| +----[SHA256]-----+ | +----[SHA256]-----+ |
| </file>''id_rsa'' ist der private Schlüssel und ''id_rsa.pub'' ist der öffentliche Schlüssel. | </file>''id_rsa'' ist der private Schlüssel und ''id_rsa.pub'' ist der öffentliche Schlüssel. |
| |
| Das erledigt dieser folgende Befehl: ''ssh-keygen -i -f $Dateiname'' | Das erledigt dieser folgende Befehl: ''ssh-keygen -i -f $Dateiname'' |
| | |
| | == Pubkey aus private Key erzeugen == |
| | |
| | Falls der pubkey nicht vorliegt: <code bash>ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub</code> |
| | |
| |
| ==== ForwardAgent / ProxyCommand ==== | ==== ForwardAgent / ProxyCommand ==== |
| |
| Im Normlfall meldet man sich direkt an einem Server mit seinem SSH-Schlüssel an. | Im Normalfall meldet man sich direkt an einem Server mit seinem SSH-Schlüssel an. |
| Manchmal sind jedoch interne Server nicht direkt erreichbar sondern müssen über einen Gateway/Jumphost-Server erreicht werden. | Manchmal sind jedoch interne Server nicht direkt erreichbar sondern müssen über einen Gateway/Jumphost-Server erreicht werden. |
| |
| |
| <code bash> | <code bash> |
| ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key | ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key |
| ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key | ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key |
| ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key | ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key |
| ==== SSH-Passphrase hinzufügen / ändern ==== | ==== SSH-Passphrase hinzufügen / ändern ==== |
| |
| Der private Schlüssel sollte mit einem Passwort bzw. einer Passphrase geschützt werden. Änderungen der Passphrase geht einfach mit ''ssh-keygen'': | Der private Schlüssel sollte mit einem Passwort bzw. einer Passphrase geschützt werden. |
| | |
| | Überprüfen ob Passphrase gesetzt (wenn ja, dann Fehlermeldung "incorrect passphrase supplied to decrypt private key"): ''ssh-keygen -y -P "" -f ~/.ssh/id_rsa'' |
| | |
| | Änderungen der Passphrase geht einfach mit ''ssh-keygen'': |
| |
| <code bash>ssh-keygen -f ~/.ssh/id_dsa -p</code> | <code bash>ssh-keygen -f ~/.ssh/id_dsa -p</code> |
| |
| RSA: <code bash>openssl rsa -in ~/.ssh/id_rsa -out private_key_without_pass_phrase</code> | RSA: <code bash>openssl rsa -in ~/.ssh/id_rsa -out private_key_without_pass_phrase</code> |
| DSA: ? | ECDSA: ? |
| ECDSH: ? | ED25519:? |
| ==== Verbindungsabbrüche verhindern ==== | ==== Verbindungsabbrüche verhindern ==== |
| |
| |
| - **nur Protokollversion 2** benutzen <file>Protocol 2</file> | - **nur Protokollversion 2** benutzen <file>Protocol 2</file> |
| - **keine root-logins** zulassen <file>PermitRootLogin no</file>Administration wird ausschließlich über normale Benutzer vorgenommen und dann [[linux:rechte#su/sudo|fallweise per sudo oder bei Bedarf permanent (su) auf root-Rechte wechseln]]. Dazu muss ein Eintrag in der Datei ''/etc/sudoers'' angelegt werden (mit dem Befehl ''visudo''): <file>Benutzer1 ALL=(ALL) ALL</file>Es kann auch die Berechtigung für einzelne Aufgaben vergeben werden (zur Not auch ohne Passworteingabe) | - **keine root-logins** zulassen (Administration wird ausschließlich über normale Benutzer vorgenommen und dann [[linux:rechte#su/sudo|fallweise per sudo oder bei Bedarf permanent (su) auf root-Rechte wechseln]]. Dazu muss ein Eintrag in der Datei ''/etc/sudoers'' angelegt werden (mit dem Befehl ''visudo''): <file>Benutzer1 ALL=(ALL) ALL</file>Es kann auch die Berechtigung für einzelne Aufgaben vergeben werden (zur Not auch ohne Passworteingabe)): |
| | - <file>PermitRootLogin no</file> in der ''/etc/ssh/sshd_config'' anschließend ''systemctl reload sshd'' |
| | - oder nur pubkey: <file>PermitRootLogin without-password</file> |
| | - Warnmeldung + logout via /root/.ssh/authorized_keys: <file>command="echo 'Please login as the user \"debian\" rather than the user \"root\".';echo;sleep 10;exit 142" ssh-rsa some-key text |
| | </file> |
| - **Distributionsbanner** abschalten (Beispiel: SSH-2.0-OpenSSH_5.9p1 //Debian-5ubuntu1.10// :!: Version wird immer noch angezeigt, dafür gibt es keine Option): | - **Distributionsbanner** abschalten (Beispiel: SSH-2.0-OpenSSH_5.9p1 //Debian-5ubuntu1.10// :!: Version wird immer noch angezeigt, dafür gibt es keine Option): |
| - [[ubuntu:Ubuntu]]:<file>DebianBanner no</file> | - [[ubuntu:Ubuntu]]:<file>DebianBanner no</file> |