Benutzer-Werkzeuge

Webseiten-Werkzeuge


open:it_ssh

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

open:it_ssh [2022/11/29 15:28] – angelegt k@iopen:it_ssh [2026/08/20 14:50] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-===== SSH einrichten ===== 
  
-Über SSH ist es möglich eine sichere Verbindung zu einem entfernten System aufzubauen, um Befehle abzusetzen oder Daten auszutauschen (SFTP). Zugriff auf einen entfernten Server (<REMOTEHOST>) ist i.d.R. eingeschränkt auf den root und die user des Servers. Über die Datei **/etc/ssh/sshd_config** läßt sich der Zugang regeln. 
- 
-Empfehlenswert: 
-  * Direkter Login von root  untersagen 
-  * Zugang nur mit Schlüssel - login ohne Schlüssel (nur Passwort) unterbinden 
-  * Optional: Eingeschränkter Zugriff über SFTP auf eingeschränkte Bereiche 
- 
-Hinweise: https://wiki.ubuntuusers.de/SSH/ 
- 
-==== SSH-Schlüssel ==== 
-Für den Zugriff mit Schlüssel müssen diese zunächst generiert werden. 
- 
-=== SSH-Key unter Linux generieren === 
-Auf einem lokalen System (Hier Debian 11) Programm open-ssh-client installieren und Schlüssel generieren. 
- 
-  $ sudo apt install openssh-client 
- 
-  $ ssh-keygen -t rsa -b 4096 
- 
-t = Typ (hier rsa) \\ 
-b = Schlüssellänge (hier 4096 Bit) \\ 
- 
-Schlüssel automatisch im (versteckten) Verzeichnis ~/.ssh/ \\ 
-Password nur freilassen, wenn Zugriff auf <REMOTEHOST> ausschließlich mit Schlüssel möglich.  
- 
-**Der private Schlüssel muss unbedingt vor fremdem Zugriff geschützt bleiben!** 
- 
-Es werden 2 Dateien angelegt: 
-  * id_rsa (privater Schlüssel) 
-  * id_rsa.pub (öffentlicher Schlüssel) 
- 
-Der öffentliche Schlüssel wird auf das entfernte System übertragen, auf das zugegriffen werden soll. \\ 
-Der private Schlüssel bleibt auf dem lokal System, auf dem er generiert wurde. Für jedes weitere (lokale) System sollte jeweils ein eigener Schlüssel generiert werden.\\ 
- 
-Zur Übertragung auf einen Server muss der <USER> dort angelegt sein und der Zugriff ohne Schlüssel (i.d.R. mit Passwort) freigegeben sein. \\ 
-Den öffentlichen Schlüssel(id_rsa.pub) auf den Server übertragen (kopieren): 
- 
-  $ ssh-copy-id <USER>@<REMOTEHOST> 
- 
-Ersetzen: <REMOTEHOST>, <USER> \\ 
-Das Passwort vom <REMOTEHOST> wird abgefragt. \\ 
- 
-Im <REMOTEHOST>-Home-Verzeichnis vom <USER> liegt die Datei **~/.ssh/authorized_keys**. In diese Datei werden die gültigen Public-Keys (automatisch) eingetragen. .ssh ist versteckt.\\ 
-Parallel wird auf dem lokalen (Linux-)Rechner der neu zugefügte Host in der Datei **~/.ssh/known_hosts** aufgenommen. 
- 
-=== SSH-Key mit Putty generieren === 
-Es ist möglich, mit dem Programm [[https://www.puttygen.com/download-putty|PuTTYgen]] unter Windows ooder anderen  OS, einen Schlüssel zu erstellen. Dann kopiert man den angezeigten Block direkt aus PuTTYgen heraus in die entfernte **~/.ssh/authorized_keys** des Servers - ggf. die Datei neu erstellen. 
- 
-Die Datei hat folgende Struktur (alles hintereinander): 
- 
-  * ssh-rsa  << dieser Text und 1 Leerzeichen\\  
-  * rsa-pub-key << der eigentliche Schlüssel aus Puttygen \\   
-  * Key Kommentar << Im Textblock von puttygen bereits enthalten\\ 
- 
-Liegt bereits ein SSH-Key vor, dann kann dieser auch für den Zugriff mit Putty oder SFTP umgewandelt werden. \\ 
-Programm PuTTYgen: Private-key importieren und als PuTTY-private-key speichern. Der kann von diversen Systemen (FileZilla, etc.) genutzt werden, sofern im entfernten Server hinterlegt. Da dieser Schlüssel kopier- und übertragbar ist, sollte er immer zusätzlich mit einem Passwort geschützt sein.  
- 
-Für Konvertierung Programm **PuTTYgen** aufrufen. 
- 
-  - Load an existing private key file 
-  - Save private key >> jetzt mit Endung .ppk 
- 
-==== Login ==== 
-== Login über Linux-Shell == 
- 
-Login mit Passwort oder wenn der key im <REMOTEHOST> hinterlegt ist: 
- 
-  $  ssh <USER>@<REMOTEHOST> 
- 
-<USER>@ kann weggelassen werden, wenn <USER> mit dem lokalen User übereinstimmt. 
- 
-Beim ersten Login, wenn der public-key noch nicht auf dem Server ist oder dieser sich geändert hat. 
-  $  ssh -i ~/.ssh/id_rsa <USER>@<REMOTEHOST> 
- 
-  * ~/.ssh/id_rsa = (relativer) Pfad und Name privater Schlüssel 
-  * <USER>@<REMOTEHOST> = User und IP# des entfernten Systems 
- 
-Beim ersten Login erfolgt eine Validierung mit dem Passwort des Systems. Bei Folgeaufrufen nur noch mit dem PW des SSH-Keys bzw. wenn keines vergeben wurde, ohne PW. \\ 
- 
-Beim ersten Login werden die dann bekannten Hosts lokal in **~/.ssh/known_hosts** gespeichert. Gibt es Änderungen an einem Host und ggf. damit verbundene Probleme, dann kann der Host daraus, oder die ganze Datei, gelöscht werden. Wird dann beim nächsten Aufruf neu generiert. 
- 
-Wurde der Schlüssel am Server geändert, oder der Server neu eingerichtet, muss er aus der lokalen Datei ~/.ssh/known_hosts ausgetragen werden. Händisch oder mit dem Befehl (IP des betroffenen Servers): 
- 
-  $ ssh-keygen -f "~/<USER>/.ssh/known_hosts" -R "<REMOTEHOST>" 
- 
-=== Login mit PuTTY === 
- 
-Mit PuTTY die Verbindung wie folgt definieren: \\ 
-  * <REMOTEHOST> 
-  * Port (weglassen, wenn 22 - Normalfall) 
-  * SSH 
-  * Name (Saved Session) 
-  * /Connection/SSH/Auth/ >> Laden: Private Key File((Mit Puttygen generierte .ppk-Datei)) \\ 
-  * Option: /Connection/Data/ >> Auto-Login username = <USER> \\ 
-  * Option: /Connection/ >> Secons between keepalives = 600 (verhindert das auto-lockout) \\ 
-  * Zurück auf "Session" und **Save** 
- 
-=== Login mit FileZilla === 
-Für den Zugriff kann die mit Puttygen generierte .ppk-Datei genutzt werden. \\ 
-Verbindugnsart: **Schlüsseldatei**. 
- 
-==== SSH-Zugriff am Server konfigurieren ==== 
- 
-  $ nano /etc/ssh/sshd_config 
- 
-    PermitRootLogin no                      #root-login von Außen verbieten 
-    PasswordAuthentication no               #Login nur mit key-file (außer s.u.) 
-    Subsystem sftp internal-sftp 
-    Match group ftpuser                     #Sonderregelung für Gruppe "ftpuser" 
-        X11Forwarding no 
-        AllowTcpForwarding no 
-        ChrootDirectory /var/www/           #FTP beschränkt auf dieses Verzeichnis 
-        ForceCommand internal-sftp 
-        PasswordAuthentication yes          #Passwort-Login für diese Gruppe ok 
- 
-==== Dateien kopieren über SSH ==== 
-Kopieren der Datei “foobar.txt” von einem entfernten Rechner auf den lokalen Rechner. 
-    $ scp <USER>@<REMOTEHOST>:foobar.txt /some/local/directory 
-Kopieren der Datei “foobar.txt” vom lokalen Rechner auf einen entfernten Rechner. 
-    $ scp foobar.txt <USER>@<REMOTEHOST>:/some/remote/directory 
-Kopieren der Datei “foobar.txt” vom Remote-Host “<REMOTEHOST_1>" auf den Remote-Host “<REMOTEHOST_2>”. 
-    $ scp <USER>@<REMOTEHOST_1>.edu:/some/remote/directory/foobar.txt \ <USER>@<REMOTEHOST_2>:/some/remote/directory/  
-Einzelne Verzeichnisse kopieren 
-Kopieren des Verzeichnisses “foo” vom lokalen Rechner in das Verzeichnis “bar” eines entfernten Rechners. 
-    $ scp -r foo <USER>@<REMOTEHOST>.edu:/some/remote/directory/bar 
-Quelle: https://www.davidkehr.com/linux-kopieren-von-und-zu-einem-computer-per-scp-ssh/ 
- 
-~~DISCUSSION~~