===== SSH (Secure Shell) ===== Verwendeter Port: 22/tcp === Ausführung eines Scripts beim SSH-Login === /etc/sshrc -> Script wird ausgeführt, sobald ein User sich per SSH authentifiziert hat, das geschieht noch vor dem Laden einer Shell Möglicher Inhalt, der eine Mail raussendet, wenn ein SSH-Login erfolgt ist #!/bin/bash ip=`echo $SSH_CONNECTION | cut -d " " -f 1` hostname=`hostname` fqdn=`hostname -f` logger -t ssh-wrapper $USER login from $ip sendmail -t < From: MeinAbsender Subject: SSH Login $USER from $ip User $USER just logged in from $ip EOF Mit der Option -p kann man einen alternativen Port nutzen, falls der Server so konfiguriert wurde ssh -p @ Konfigurationsdatei: /etc/ssh/sshd_config Wichtige Parameter: PermitRootLogin yes|no -> Default: no PubKeyAuthentication yes|no -> Default: yes AllowUsers ... PasswordAuthentication -> Default: yes Protocol 2,1 -> Default: 2,1 Client-Config: /etc/ssh/ssh_config ==== SSH-Tunnel ==== === 1. Szenario === == Einen Webserver, der auf dem Zielhost auf Port 80 lüuft, über localhost port 4711 erreichbar machen == In der /etc/ssh/sshd_conf muss folgende Option aktiviert sein: AllowTcpForwarding yes Verbindungsaufbau: A → B ssh -L:Zielserver: @Zielserver z. b. ssh -L4711:192.168.178.20:80 root@192.168.178.20 Test: Internet Browser http://localhost:4711 -> man erhalt den Inhalt vom Webserver auf dem Zielserver Port 80 === 2. Szenario === == Webserver vom Zielserver Port 80, über einen Drittserver erreichen und über localhost: erreichbar machen == Verbindungsaufbau: A → C ssh -L:Zielserver: @ Der "Dritt-Server" muss Zugriff auf den Zielserver haben und das Forwarding muss erlaubt sein Test: Internet Browser http://localhost: ==== SSH per Key ==== === SSH-Key Paar auf Debian-Client [debian-efi] erzeugen === mkdir -p ~/.ssh chmod 700 ~/.ssh cd ~/.ssh # SSH-Key erzeugen ssh-keygen -t -b 4096 # 4096 ist hier die Bitlänge, TYPE_OF_KEY: dsa | ecdsa | ed25519 | rsa z. B. ssh-keygen -t rsa -b 4096 === Methode 1 -> Debian: SSH-Schlüssel manuell übertragen === scp id_rsa-pub $USER@172.16.17.1:/tmp/debian-efi_rsa.pub \\ \\ === Centos7 - SSH-Server: Public-Key Authentifizierung einrichten === mkdir -p ~/.ssh # Berechtigungen des neuen Ordners anpassen chmod 700 ~/.ssh Den vom Client kopierten public key /tmp/debian-efi_.pub an die ~/.ssh/authorized_keys anhängen cat /tmp/debian-efi_rsa.pub >> ~/.ssh/authorized_keys # Berechtigungen der Datei setzen chmod 600 authorized_keys \\ ** Fertig! Der Zugriff ohne Passwort ist jetzt per SSH möglich. ** \\ \\ === Methode 2 -> Schlüsseltausch per ssh-copy-id === == Mit ssh-copy-id den pubic-key direkt in die authorzed_keys Datei auf dem Zielsystem einstellen: == ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@172.16.17.1 sshd_config anpassen: cd /etc/ssh cp sshd_config sshd_config. vi sshd_config # folgende Option setzen/ändern PubkeyAuthentication yes systemctl restart sshd SSH-Anmeldung vom Client [debian-efi] zum Centos7-Server: ssh -i ~/.ssh/id_rsa_pub $USER@172.16.17.1 identity file in /etc/ssh/ssh_config eintragen, damit man diesen nicht immer mit -i ... angeben muss: cd /etc/ssh vi ssh_config # folgende Zeile einfügen IdentityFile ~/.ssh/id_rsa_pub ==== SSH-Agent ===== ssh-agent starten: eval `ssh-agent -s` == Privaten SSH-Schlüssel erzeugen: == mkdir -p ~/.ssh chmod 700 ~/.ssh # SSH-Key mit Passphrase anlegen ssh-keygen -t -f debian-efi-p_ # TYPE_OF_KEY: dsa | ecdsa | ed25519 | rsa z. B. mit ssh-keygen -t rsa -b 4096 -f ~/.ssh/debian-efi-p_rsa == Privaten Schlüssel hinzufügen: == ssh-add debian-efi-p_ # Passphrase wird abgefragt z. B. ssh-add debian-efi-p_rsa == Anmeldung vom Client [debian-efi] testen: == ssh -i ~/.ssh/debian-efi-p_ user1@172.16.17.1 # es wird keine Passphrase mehr abgefragt z. B. ssh- i ~/.ssh/debian-efi-p_ $USER@172.16.17.1