OpenSSH verbindet das Terminal über eine verschlüsselte Verbindung mit dem Kommandointerpreter auf entfernt stehenden Rechnern und ermöglicht die passwortfreie Anmeldung mit einem kryptografischen Schlüssel.
apt install openssh-client libpam-ssh sshfs
Das Client-Paket enthält folgende Programme:
ssh-keyscan
prüft fremde Hostschlüsselssh-keygen
erzeugt eigene private Schlüsselssh-agent
merkt sich Schlüssel und beantwortet Challengesssh-add
lädt Schlüssel in den Agentenssh-copy-id
kopiert den eigenen öffentlichen Schlüssel zum Hostssh
stellt Verbindung zum Server herscp
kopiert Dateien zum Hostsftp
überträgt Dateien zum HostClient | Server |
|
|
Wir generieren einmalig einen
privaten Schlüssel, der unter ~/.ssh/id_rsa
abgelegt wird.
ssh-keygen
Das Programm fragt nach einer Passphrase, mit der der private Schlüssel gesichert wird.
Wenn diese mit dem Anmeldepasswort übereinstimmt, startet
libpam-ssh
automatisch den ssh-agent(1)
.
Den öffentlichen Schlüssel aus
~/.ssh/id_rsa.pub
kopieren wird auf den Server, wo er unter
~/.ssh/authorized_keys
abgelegt wird.
ssh-copy-id Host
Eine Konfigurationsdatei hilft, wenn
Zum Beispiel:
~/.ssh/configHost Host User User
Wenn ein Server nicht direkt erreichbar ist, weil er zum Beispiel hinter einer restriktiven Firewall steht, kann man über einen exponierten Host einen Tunnel aufbauen.
ssh -N -L LocalPort:TargetHost:TargetPort [User@]JumpHost
Auch solche Weiterleitungen kann man in der Konfiguration hinterlegen.
~/.ssh/configHost TargetName User TargetUser Hostname TargetHost ProxyJump JumpHost
Verzeichnisse auf anderen Rechnern lassen sich mit dem
FUSE-Treiber
sshfs(1)
transparent montieren.
sshfs Host:Dir Dir
Zum aushängen:
fusermount -u Dir
Direktiven für die Konfiguration des Clients, siehe ssh_config(5)
Direktive | Vorgabe | Opt. | Beschreibung |
---|---|---|---|
Host | Pattern … | Rechnerspezifischen Abschnitt einleiten | |
Match | criteria | Von Bedingungen abhängigen Abschnitt einleiten | |
AddKeysToAgent | no | Passphrase im Agenten merken | |
AddressFamily | any | -4 | Internetprotokolle einschränken |
BatchMode | no | Passwortabfrage abschalten (für Skripte) | |
BindAddress | IpAddress | -b | Adresse für ausgehende Verbindungen |
BindInterface | IpAddress | -B | Schnittstelle für ausgehende Verbindungen |
CanonicalDomains | Suffix | Liste von Suchdomänen | |
CanonicalizeFallbackLocal | yes | Resolver verwenden | |
CanonicalizeHostname | no | Hostnamen über den Resolver auflösen | |
CanonicalizeMaxDots | 1 | Anzahl der Punkte im Namen, bis nicht mehr kononisiert wird | |
CanonicalizePermittedCNAMEs | Source:Dest | ||
CASignatureAlgorithms | …,ssh-rsa | Algorithmen für Zertifizierugnsstellen | |
CertificateFile | File | Benutzerzertifikat | |
ChallengeResponseAuthentication | yes | Authentifizierung via PAM erlauben | |
CheckHostIP | yes | Hostschlüssel prüfen (~/.ssh/known_hosts ) | |
Ciphers | 3des-cbc,… | -c | Chiffren für Sitzungsschlüssel |
ClearAllForwardings | no | Alle Arten von Weiterleitungen deaktivieren | |
Compression | no | -C | Daten komprimieren |
ConnectionAttempts | 1 | Obergrenze für Versuche, um eine Verbindung aufzubauen | |
ConnectTimeout | Seconds | Wartezeit bis der Server reagiert | |
ControlMaster | no | -M | Verbindung für mehrere Sitzungen teilen |
ControlPath | File | -S | Steuersockel für gemeinsame Verbindungen |
ControlPersist | no | Verbindung offen halten | |
DynamicForward | [IpAddress:]Port | Lokalen Port weiterleiten | |
EnableSSHKeysign | no | Hostschlüssel mit ssh-keysign(8) unterzeichnen | |
EscapeChar | ~ | -e | Flutchsymbol für interaktive Verbindungen |
ExitOnForwardFailure | no | Abbruch bei Fehlern mit der Weiterleitung | |
FingerprintHash | sha256 | Algorithmus um Fingerabdrücke auszugeben | |
ForwardAgent | no | -A | Agent weiterleiten (nur an vertrauenswürdige Hosts!) |
ForwardX11 | no | -X | X11-Protokoll weiterleiten |
ForwardX11Timeout | Seconds | Wartezeit für X11-Weiterleitung (20 Minuten) | |
ForwardX11Trusted | no | -Y | Zugriff auf das X11 Display |
GatewayPorts | no | -D | Zugriff auf lokale Ports erlauben |
GlobalKnownHostsFile | File … | Liste vertrauenswürdiger Hosts (/etc/ssh/ssh_known_hosts ) | |
GSSAPIAuthentication | no | -K | Authentifizierung per GSSAPI |
GSSAPIKeyExchange | no | Schlüsselaustausch per GSSAPI | |
GSSAPIClientIdentity | File | Ticket des Clients | |
GSSAPIServerIdentity | File | Identität des Servers | |
GSSAPIDelegateCredentials | no | -k | Identität an den Server weiterleiten |
GSSAPIRenewalForcesRekey | no | Sitzungsschlüssel zusammen mit Ticket erneuern | |
GSSAPITrustDns | no | Hostnamen kanonisieren | |
HashKnownHosts | no | Hostnamen verschleiern in ~/.ssh/known_hosts | |
HostbasedAuthentication | no | ~/.rhosts und ~/.shosts vertrauen | |
HostbasedKeyTypes | …,ssh-rsa | Schlüsselarten für hostbasierte Authentifizierung | |
HostKeyAlgorithms | …,ssh-rsa | Algorithmen für hostbasierte Authentifizierung | |
HostKeyAlias | Host | Alternativer Hostname in ~/.ssh/known_hosts | |
HostName | Host | Echter Hostname oder IP-Adresse | |
IdentitiesOnly | no | Nur explizit genannte Dateien verwenden | |
IdentityAgent | File | $Name | Sockel des Agenten (SSH_AUTH_SOCK ) | |
IdentityFile | ~/.ssh/id_rsa | -i | Privater Schlüssel |
IgnoreUnknown | Glob | Ignoriermuster für unbekannte Direktiven | |
Include | File | Weitere Konfigurationsdatei einbinden | |
IPQoS | lowdelay | TOS oder DSCP Klasse | |
KbdInteractiveAuthentication | yes | Serverseitig gesteuerter Dialog | |
KbdInteractiveDevices | method | Erlaubte Methoden | |
KexAlgorithms | curve25519… | Algorithmen für den Austausch des Sitzungsschlüssels | |
LocalCommand | Command | Nach Anmeldung Kommando auf dem Client ausführen | |
LocalForward | [IpAddress:]Port Host:Port | -L | Port vom Client zum Server durchreichen |
LogLevel | INFO | Verbosität beim Loggen | |
MACs | …,hmac-sha1 | -m | Algorithmen für Prüfsummen |
NoHostAuthenticationForLocalhost | no | Hostprüfung auf localhost weglassen | |
NumberOfPasswordPrompts | 3 | Obergrenze für Versuche | |
PasswordAuthentication | yes | Authentifizierung per Passwort versuchen | |
PermitLocalCommand | no | Lokale Kommandos ausführen | |
PKCS11Provider | File | -I | Pfad einer PKCS#11 Bibliothek (/usr/lib/libpkcs11.so ) |
Port | 22 | -p | Portnummer des Servers |
PreferredAuthentications | …,password | Reihenfolge der Authentifizierungsmechanismen | |
ProxyCommand | Command | Kommandos vor dem Verbinden ausführen | |
ProxyJump | [User@]Host[:Port] | -J | Zwischenschritt einfügen |
ProxyUseFdpass | no | Deskriptor weiterreichen | |
PubkeyAcceptedKeyTypes | …,ssh-rsa | Liste mit erlaubten Schlüsselarten | |
PubkeyAuthentication | yes | Authentifizierung mit Schlüssel versuchen | |
RekeyLimit | Bytes[KMG] [Seconds] | Datenmenge und Dauer bis zum nächsten Sitzungsschlüssel | |
RemoteCommand | Command | -N | Kommando auf dem Server ausführen |
RemoteForward | [IpAddress:]Port | -R | Port auf dem Server weiterleiten |
RequestTTY | auto | -t | Pseudo-Terminal anfordern |
RevokedHostKeys | File | Liste mit kompromittierten Hostschlüsseln | |
SendEnv | Glob | Muster für durchzurecihende Umgebungsvariablen | |
ServerAliveCountMax | 3 | Verbindung zu inaktiven Servern nach N Versuchen beenden | |
ServerAliveInterval | 0 | Server alle N Sekunden kontaktieren | |
SetEnv | Name=Value | Umgebungsvariable setzen | |
StreamLocalBindMask | 0177 | Maske für Sockel | |
StreamLocalBindUnlink | no | Verfallene Sockel löschen | |
StrictHostKeyChecking | ask | Hostschlüssel verifizieren | |
SyslogFacility | USER | -y | Einrichtung für Protokollierung |
TCPKeepAlive | yes | Verbindung kontinuierlich prüfen | |
Tunnel | no | Port-Weiterleitung über tun -Schnittstelle | |
TunnelDevice | any[:any] | Client- und optional serverseitige Schnittstelle | |
User | User | -l | Benutzername zum Anmelden |
UpdateHostKeys | no | Zusätzliche Hostschlüssel speichern | |
UserKnownHostsFile | ~/.ssh/known_hosts | Liste verrauenswürdiger Hostschlüssel | |
VerifyHostKeyDNS | no | Einem eventuellen SSHFP Record vertrauen | |
VisualHostKey | no | Hostschlüssel beim Anmelden darstellen | |
XAuthLocation | /usr/bin/xauth | Programm für X11-Authentifizierung |
no
yes
confirm
ask
no
yes
ask
auto
bsdauth
pam
gssapi-with-mic
hostbased
publickey
keyboard-interactive
password
auto
no
yes
force
ask
accept-new
yes
no
off
no
yes
point-to-point
ethernet
no
yes
ask
Direktiven für die Konfigurations des Daemons, siehe sshd_config(5)
Direktive | Vorgabe | Opt. | Beschreibung |
---|---|---|---|
AcceptEnv | Glob | Muster für durchreichbare Umgebungsvariablen (Keine) | |
AddressFamily | any | -4 | Internetprotokolle einschränken |
AllowAgentForwarding | yes | Agenten durchreichen | |
AllowStreamLocalForwarding | yes | Weiterleitung von Sockeln erlauben | |
AllowTcpForwarding | yes | Weiterleitung von TCP-Ports erlauben | |
AllowGroups | Group | Liste von zugelassenen Gruppen (Alle) | |
AllowUsers | User[@Host] | Liste von zugelassenen Benutzern (Alle) | |
AuthenticationMethods | any | Erlaubte Authentifizierungsmethoden | |
AuthorizedKeysFile | ~/.ssh/authorized_keys | Liste öffentlicher Schlüssel | |
AuthorizedKeysCommand | File | Kommando, dass eine Liste mit Schlüsseln erzeugt | |
AuthorizedKeysCommandUser | Uid | Benutzer, unter dem das Kommando ausgeführt wird | |
AuthorizedPrincipalsFile | File | Namensliste für Authentifizierung per Zertifikat | |
AuthorizedPrincipalsCommand | File | Kommando mit Liste erlaubter Namen erzeugen | |
AuthorizedPrincipalsCommandUser | Uid | Benutzer, mit dem das Kommando ausgeführt wird | |
Banner | File | Datei vor Authentifizierung anzeigen. | |
CASignatureAlgorithms | …,ssh-rsa | Algorithmen für Zertifizierungsstellen | |
ChallengeResponseAuthentication | yes | Authentifizierung via PAM | |
ChrootDirectory | none | Pfad um Sitzungen einzusperren | |
Ciphers | 3des-cbc,… | Chiffren für Sitzungsschlüssel | |
ClientAliveCountMax | 3 | Verbindung zu inaktiven Clients nach N Versuchen beenden | |
ClientAliveInterval | 0 | Client alle N Sekunden kontaktieren | |
Compression | yes | Daten komprimieren | |
DebianBanner | yes | Distributionsspezifisches Suffix übermitteln | |
DenyGroups | Group | Liste von ausgeschlossenen Benutzergruppen (Keine) | |
DenyUsers | User[@Host] | Liste von ausgeschlossenen Benutzern (Keine) | |
DisableForwarding | no | Alle Arten von Weiterleitung deaktivieren | |
ExposeAuthInfo | no | Authentifizierungsdaten protokollieren (SSH_USER_AUTH ) | |
FingerprintHash | sha256 | Algorithmus um Fingerabdrücke zu protokollieren | |
ForceCommand | none | Festes Kommando ausführen (SSH_ORIGINAL_COMMAND ) | |
GatewayPorts | no | Weitergeleitete Ports auch an externe Schnittstellen binden | |
GSSAPIAuthentication | no | Authentifizierung per GSSAPI erlauben | |
GSSAPIKeyExchange | no | Schlüsseltausch per GSSAPI statt SSH erlauben | |
GSSAPICleanupCredentials | yes | Tickets beim Abmelden löschen | |
GSSAPIStrictAcceptorCheck | yes | ? | |
GSSAPIStoreCredentialsOnRekey | no | ? | |
HostbasedAcceptedKeyTypes | …,ssh-rsa | Algorithmen für hostbasierte Authentifizierung | |
HostbasedAuthentication | no | ~/.rhosts , ~/.shosts und /etc/hosts.equiv vertrauen | |
HostbasedUsesNameFromPacketOnly | no | Vertrauenswürde Hosts per DNS auflösen | |
HostCertificate | File | -c | Optionales Hostzertifikat |
HostKey | /etc/ssh/*_key | -h | Privater Hostschlüssel |
HostKeyAgent | File | Sockel für den Agenten (SSH_AUTH_SOCK ) | |
HostKeyAlgorithms | …,ssh-rsa | Algorithmen für Hostschlüssel | |
IgnoreRhosts | yes | Benutzereigene ~/.rhosts und ~/.shosts ignorieren | |
IgnoreUserKnownHosts | no | Benutzereigene ~/.ssh/known_hosts ignorieren | |
IPQoS | lowdelay | TOS oder DSCP Klasse | |
KbdInteractiveAuthentication | yes | Serverseitig gesteuerter Dialog | |
KerberosAuthentication | no | Passwort gegen Kerberos prüfen (benötigt servtab ) | |
KerberosGetAFSToken | no | Bei Anmeldung AFS-Token holen | |
KerberosOrLocalPasswd | yes | Passwort notfalls per NSS prüfen | |
KerberosTicketCleanup | yes | Tickets nach Abmeldung löschen | |
KexAlgorithms | curve25519… | Algorithmen für den Austausch des Sitzungsschlüssels | |
ListenAddress | Host[:Port] | Adressen auf den der Daemon lauscht | |
LoginGraceTime | 120 | -g | Wartezeit bis zur erfolgreichen Anmeldung |
LogLevel | INFO | Achtung, DEBUG protokolliert auch Passwörter | |
MACs | …,hmac-sha1 | Algorithmen für Prüfsummen (MAC) | |
Match | criteria | Von Bedingungen abhängigen Abschnitt einleiten | |
MaxAuthTries | 6 | Obergrenze für Authentifizierungsversuche | |
MaxSessions | 10 | Obergrenze für Sitzungen pro Verbindung | |
MaxStartups | 10:30:100 | Obergrenzen für Verbindungsversuche | |
PasswordAuthentication | yes | Anmeldung mit Passwort erlauben | |
PermitEmptyPasswords | no | Anmeldung mit Passwort nur erlauben, wenn gesetzt | |
PermitListen | [Host:]Port | Lauschende Port-Weiterleitung einschränken | |
PermitOpen | Host:Port | Ziele für Port-Weiterleitung einschränken | |
PermitRootLogin | prohibt-password | Anmeldung als root erlauben | |
PermitTTY | yes | Pseudo-Terminal reservieren | |
PermitTunnel | no | Port-Weiterleitung über tun -Schnittstelle erlauben | |
PermitUserEnvironment | no | Muster für überschreibbare Umgebungsvariablen | |
PermitUserRC | yes | Bei Anmeldung Benutzerskript ~/.ssh/rc ausführen | |
PidFile | /run/sshd.pid | Pfad der Prozessnummer, none für keine | |
Port | 22 | -p | Portnummer des Daemons |
PrintLastLog | yes | Datum der letzten Anmeldung ausgeben | |
PrintMotd | yes | Tagesmotto bei Anmeldung ausgeben (/etc/motd ) | |
PubkeyAcceptedKeyTypes | …,ssh-rsa | Liste mit erlaubten Schlüsselarten (ssh -Q key ) | |
PubkeyAuthentication | yes | Authentifizierung mit Schlüssel | |
RekeyLimit | Bytes[KMG] [Seconds] | Datenmenge und Dauer bis zum nächsten Sitzungsschlüssel | |
RevokedKeys | File | Liste mit kompromittierten Benutzerschlüsseln | |
RDomain | Siehe rdomain(4) | ||
SetEnv | Name=Value | Umgebungsvariable setzen | |
StreamLocalBindMask | 0177 | Maske für Sockel | |
StreamLocalBindUnlink | no | Verfallene Sockel löschen | |
StrictModes | yes | Zugriffsrechte prüfen | |
Subsystem | Name Command | Externes Subsystem (sftp ) | |
SyslogFacility | AUTH | Einrichtung für Protokollierung | |
TCPKeepAlive | yes | Verbindung kontinuierlich prüfen | |
TrustedUserCAKeys | File | Liste mit vertrauenswürdigen Zertifizierungsstellen | |
UseDNS | no | Adressen zu Hostnamen auflösen | |
UsePAM | no | Passwörter mittels PAM prüfen | |
VersionAddendum | - | Zusätzlicher Text beim Verbindungsaufbau | |
X11DisplayOffset | 10 | Basis für Indexnummer der Anzeige | |
X11Forwarding | no | X11-Protokoll weiterleiten | |
X11UseLocalhost | yes | Lokale Adresse für X11-Port | |
XAuthLocation | /usr/bin/xauth | Programm für X11-Authentifizierung |
any
inet
inet6
any
none
publickey
password
hostbased
keyboard-interactive
gssapi-with-mic
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-ed25519
rsa-sha2-512
rsa-sha2-256
ssh-rsa
3des-cbc
aes128-cbc
…
md5
sha256
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
ssh-ed25519-cert-v01@openssh.com
rsa-sha2-512-cert-v01@openssh.com
rsa-sha2-256-cert-v01@openssh.com
ssh-rsa-cert-v01@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-ed25519
rsa-sha2-512
rsa-sha2-256
ssh-rsa
…
ssh-rsa
hmac-md5
hmac-sha1
hmac-sha2-512
…
lowdelay
throughput
reliability
af[1-4][1-3]
cs[0-7]
ef
N
none
curve25519-sha256
…
ecdh-sha2-nistp521
QUIET
FATAL
ERROR
INFO
VERBOSE
DEBUG
DEBUG1
DEBUG2
DEBUG3
DAEMON
USER
AUTH
LOCAL[0-7]
User
Group
Host
LocalAddress
LocalPort
RDomain
Address
prohibit-password
forced-commands-only
yes
no
yes
point-to-point
ethernet