<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=SSH_Misc</id>
	<title>SSH Misc - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=SSH_Misc"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=SSH_Misc&amp;action=history"/>
	<updated>2026-04-16T00:43:16Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=SSH_Misc&amp;diff=68492&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „ = Remote Services – SSH =  SSH (Secure Shell) ist ein Netzwerkprotokoll für den sicheren Zugriff auf entfernte Systeme. Es verschlüsselt die gesamte Kommu…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=SSH_Misc&amp;diff=68492&amp;oldid=prev"/>
		<updated>2026-04-11T11:45:13Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „ = Remote Services – SSH =  SSH (Secure Shell) ist ein Netzwerkprotokoll für den sicheren Zugriff auf entfernte Systeme. Es verschlüsselt die gesamte Kommu…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Remote Services – SSH =&lt;br /&gt;
&lt;br /&gt;
SSH (Secure Shell) ist ein Netzwerkprotokoll für den sicheren Zugriff auf entfernte Systeme. Es verschlüsselt die gesamte Kommunikation und ersetzt unsichere Protokolle wie Telnet oder FTP.&lt;br /&gt;
&lt;br /&gt;
== Was SSH verhindert ==&lt;br /&gt;
&lt;br /&gt;
* DNS Spoofing&lt;br /&gt;
* IP Spoofing&lt;br /&gt;
* IP Source Routing&lt;br /&gt;
* Ausspähen von Klartextkennwörtern und Nutzdaten&lt;br /&gt;
* Manipulation von übertragenen Daten&lt;br /&gt;
* Angriffe auf den X11-Server&lt;br /&gt;
&lt;br /&gt;
== SSH ersetzt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Altes Protokoll !! Ersetzt durch&lt;br /&gt;
|-&lt;br /&gt;
| telnet, rlogin || ssh&lt;br /&gt;
|-&lt;br /&gt;
| ftp, rcopy || scp / sftp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das OpenSSH Paket =&lt;br /&gt;
&lt;br /&gt;
OpenSSH ist die meistverbreitete Implementierung des SSH-Protokolls unter Linux/Unix. Es enthält folgende Programme:&lt;br /&gt;
&lt;br /&gt;
* '''ssh''' – Remote-Login und Befehlsausführung&lt;br /&gt;
* '''scp''' – Secure Copy (Dateiübertragung)&lt;br /&gt;
* '''sftp''' – Secure FTP (interaktive Dateiübertragung)&lt;br /&gt;
* '''ssh-keygen''' – Schlüsselpaar generieren&lt;br /&gt;
* '''ssh-agent''' – Schlüsselverwaltung im Speicher&lt;br /&gt;
* '''ssh-add''' – Schlüssel zum Agent hinzufügen&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= SSH Verbindungsszenarien =&lt;br /&gt;
&lt;br /&gt;
[[Datei:1775821094920_image.png|600px|SSH Verbindungsszenarien]]&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei typische Szenarien:&lt;br /&gt;
&lt;br /&gt;
; Lokaler unprivilegierter Benutzer loggt sich als remote unprivilegierter Benutzer ein&lt;br /&gt;
: alice (ssh client) → ssh Verbindung → bob (ssh server)&lt;br /&gt;
&lt;br /&gt;
; Lokaler unprivilegierter Benutzer loggt sich als root ein&lt;br /&gt;
: alice (ssh client) → ssh Verbindung → root (ssh server)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= SSH Verbindungsaufbau =&lt;br /&gt;
&lt;br /&gt;
Der SSH-Verbindungsaufbau läuft in 3 Phasen ab:&lt;br /&gt;
&lt;br /&gt;
== Phase 1: Transport Layer + Key Exchange ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ssh-verbindungsaufbau-3_drawio.png|700px|SSH Verbindungsaufbau Public Key Auth]]&lt;br /&gt;
&lt;br /&gt;
# '''ClientHello''' – Client schickt unterstützte Algorithmen (KEX, Host-Key, Cipher/Hash/MAC)&lt;br /&gt;
# '''ServerHello''' – Server wählt Algorithmen und schickt seinen öffentlichen Host Key&lt;br /&gt;
# '''Host-Key-Prüfung''' – Client vergleicht den Host Key mit &amp;lt;code&amp;gt;~/.ssh/known_hosts&amp;lt;/code&amp;gt;, bei unbekanntem Host kommt eine Fingerprint-Warnung&lt;br /&gt;
# '''Diffie-Hellman/ECDH''' – Client sendet Public-Value, Server antwortet mit DH Public-Value + Signatur mit privatem Host Key&lt;br /&gt;
# '''Session Key Berechnung''' – Beide Seiten berechnen denselben Schlüssel → ab jetzt: symmetrische Verschlüsselung&lt;br /&gt;
&lt;br /&gt;
; Diffie-Hellman Prinzip&lt;br /&gt;
: Protokoll zur Schlüsselvereinbarung. Es ermöglicht, dass zwei Kommunikationspartner über eine öffentliche, abhörbare Leitung einen gemeinsamen geheimen Schlüssel in Form einer Zahl vereinbaren können.&lt;br /&gt;
&lt;br /&gt;
== Phase 2: User Authentication ==&lt;br /&gt;
&lt;br /&gt;
Ab hier ist die gesamte Kommunikation verschlüsselt.&lt;br /&gt;
&lt;br /&gt;
=== Authentifizierung mit Public Key ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ssh-verbindungsaufbau-3_drawio.png|700px|SSH Verbindungsaufbau Public Key Auth]]&lt;br /&gt;
&lt;br /&gt;
# Client sendet: Username, Methode »Public Key«, welcher Public Key&lt;br /&gt;
# Server prüft: Ist der Public Key in &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt;?&lt;br /&gt;
#* NEIN → Auth fail&lt;br /&gt;
#* JA → Challenge (Zufallsdaten) senden&lt;br /&gt;
# Client signiert die Challenge mit dem privaten Client Key und schickt die Signatur zurück&lt;br /&gt;
# Server prüft Signatur mit dem öffentlichen Client Key → bei Erfolg: '''Auth SUCCESS'''&lt;br /&gt;
&lt;br /&gt;
=== Authentifizierung mit Passwort ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ssh-verbindungsaufbau-5_drawio.png|700px|SSH Verbindungsaufbau Passwort Auth]]&lt;br /&gt;
&lt;br /&gt;
# Client sendet: Username + Methode »Password«&lt;br /&gt;
# Client sendet: Username + Passwort (verschlüsselt!)&lt;br /&gt;
# Server prüft Passwort:&lt;br /&gt;
#* NEIN → Auth fail&lt;br /&gt;
#* JA → Auth ok&lt;br /&gt;
&lt;br /&gt;
== Phase 3: Session Phase (Channels) ==&lt;br /&gt;
&lt;br /&gt;
* Session Channel wird geöffnet: Shell / Exec / PTY&lt;br /&gt;
* Symmetrisch verschlüsselt&lt;br /&gt;
* Integritätsgeschützt&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schlüsseldateien =&lt;br /&gt;
&lt;br /&gt;
== Server – Hostschlüssel ==&lt;br /&gt;
&lt;br /&gt;
Der Server hat eigene Schlüsselpaare zur Identifikation:&lt;br /&gt;
&lt;br /&gt;
; Geheime Hostschlüssel (nur root lesbar!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Öffentliche Hostschlüssel&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssh/ssh_host_rsa_key.pub&lt;br /&gt;
/etc/ssh/ssh_host_ecdsa_key.pub&lt;br /&gt;
/etc/ssh/ssh_host_ed25519_key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Client – Benutzerschlüssel ==&lt;br /&gt;
&lt;br /&gt;
; Geheimer Benutzerschlüssel (nur der Benutzer darf ihn lesen!)&lt;br /&gt;
 ~/.ssh/id_rsa&lt;br /&gt;
&lt;br /&gt;
; Öffentlicher Benutzerschlüssel&lt;br /&gt;
 ~/.ssh/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= SSH Authentifizierung mit Public/Private Keys =&lt;br /&gt;
&lt;br /&gt;
== Schlüssel generieren – ssh-keygen ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ssh-agent1-1_drawio.png|700px|SSH Agent Übersicht]]&lt;br /&gt;
&lt;br /&gt;
# Eine '''Zufallszahl''' dient als Basis für die Schlüsselgenerierung&lt;br /&gt;
# '''ssh-keygen''' erzeugt ein Schlüsselpaar:&lt;br /&gt;
#* '''Privater Schlüssel''' – bleibt lokal, wird mit einer Passphrase geschützt gespeichert&lt;br /&gt;
#* '''Öffentlicher Schlüssel''' – wird auf den Server kopiert&lt;br /&gt;
# Der private Schlüssel wird mit einer '''Passphrase''' verschlüsselt → '''Geschützter Schlüssel''' auf der Harddisk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t ed25519 -C &amp;quot;kommentar@beispiel.de&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Öffentlichen Schlüssel auf Server hinterlegen ==&lt;br /&gt;
&lt;br /&gt;
Der öffentliche Schlüssel des Benutzers muss auf dem Server in folgende Datei eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
Jede Zeile enthält den Schlüssel eines Benutzers. Zur Übersicht empfiehlt es sich, am Ende der Zeile eine Beschreibung (z. B. E-Mail) hinzuzufügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3Nz...== rudi.ruessel@beispiel.de&lt;br /&gt;
ssh-rsa AAAAB3Nz...== erwin.lindemann@beispiel.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Hosts – Serververtrauen auf Client-Seite ==&lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;lt;code&amp;gt;~/.ssh/known_hosts&amp;lt;/code&amp;gt; speichert die öffentlichen Hostschlüssel aller bekannten Server. Bei jeder Verbindung wird der Schlüssel des Servers damit verglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/.ssh/known_hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim ersten Verbindungsaufbau zu einem unbekannten Server erscheint eine Fingerprint-Warnung – erst nach Bestätigung wird der Schlüssel gespeichert.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= SSH Agent =&lt;br /&gt;
&lt;br /&gt;
== Wozu ein SSH Agent? ==&lt;br /&gt;
&lt;br /&gt;
* Für zusätzliche Sicherheit wird der private Schlüssel verschlüsselt (mit Passphrase) gespeichert&lt;br /&gt;
* Die Eingabe der Passphrase bei jeder Verbindung ist mühsam&lt;br /&gt;
* Lösung: '''ssh-agent''' entschlüsselt den Schlüssel einmalig und hält ihn sicher im '''Arbeitsspeicher'''&lt;br /&gt;
* SSH-Clients kommunizieren mit dem Agent über einen Unix-Domain-Socket&lt;br /&gt;
* Der Agent läuft über die gesamte lokale Anmeldesitzung&lt;br /&gt;
&lt;br /&gt;
== Ablauf ssh-add ==&lt;br /&gt;
&lt;br /&gt;
# Geschützter Schlüssel von der Harddisk + Passphrase eingeben&lt;br /&gt;
# → ssh-add entschlüsselt → privater Schlüssel landet im Arbeitsspeicher&lt;br /&gt;
# SSH-Clients (ssh, scp, sftp, rsync) nutzen den Schlüssel automatisch vom Agent&lt;br /&gt;
&lt;br /&gt;
== SSH Agent einrichten (systemd) ==&lt;br /&gt;
&lt;br /&gt;
Damit der SSH Agent automatisch beim Anmelden startet:&lt;br /&gt;
&lt;br /&gt;
; 1. Servicedatei anlegen&lt;br /&gt;
 vim ~/.config/systemd/user/ssh-agent.service&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=SSH key agent&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket&lt;br /&gt;
