Ssh: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
'''ssh''' startet eine Secure Shell
'''ssh''' startet eine Secure Shell
= Beschreibung =
'''topic''' kurze Beschreibung
 
== Beschreibung ==
== Installation ==
== Syntax ==
=== Parameter ===
=== Optionen ===
=== Umgebungsvariablen ===
=== Exit-Status ===
 
== Konfiguration ==
=== Dateien ===
 
== Anwendungen ==
== Sicherheit ==
== Dokumentation ==
=== RFC ===
=== Man-Pages ===
=== Info-Pages ===
=== Siehe auch ===
 
== Links ==
=== Projekt-Homepage ===
=== Weblinks ===
=== Einzelnachweise ===
<references />
 
== Testfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
 
[[Kategorie:Entwurf]]
 
 
 
== Beschreibung ==
SSH baut eine verschlüsselte zu einem entfernten Rechner auf
SSH baut eine verschlüsselte zu einem entfernten Rechner auf
* Authentifizierung der Gegenstelle, kein Ansprechen falscher Ziele
* Authentifizierung der Gegenstelle, kein Ansprechen falscher Ziele
Zeile 9: Zeile 62:
  ssh <user>@<ip>
  ssh <user>@<ip>


=Konfiguration des SSH-Servers (sshd)=
== Konfiguration des SSH-Servers (sshd) ==
* die Konfiguration des SSH-Servers '''sshd''' findet über die Datei "/etc/ssh/sshd_config" statt, die Voreinstellungen sind durchweg akzeptabel
* die Konfiguration des SSH-Servers '''sshd''' findet über die Datei "/etc/ssh/sshd_config" statt, die Voreinstellungen sind durchweg akzeptabel
* es ist jedoch sinnvoll, "PermitRootLogin" auf "no" zu setzen, dann kann sich niemand als "root" einloggen, sondern meldet sich unter seinem Benutzernamen an, dann
* es ist jedoch sinnvoll, "PermitRootLogin" auf "no" zu setzen, dann kann sich niemand als "root" einloggen, sondern meldet sich unter seinem Benutzernamen an, dann
Zeile 23: Zeile 76:
* der dafür nötige Eintrag wäre "UseDNS no".
* der dafür nötige Eintrag wäre "UseDNS no".


=Authentifizierung über Public-Keys=
== Authentifizierung über Public-Keys ==
* wem die Authentifizierung über Passwörter trotz der Verschlüsselung zu unsicher ist, der benutzt am besten das Public-Key-Verfahren  
* wem die Authentifizierung über Passwörter trotz der Verschlüsselung zu unsicher ist, der benutzt am besten das Public-Key-Verfahren  
* hierbei wird asymmetrische Verschlüsselung genutzt, um den Benutzer zu authentifizieren
* hierbei wird asymmetrische Verschlüsselung genutzt, um den Benutzer zu authentifizieren
Zeile 48: Zeile 101:
* für den Fall, dass der Nutzername vom lokalen und entfernten Rechner gleich ist, genügt die Eingabe "ssh <server>"
* für den Fall, dass der Nutzername vom lokalen und entfernten Rechner gleich ist, genügt die Eingabe "ssh <server>"


=Dateitransfer=
== Dateitransfer ==
* wenn man also ein Protokoll hat, das so sicher wie nach dem heutigen Stand der Technik möglichst Daten durch einen verschlüsselten Kanal senden und empfangen kann, dann wäre es wohl Verschwendung, dieses Protokoll nur für interaktive Terminal-Sessions zu benutzen  
* wenn man also ein Protokoll hat, das so sicher wie nach dem heutigen Stand der Technik möglichst Daten durch einen verschlüsselten Kanal senden und empfangen kann, dann wäre es wohl Verschwendung, dieses Protokoll nur für interaktive Terminal-Sessions zu benutzen  
* sehr häufig möchte man bspw. einfach nur Dateien sicher von einem System zum anderen kopieren
* sehr häufig möchte man bspw. einfach nur Dateien sicher von einem System zum anderen kopieren
* dafür existieren verschiedene Programme der grafischen Benutzeroberfläche sowie gleich zwei Terminalbefehle nämlich '''scp''' und '''sftp'''
* dafür existieren verschiedene Programme der grafischen Benutzeroberfläche sowie gleich zwei Terminalbefehle nämlich '''scp''' und '''sftp'''


