OpenSSH ermöglicht die passwortfreie Anmeldung mit einem kryptografischen Schlüssel auf einem entfernt stehenden Rechner und verbindet das Terminal über eine abhörsichere Verbindung mit dem Kommandointerpreter.
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 durmstrang User root Hostname 192.168.23.2
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 | Lokale Kanalnummer 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 | Kanalnummer 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 | Kanalnummer 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 | Kanalnummer 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 | Kanalnummer 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