Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:ssh [2018/06/07 15:06] o.bohl [SSH über mehrere Hops] |
admin_grundlagen:ssh [2025/01/31 09:50] (aktuell) natureshadow2 [Serverseitig Passwortauthentifizierung abschalten] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | **Todo**: anpassen des Unit-Files bei systemd ((als Default werden alle Prozesse einer proc group bei restart oder stop gekillt. Das ist nicht das, was man bei ssh o.ä. will. | + | ====== ssh ====== |
+ | |||
+ | ===== ssh in firewalld freischalten ===== | ||
+ | |||
+ | **Enable firewall rule for ssh.** | ||
+ | |||
+ | sudo firewall-cmd --permanent --add-service=ssh | ||
+ | success | ||
+ | |||
+ | **Reload firewall rules.** | ||
+ | |||
+ | sudo firewall-cmd --reload | ||
+ | success | ||
+ | |||
+ | oder Firewall abschalten: | ||
+ | |||
+ | systemctl stop firewalld.service | ||
- | Unit-File nach /etc/systemd/system kopieren und KillMode=process rein | ||
- | und das Verhalten ist wie früher. | ||
- | Bei vielen Distris ist das Standard-Unit-File mit | ||
- | KillMode=control-group. D.h. man müsste immer und überall bei jeder | ||
- | ssh-Installation diese Änderung machen, wenn man nicht irgendwann ein | ||
- | doofes Problem haben will)) | ||
- | ====== ssh ====== | ||
===== Einsatzzwecke von ssh ===== | ===== Einsatzzwecke von ssh ===== | ||
* Fernadministration | * Fernadministration | ||
Zeile 27: | Zeile 36: | ||
scp <Datei> <Benutzer>@<Rechner>:/<Verzeichnis> | scp <Datei> <Benutzer>@<Rechner>:/<Verzeichnis> | ||
Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von <Benutzer> kopieren: | Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von <Benutzer> kopieren: | ||
- | scp <Datei> <Benutzer>@<Rechner>:<Verzeichnis> | + | scp <Datei> <Benutzer>@<Rechner>: |
+ | ====== Syntax sshd prüfen ====== | ||
+ | Vor dem Neustart des Dienstes die Konfigurationsdatei auf Syntaxfehler prüfen: | ||
+ | sshd -t | ||
+ | oder ausführlicher: | ||
+ | sshd -dddt | ||
====== Server Keys ====== | ====== Server Keys ====== | ||
===== Fingerprint Hostkey überprüfen ===== | ===== Fingerprint Hostkey überprüfen ===== | ||
- | ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub | + | ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub |
===== Server Key aus known_hosts entfernen ===== | ===== Server Key aus known_hosts entfernen ===== | ||
+ | Name und IP-Adresse aus known_hosts entfernen: | ||
+ | |||
ssh-keygen -R notebook02 | ssh-keygen -R notebook02 | ||
ssh-keygen -R 192.168.1.202 | ssh-keygen -R 192.168.1.202 | ||
===== Server Keys neu erzeugen ===== | ===== Server Keys neu erzeugen ===== | ||
- | === Debian === | + | löschen: |
rm /etc/ssh/ssh_host_*key* | rm /etc/ssh/ssh_host_*key* | ||
+ | === Debian === | ||
dpkg-reconfigure openssh-server | dpkg-reconfigure openssh-server | ||
+ | === SuSE / RedHat === | ||
+ | service sshd restart | ||
====== Public-Private-Key Authentifizierung ====== | ====== Public-Private-Key Authentifizierung ====== | ||
Zeile 50: | Zeile 69: | ||
===== Public-Key auf anderen Rechner übertragen ===== | ===== Public-Key auf anderen Rechner übertragen ===== | ||
- | ssh-copy-id -i .ssh/id_rsa.pub nutzer05@notebook06 | + | ssh-copy-id -i .ssh/id_ed25519.pub nutzer05@notebook06 |
oder von Hand: | oder von Hand: | ||
ssh nutzer05@notebook06 'mkdir -m 700 ~/.ssh' | ssh nutzer05@notebook06 'mkdir -m 700 ~/.ssh' | ||
- | ssh nutzer05@notebook06 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub | + | ssh nutzer05@notebook06 'cat >> .ssh/authorized_keys' < ~/.ssh/id_ed25519.pub |
- | ssh nutzer05@notebook06 'chmod 400 .ssh/authorized_keys' | + | ssh nutzer05@notebook06 'chmod 600 .ssh/authorized_keys' |
===== Serverseitig Passwortauthentifizierung abschalten ===== | ===== Serverseitig Passwortauthentifizierung abschalten ===== | ||
- | <file txt /etc/ssh/sshd_config> | + | <file txt /etc/ssh/sshd_config.d/local.conf> |
UsePAM no | UsePAM no | ||
PasswordAuthentication no | PasswordAuthentication no | ||
Zeile 69: | Zeile 88: | ||
PasswordAuthentication no | PasswordAuthentication no | ||
</file> | </file> | ||
+ | |||
+ | ==== Syntax prüfen ==== | ||
+ | ssh -t | ||
+ | |||
+ | ==== Dienst neu starten ==== | ||
+ | systemctl restart ssh.service | ||
===== ssh-agent ===== | ===== ssh-agent ===== | ||
Schlüssel dem ''ssh-agent'' hinzufügen: | Schlüssel dem ''ssh-agent'' hinzufügen: | ||
- | ssh-add .ssh/id_dsa | + | ssh-add .ssh/id_rsa |
((Bei openSuSE 11.0 wird der ''ssh-agent'' bei der Anmeldung nur gestartet, wenn das Verzeichnis ''~/.ssh'' existiert: | ((Bei openSuSE 11.0 wird der ''ssh-agent'' bei der Anmeldung nur gestartet, wenn das Verzeichnis ''~/.ssh'' existiert: | ||
Zeile 83: | Zeile 108: | ||
===== Nutzer Zugriff beschränken ===== | ===== Nutzer Zugriff beschränken ===== | ||
==== mit authorized_keys command ==== | ==== mit authorized_keys command ==== | ||
- | //Problem: die Datei ''~/.ssh/authorized_keys'' gehört dem Nutzer, den man einschränken möchte. // | + | //Problem: die Datei ''~/.ssh/authorized_keys'' gehört dem Nutzer, den man einschränken möchte. Mögliche Lösung: AuthorizedKeysFile, AuthorizedKeysCommand und AuthorizedKeysCommandUser // |
<file txt ~/.ssh/authorized_keys> | <file txt ~/.ssh/authorized_keys> | ||
- | command="/usr/bin/who",no-agent-forwanding,no-X11-forwarding,no-port-forwarding ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHBqUtiLsRTLKquoVXKwhrPRD92CzaN9EOkVEfWoHfdC nutzer26@notebook26 | + | restrict,command="/usr/bin/who" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHBqUtiLsRTLKquoVXKwhrPRD92CzaN9EOkVEfWoHfdC nutzer26@notebook26 |
</file> | </file> | ||
==== mit Match ==== | ==== mit Match ==== | ||
Zeile 103: | Zeile 128: | ||
+--------+ +------------+ +------------+ | +--------+ +------------+ +------------+ | ||
| ssh | | Hop Server | | server | | | ssh | | Hop Server | | server | | ||
- | | client | _ _ _ _ ssh _ _ | notebook01 | | notebook02 | | + | | client | _ _ _ ssh _ _ _ | notebook01 | | notebook02 | |
| | ================ssh========tunnel============> | | | | | ================ssh========tunnel============> | | | ||
+--------+ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ +------------+ +------------+ | +--------+ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ +------------+ +------------+ | ||
Zeile 109: | Zeile 134: | ||
===== Client ===== | ===== Client ===== | ||
- | centos 7.4, debian 9: (ab OpenSSH-Version 7.3) | + | centos 7.4, debian 9, ubuntu 18.04: (ab OpenSSH-Version 7.3) |
ssh -J notebook01.linuxhotel.de notebook02.linuxhotel.de | ssh -J notebook01.linuxhotel.de notebook02.linuxhotel.de | ||
Zeile 125: | Zeile 150: | ||
Bei älteren SSH-Versionen: | Bei älteren SSH-Versionen: | ||
- | centos 7, debian 8: | + | centos 7, debian 8, ubuntu 16.04: |
ssh -o ProxyCommand="ssh -W %h:%p notebook01.linuxhotel.de" notebook02.linuxhotel.de | ssh -o ProxyCommand="ssh -W %h:%p notebook01.linuxhotel.de" notebook02.linuxhotel.de | ||
Zeile 161: | Zeile 186: | ||
</file> | </file> | ||
+ | <file txt ~/.ssh/authorized_keys> | ||
+ | restrict,port-forwarding ssh-rsa AAAAB3NzaC1yc2EAXXXXXXXXXXXXXXXXXXXXXXXXX | ||
+ | </file> | ||
===== Agent-Forwarding nutzen ===== | ===== Agent-Forwarding nutzen ===== | ||
ssh -A notebook17 | ssh -A notebook17 |