Benutzer-Werkzeuge

Webseiten-Werkzeuge


sec:ssh

Secure Shell (SSH)

SSH-Client

Private Key-Pair generieren

$ ssh-keygen -t rsa

id_rsa(private key) in ~/.ssh speichern

Passphrase für Private Key ändern

$ ssh-keygen -p -f ~/.ssh/id_rsa

Permissions

:!: Achtung: Permissions müssen restriktiv gesetzt sein (700) für ./ssh Verzeichnis und (600) für die darin enthaltenen Keys!

$ chmod 700 .ssh && chmod 600 .ssh/*

Verbindung mit Tunnel für VNC herstellen

Portforwarding, z.B. für eine VNC-Verbindung:

$ ssh -L 5920:localhost:5920 user@example.com

Socks-Proxy um Remote zu surfen:

$ ssh -N -D2000 user@example.com
 # Im Browser muss noch der Port 2000 als Socks-Proxy angegeben werden.

Forward local:4567 port via remote Port:8080

ssh -R *:8080:localhost:4567

SSH-Server

Den generierten Public Key id_rsa.public in ~/.ssh/authorized_keys einfügen

:!: Achtung: Permissions müssen restriktiv gesetzt sein (700) für ./ssh Verzeichnis und (600) für die darin enthaltenen Keys!

 chmod 700 ~/.ssh && chmod 600 ~/.ssh/*

Danach muss ggf. in /etc/ssh/sshd_config der entsprechende Nutzernamen im Abschnitt AllowUsers oder der Gruppenname in AllowGroups eintragen und der ssh-Daemon neu gestartet werden.

Troubleshooting:

  1. Berechtigungen für Verzeichnis und Dateien richtig gesetzt?
  2. Richtiger Username (nicht root, sondern Benutzername des jeweiligen Nutzers)?
  3. Public Key muss als 1 Zeile in ~/.ssh/authorized_keys eingefügt sein, evtl. vorhandene Zeilenumbrüche entfernen!

Alternativ: ssh-copy-id

Funktioniert z.B. vom existierenden FreeBSD-Server zu einem neu aufgesetzten Linux-System mit Passwort-Authentisierung

$ ssh-copy-id -i ~/.ssh/authorized_keys user@example.com

SSH-Demon konfigurieren:

$ vim /etc/ssh/sshd_config
$ man sshd_config

Passwort Authentisierung ausschalten:

#PasswordAuthentication yes

ändern zu:

PasswordAuthentication no

Überprüfen der Syntax vor dem Start des SSH-Demons:

$ sshd -t

Firewall Konfiguration (iptables)

-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --set --name sshattack --rsource
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --rcheck --seconds 300 --hitcount 3 --name sshattack --rsource -j LOG --log-prefix "SSH Drop: "
-A INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -m recent --rcheck --seconds 300 --hitcount 3 --name sshattack --rsource -j REJECT --reject-with tcp-reset
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
sec/ssh.txt · Zuletzt geändert: 2023/12/03 18:54 von admin