==Secure Copy==
=== Secure Copy ===
* (abgekürzt '''scp''') ist ein Protokoll sowie ein Programm zur verschlüsselten Übertragung von Daten zwischen zwei Computern über ein Rechnernetz  
* (abgekürzt '''scp''') ist ein Protokoll sowie ein Programm zur verschlüsselten Übertragung von Daten zwischen zwei Computern über ein Rechnernetz  
* Das Protokoll selbst implementiert nur die Dateiübertragung, für die Anmeldung und Verbindung wird SSH genutzt und auf dem entfernten Rechner ein SCP-Server aufgerufen; dieser ist gleichzeitig auch das Client-Programm. Für das darunterliegende SSH wird ein SSH-Server benötigt.
* Das Protokoll selbst implementiert nur die Dateiübertragung, für die Anmeldung und Verbindung wird SSH genutzt und auf dem entfernten Rechner ein SCP-Server aufgerufen; dieser ist gleichzeitig auch das Client-Programm. Für das darunterliegende SSH wird ein SSH-Server benötigt.
Zeile 65: Zeile 118:
  scp -rp /Quelle-Pfad/.[!.]* user@host:/Ziel-Pfad/
  scp -rp /Quelle-Pfad/.[!.]* user@host:/Ziel-Pfad/


==sftp==
=== sftp ===
* Die andere Möglichkeit des Dateitransfers lautet '''sftp'''. Das funktioniert genau so wie der normale Kommandozeilen-FTP-Client:
* Die andere Möglichkeit des Dateitransfers lautet '''sftp'''. Das funktioniert genau so wie der normale Kommandozeilen-FTP-Client:
* Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die Secure Shell (SSH) entworfene Alternative zum File Transfer Protocol (FTP), die Verschlüsselung ermöglicht.
* Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die Secure Shell (SSH) entworfene Alternative zum File Transfer Protocol (FTP), die Verschlüsselung ermöglicht.
* Mit dem Befehl '''help''' bekommt man eine Übersicht über die möglichen Kommandos.
* Mit dem Befehl '''help''' bekommt man eine Übersicht über die möglichen Kommandos.