Environment=DISPLAY=:0&lt;br /&gt;
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 2. Service aktivieren&lt;br /&gt;
 systemctl --user enable --now ssh-agent.service&lt;br /&gt;
&lt;br /&gt;
; 3. SSH konfigurieren – Schlüssel automatisch zum Agent hinzufügen&lt;br /&gt;
 vim ~/.ssh/config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AddKeysToAgent yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; 4. Umgebungsvariable setzen (in .bash_profile / .zprofile / .xinitrc / .xprofile)&lt;br /&gt;
 export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[ssh agent start]] (für Systeme ohne grafische Oberfläche)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Weiterführende Themen =&lt;br /&gt;
&lt;br /&gt;
== Grundlagen ==&lt;br /&gt;
* [[ssh Grundlagen]]&lt;br /&gt;
* [[ssh Verbindungsaufbau]]&lt;br /&gt;
* [[ssh Algorythmen]]&lt;br /&gt;
* [[ssh host finger print]]&lt;br /&gt;
&lt;br /&gt;
== Client &amp;amp; Server ==&lt;br /&gt;
* [[ssh Clientseite]]&lt;br /&gt;
* [[ssh Serverseite]]&lt;br /&gt;
* [[ssh misc]]&lt;br /&gt;
&lt;br /&gt;
== Dateiübertragung ==&lt;br /&gt;
* [[scp]]&lt;br /&gt;
* [[rsync]]&lt;br /&gt;
* [[SFTP-Server]]&lt;br /&gt;
&lt;br /&gt;
== Authentifizierung ==&lt;br /&gt;
* [[SSH Agent]]&lt;br /&gt;
* [[Authentifizierung mit Schlüssel]]&lt;br /&gt;
* [[ssh passwort auf key]]&lt;br /&gt;
* [[ssh passt id_rsa zu id_rsa.pub]]&lt;br /&gt;
* [[two-factor authentication]]&lt;br /&gt;
&lt;br /&gt;
== Fortgeschrittene Themen ==&lt;br /&gt;
* [[ssh Jumphost]]&lt;br /&gt;
* [[ssh Tunnel]]&lt;br /&gt;
* [[ssh Socks Proxy]]&lt;br /&gt;
* [[ssh VPN]]&lt;br /&gt;
* [[SSH_PPP_VPN]]&lt;br /&gt;
* [[autossh]]&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
* [[ssh Windows]]&lt;br /&gt;
* [[SSH-Agent Windows Powershell]]&lt;br /&gt;
* [[SSHD Powershell]]&lt;br /&gt;
* [[Putty Tools]]&lt;br /&gt;
* [[Filezilla]]&lt;br /&gt;
&lt;br /&gt;
== Schnelleinstiege &amp;amp; Anleitungen ==&lt;br /&gt;
* [[ssh schnelleinstieg]]&lt;br /&gt;
* [[ssh howto]]&lt;br /&gt;
* [[ssh Aufgaben]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Externe Quellen =&lt;br /&gt;
&lt;br /&gt;
* [https://www.jfranken.de/homepages/johannes/vortraege/ssh1.de.html SSH Grundlagen (jfranken.de)]&lt;br /&gt;
* [https://www.digitalocean.com/community/tutorials/how-to-harden-openssh-on-ubuntu-18-04-de OpenSSH Hardening (DigitalOcean)]&lt;br /&gt;
* [https://www.sshaudit.com/hardening_guides.html SSH Audit – Hardening Guides]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:SSH]]&lt;br /&gt;
[[Kategorie:Netzwerk]]&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>