=Benutzeroberflächen=
== Benutzeroberflächen ==
* Wem es zu mühsam ist, auf der Kommandozeile die SSH-Verbindung zu einem Server aufzubauen, der sucht vielleicht ein grafisches Programm, um Verbindungsdaten zu verwalten.
* Wem es zu mühsam ist, auf der Kommandozeile die SSH-Verbindung zu einem Server aufzubauen, der sucht vielleicht ein grafisches Programm, um Verbindungsdaten zu verwalten.
* '''PuTTY''' [[https://wiki.foxtom.de/index.php?title=Befehl:putty]]- gibt es für Linux und für Windows. Das Programm ist in den offiziellen Paketquellen enthalten.
* '''PuTTY''' [[https://wiki.foxtom.de/index.php?title=Befehl:putty]]- gibt es für Linux und für Windows. Das Programm ist in den offiziellen Paketquellen enthalten.
Zeile 76: Zeile 129:
* '''Gnome-RDP''' - mit diesem Programm kann man nicht nur RDP- und VNC-Verbindungen aufbauen, sondern auch SSH-Terminalsitzungen. In der aktuellen Version kann man die Zugangspasswörter nicht speichern und keine Angaben zum verwendeten Port machen. Es funktioniert nur mit Servern, die den Standard-SSH-Port 22 nutzen. In den offiziellen Paketquellen enthalten, benötigt '''Mono''' als Voraussetzung.
* '''Gnome-RDP''' - mit diesem Programm kann man nicht nur RDP- und VNC-Verbindungen aufbauen, sondern auch SSH-Terminalsitzungen. In der aktuellen Version kann man die Zugangspasswörter nicht speichern und keine Angaben zum verwendeten Port machen. Es funktioniert nur mit Servern, die den Standard-SSH-Port 22 nutzen. In den offiziellen Paketquellen enthalten, benötigt '''Mono''' als Voraussetzung.


=Grafische Clients=
== Grafische Clients ==
== Dolphin/kio ==
=== Dolphin/kio ===
  fish://<benutzer>@<rechner>/pfad
  fish://<benutzer>@<rechner>/pfad


  fish://user@server/home/user
  fish://user@server/home/user


=Verschlüsselung=
== Verschlüsselung ==
* '''ssh''' verschlüsselt die gesamte Kommunikation zum '''sshd''', inkl. der Anmeldung und aller Tunnels. Man kann dabei zwischen verschiedenen Verschlüsselungsalgorithmen wählen, z.B.  
* '''ssh''' verschlüsselt die gesamte Kommunikation zum '''sshd''', inkl. der Anmeldung und aller Tunnels. Man kann dabei zwischen verschiedenen Verschlüsselungsalgorithmen wählen, z.B.  
* '''3des''' gilt als besonders sicher, benötigt aber viel Rechenzeit  
* '''3des''' gilt als besonders sicher, benötigt aber viel Rechenzeit  
Zeile 92: Zeile 145:
* Eintrag '''Cipher blowfish''' für einige oder alle Hosts in der "~/.ssh/config" oder "/etc/ssh/ssh_config".
* Eintrag '''Cipher blowfish''' für einige oder alle Hosts in der "~/.ssh/config" oder "/etc/ssh/ssh_config".


=Links=
== Links ==
== Intern ==
 
== Weblinks ==
== Weblinks ==
# https://de.wikipedia.org/wiki/Secure_Shell
# https://de.wikipedia.org/wiki/Secure_Shell

Version vom 11. Juli 2022, 10:28 Uhr

ssh startet eine Secure Shell topic kurze Beschreibung

Beschreibung

Installation

Syntax

Parameter

Optionen

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

Anwendungen

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Links

Projekt-Homepage

Weblinks

Einzelnachweise


Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5


Beschreibung

SSH baut eine verschlüsselte zu einem entfernten Rechner auf

  • Authentifizierung der Gegenstelle, kein Ansprechen falscher Ziele
  • Verschlüsselung der Datenübertragung, kein Mithören durch Unbefugte
  • Datenintegrität, keine Manipulation der übertragenen Daten

it

Verbindung über SSH

ssh <user>@<ip>

Konfiguration des SSH-Servers (sshd)

  • die Konfiguration des SSH-Servers sshd findet über die Datei "/etc/ssh/sshd_config" statt, die Voreinstellungen sind durchweg akzeptabel
  • es ist jedoch sinnvoll, "PermitRootLogin" auf "no" zu setzen, dann kann sich niemand als "root" einloggen, sondern meldet sich unter seinem Benutzernamen an, dann
su 

oder:

sudo -s
  • mit den direktiven "AllowUsers" und "AllowGroups" bzw. "DenyUsers" und "DenyGroups" lässt sich festlegen, welche Benutzer sich anmelden dürfen
  • dies empfiehlt sich besonders bei Servern
  • "AllowGroups admin" verbietet bspw. allen Benutzern, die keine Mitglieder der Gruppe "admin" sind, den Zugriff
  • wer sich ausschließlich über das noch sicherere Public-Key-Verfahren anmelden will, der sollte die Benutzung von Passwörtern mit "PasswordAuthentication no" abschalten.
  • falls lange Wartezeiten bei der Anmeldung am SSH-Server auftreten, könnte das an einer fehlgeschlagenen Namensauflösung liegen
  • da man SSH über die IP benutzt, können diese DNS-Anfragen in der "sshd_config" deaktiviert werden
  • der dafür nötige Eintrag wäre "UseDNS no".

Authentifizierung über Public-Keys

  • wem die Authentifizierung über Passwörter trotz der Verschlüsselung zu unsicher ist, der benutzt am besten das Public-Key-Verfahren
  • hierbei wird asymmetrische Verschlüsselung genutzt, um den Benutzer zu authentifizieren
  • mit dem öffentlichen Schlüssel können die Daten verschlüsselt, aber nicht mehr entschlüsselt werden (Einwegfunktion)
  • nur noch der Besitzer des privaten Schlüssels, also der richtige Empfänger, kann die Daten entschlüsseln
  • dafür muss man mit dem Kommandozeilenprogramm ssh-keygen ein entsprechendes
  • Schlüsselpaar erzeugen:
ssh-keygen -t rsa -b 4096

oder

ssh-keygen -t ed25519
  • der voreingestellte Dateiname "/home/user/.ssh id_rsa" oder "/home/user/.ssh/id_ed25519" kann einfach mit bestätigt werden
  • keine leere Passphrase benutzen, weil sonst jeder, der evtl. in den Besitz dieser Datei kommt, sofortigen Zugriff auf alle zugehörigen Systeme erhält.
  • nun muss noch der öffentliche Schlüssel mit der Endung .pub "id_rsa.pub" oder "id_ed25519.pub", auf dem Zielsystem deponiert werden
  • dazu dient das Programm ssh-copy-id; zu diesem Zeitpunkt muss die Authentifizierung per Passwort noch erlaubt sein: "PasswordAuthentication yes":
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server>
  • anschließend kann man sich ohne Passwort anmelden:
ssh <user>@<server>
  • für den Fall, dass der Nutzername vom lokalen und entfernten Rechner gleich ist, genügt die Eingabe "ssh <server>"

Dateitransfer

  • wenn man also ein Protokoll hat, das so sicher wie nach dem heutigen Stand der Technik möglichst Daten durch einen verschlüsselten Kanal senden und empfangen kann, dann wäre es wohl Verschwendung, dieses Protokoll nur für interaktive Terminal-Sessions zu benutzen
  • sehr häufig möchte man bspw. einfach nur Dateien sicher von einem System zum anderen kopieren
  • dafür existieren verschiedene Programme der grafischen Benutzeroberfläche sowie gleich zwei Terminalbefehle nämlich scp und sftp

Secure Copy

  • (abgekürzt scp) ist ein Protokoll sowie ein Programm zur verschlüsselten Übertragung von Daten zwischen zwei Computern über ein Rechnernetz
  • Das Protokoll selbst implementiert nur die Dateiübertragung, für die Anmeldung und Verbindung wird SSH genutzt und auf dem entfernten Rechner ein SCP-Server aufgerufen; dieser ist gleichzeitig auch das Client-Programm. Für das darunterliegende SSH wird ein SSH-Server benötigt.
scp user@pc:datei1 datei2 user@server2:

Beispiel an unseren PC's

scp user@fileserver:~/beispieldatei.odt user@meinpc:~/beispielordner/
  • In diesem Beispiel wurde die datei1 aus dem Homeverzeichnis von benutzerx auf server1 und die datei2 aus dem aktuellen Verzeichnis des lokalen Hosts in das Homeverzeichnis von benutzery auf server2 kopiert.
  • um die versteckten Dateien zu kopieren, benutzt der Benutzer diese Option: .[!.]
scp -rp /Quelle-Pfad/.[!.]* user@host:/Ziel-Pfad/

sftp

  • Die andere Möglichkeit des Dateitransfers lautet sftp. Das funktioniert genau so wie der normale Kommandozeilen-FTP-Client:
  • Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die Secure Shell (SSH) entworfene Alternative zum File Transfer Protocol (FTP), die Verschlüsselung ermöglicht.
  • Mit dem Befehl help bekommt man eine Übersicht über die möglichen Kommandos.

Benutzeroberflächen

  • Wem es zu mühsam ist, auf der Kommandozeile die SSH-Verbindung zu einem Server aufzubauen, der sucht vielleicht ein grafisches Programm, um Verbindungsdaten zu verwalten.
  • PuTTY [[1]]- gibt es für Linux und für Windows. Das Programm ist in den offiziellen Paketquellen enthalten.
  • PAC Manager - (Perl Auto Connector) nicht in den offiziellen Paketquellen enthalten, aber über SourceForge wird ein Fremdpaket angeboten, das manuell installiert wird.
  • Gnome-RDP - mit diesem Programm kann man nicht nur RDP- und VNC-Verbindungen aufbauen, sondern auch SSH-Terminalsitzungen. In der aktuellen Version kann man die Zugangspasswörter nicht speichern und keine Angaben zum verwendeten Port machen. Es funktioniert nur mit Servern, die den Standard-SSH-Port 22 nutzen. In den offiziellen Paketquellen enthalten, benötigt Mono als Voraussetzung.

Grafische Clients

Dolphin/kio

fish://<benutzer>@<rechner>/pfad
fish://user@server/home/user

Verschlüsselung

  • ssh verschlüsselt die gesamte Kommunikation zum sshd, inkl. der Anmeldung und aller Tunnels. Man kann dabei zwischen verschiedenen Verschlüsselungsalgorithmen wählen, z.B.
  • 3des gilt als besonders sicher, benötigt aber viel Rechenzeit
  • blowfish arbeitet besonders schnell
  • Hier sind einige Möglichkeiten zur Auswahl des blowfish-Algorithmus im lokalen Netz, der die beteiligten Prozessoren entlastet und somit die Kommunikation beschleunigt:
  ssh -c blowfish ...
  ssh -o Cipher=blowfish... 
  • Eintrag Cipher blowfish für einige oder alle Hosts in der "~/.ssh/config" oder "/etc/ssh/ssh_config".

Links

Weblinks

  1. https://de.wikipedia.org/wiki/Secure_Shell