ssh_ssl
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ssh_ssl [2023-09-15 14:01:55] – [Zugriff] david | ssh_ssl [2024-07-27 22:28:01] (aktuell) – david | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== SSH / SSL ====== | ||
| + | |||
| + | * [[http:// | ||
| + | * **[[SSH-Schlüssel austauschen für ein passwortlosen Login]]** | ||
| + | * [[OpenSSL]] | ||
| + | * [[:: | ||
| + | * [[letsencrypt]] | ||
| + | * [[einzelne Dateien mit openSSL verschlüsseln]] | ||
| + | * [[Datenbankverbindungen zu einer MySQL mit SSL-Verschlüsselung]] | ||
| + | * [[https:// | ||
| + | * [[SCP-only mit Change Root]] | ||
| + | * [[SFTP-User mit Change Root]] | ||
| + | * Datenaustausch zwischen **Android** ([[https:// | ||
| + | * [[SSH/BASH mit Change Root]] | ||
| + | * [[SSH-Tunnel]] | ||
| + | * [[http:// | ||
| + | * __**[[SSH/ | ||
| + | * SSH Key erstellen | ||
| + | * '' | ||
| + | * '' | ||
| + | * SSH Key erstellen mit höherer KDF Rundenzahl (nur längere Passphrasen Verifikation) | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * //'' | ||
| + | * '' | ||
| + | * [[SSHFS]] | ||
| + | * '' | ||
| + | * [[Fehler: Gesicherte Verbindung fehlgeschlagen]] | ||
| + | |||
| + | |||
| + | ===== TLS-Ciphers anzeigen ===== | ||
| + | |||
| + | # openssl ciphers -v | fgrep TLSv1.2 | sed ' | ||
| + | ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH | ||
| + | ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH | ||
| + | DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH | ||
| + | ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH | ||
| + | ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH | ||
| + | DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH | ||
| + | ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH | ||
| + | ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH | ||
| + | DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH | ||
| + | ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH | ||
| + | ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH | ||
| + | DHE-RSA-AES256-SHA256 | ||
| + | ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH | ||
| + | ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH | ||
| + | DHE-RSA-AES128-SHA256 | ||
| + | RSA-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=RSAPSK | ||
| + | DHE-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=DHEPSK | ||
| + | RSA-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=RSAPSK | ||
| + | DHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=DHEPSK | ||
| + | ECDHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=ECDHEPSK Au=PSK | ||
| + | AES256-GCM-SHA384 | ||
| + | PSK-AES256-GCM-SHA384 | ||
| + | PSK-CHACHA20-POLY1305 | ||
| + | RSA-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=RSAPSK | ||
| + | DHE-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=DHEPSK | ||
| + | AES128-GCM-SHA256 | ||
| + | PSK-AES128-GCM-SHA256 | ||
| + | AES256-SHA256 | ||
| + | AES128-SHA256 | ||
| + | |||
| + | # openssl ciphers -v | fgrep TLSv1.3 | sed ' | ||
| + | TLS_AES_256_GCM_SHA384 | ||
| + | TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any | ||
| + | TLS_AES_128_GCM_SHA256 | ||
| + | |||
| + | |||
| + | ===== Von SSH und SCP unterstützte Ciphers anzeigen ===== | ||
| + | |||
| + | # man ssh_config | ||
| + | |||
| + | # lsb_release -a | ||
| + | No LSB modules are available. | ||
| + | Distributor ID: Ubuntu | ||
| + | Description: | ||
| + | Release: | ||
| + | Codename: | ||
| + | |||
| + | # ssh -V | ||
| + | OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, | ||
| + | |||
| + | # ssh -Q cipher | ||
| + | 3des-cbc | ||
| + | aes128-cbc | ||
| + | aes192-cbc | ||
| + | aes256-cbc | ||
| + | rijndael-cbc@lysator.liu.se | ||
| + | aes128-ctr | ||
| + | aes192-ctr | ||
| + | aes256-ctr | ||
| + | aes128-gcm@openssh.com | ||
| + | aes256-gcm@openssh.com | ||
| + | chacha20-poly1305@openssh.com | ||
| + | |||
| + | Beispiel: | ||
| + | # ssh -c rijndael-cbc@lysator.liu.se, | ||
| + | |||
| + | |||
| + | ===== SSH Config ===== | ||
| + | |||
| + | Beispiel Konfiguration, | ||
| + | <code yaml ~/ | ||
| + | # | ||
| + | # | ||
| + | #ssh -Q help | ||
| + | |||
| + | Host * | ||
| + | #ssh -Q sig | ||
| + | CASignatureAlgorithms ssh-ed25519, | ||
| + | |||
| + | #ssh -Q kex | ||
| + | KexAlgorithms curve25519-sha256, | ||
| + | |||
| + | #ssh -Q mac | ||
| + | MACs hmac-sha2-512-etm@openssh.com, | ||
| + | |||
| + | #ssh -Q cipher | ||
| + | #ssh -Q cipher-auth | ||
| + | Ciphers chacha20-poly1305@openssh.com, | ||
| + | |||
| + | #ssh -Q key | ||
| + | HostKeyAlgorithms rsa, | ||
| + | |||
| + | </ | ||
| + | |||
| + | Alle 3s ein Nullpaket (keep-alive) an den Server senden (hier bis zu 10 Mal) | ||
| + | <code yaml ~/ | ||
| + | Host * | ||
| + | ClientAliveInterval 10 | ||
| + | ClientAliveCountMax 3 | ||
| + | TCPKeepAlive yes | ||
| + | |||
| + | </ | ||
| + | |||
| + | Andere Config-Dateien einlesen | ||
| + | <code yaml ~/ | ||
| + | Include config.d/ | ||
| + | |||
| + | </ | ||
| + | |||
| + | Für den Host example.com einen anderen Standard-Port verwenden (hier: 2222) | ||
| + | <code yaml ~/ | ||
| + | Host example.com | ||
| + | Port 2222 | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== SSHD Config ===== | ||
| + | |||
| + | siehe [[https:// | ||
| + | |||
| + | ==== komplette Beispiel-Config ==== | ||
| + | |||
| + | |||
| + | === Unix-like === | ||
| + | |||
| + | <code yaml / | ||
| + | Port 22 | ||
| + | AddressFamily any | ||
| + | ListenAddress 0.0.0.0 | ||
| + | ListenAddress :: | ||
| + | |||
| + | PermitRootLogin prohibit-password | ||
| + | |||
| + | PubkeyAuthentication yes | ||
| + | AuthorizedKeysFile .ssh/ | ||
| + | |||
| + | HostbasedAuthentication no | ||
| + | |||
| + | PasswordAuthentication no | ||
| + | PermitEmptyPasswords no | ||
| + | |||
| + | KbdInteractiveAuthentication no | ||
| + | ChallengeResponseAuthentication no | ||
| + | KerberosAuthentication no | ||
| + | GSSAPIAuthentication no | ||
| + | |||
| + | UsePAM yes | ||
| + | |||
| + | X11Forwarding yes | ||
| + | PrintMotd no | ||
| + | PrintLastLog yes | ||
| + | TCPKeepAlive yes | ||
| + | ClientAliveInterval 10 | ||
| + | ClientAliveCountMax 3 | ||
| + | VersionAddendum none | ||
| + | Banner none | ||
| + | # Debian only | ||
| + | DebianBanner no | ||
| + | |||
| + | Subsystem sftp internal-sftp -u 0022 | ||
| + | |||
| + | Match User mm | ||
| + | AllowTcpForwarding no | ||
| + | ChrootDirectory /public/mm | ||
| + | ForceCommand internal-sftp | ||
| + | PasswordAuthentication yes | ||
| + | PermitTTY no | ||
| + | X11Forwarding no | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Windows === | ||
| + | |||
| + | <code yaml C:/ | ||
| + | Port 22 | ||
| + | Port 23 | ||
| + | AddressFamily any | ||
| + | ListenAddress 0.0.0.0 | ||
| + | ListenAddress :: | ||
| + | |||
| + | PermitRootLogin prohibit-password | ||
| + | |||
| + | PubkeyAuthentication yes | ||
| + | AuthorizedKeysFile .ssh/ | ||
| + | |||
| + | HostbasedAuthentication no | ||
| + | |||
| + | PasswordAuthentication no | ||
| + | PermitEmptyPasswords no | ||
| + | |||
| + | KbdInteractiveAuthentication no | ||
| + | ChallengeResponseAuthentication no | ||
| + | GSSAPIAuthentication no | ||
| + | |||
| + | PrintMotd yes | ||
| + | PrintLastLog yes | ||
| + | TCPKeepAlive yes | ||
| + | ClientAliveInterval 10 | ||
| + | ClientAliveCountMax 3 | ||
| + | VersionAddendum none | ||
| + | Banner none | ||
| + | |||
| + | Subsystem sftp internal-sftp | ||
| + | |||
| + | #Match Group administrators | ||
| + | # AuthorizedKeysFile __PROGRAMDATA__/ | ||
| + | |||
| + | # configure pwsh as default shell (run command in pwsh as admin): | ||
| + | # New-ItemProperty -Path " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Zugriff ==== | ||
| + | |||
| + | Port 22 und 23 (z.B. extern nur 23 erlauben und intern 22 nutzen) | ||
| + | |||
| + | <code yaml / | ||
| + | Port 22 | ||
| + | Port 23 | ||
| + | AddressFamily any | ||
| + | ListenAddress 0.0.0.0 | ||
| + | ListenAddress :: | ||
| + | </ | ||
| + | |||
| + | |||
| + | Port 22 (IPv4+IPv6) und 23 (IPv6) (gleiches Beispiel wie oben, falls man im Router eine IPv4 Portweiterleitung über NAT umleiten will) | ||
| + | |||
| + | <code yaml / | ||
| + | #Port 22 | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | ListenAddress 0.0.0.0:22 | ||
| + | ListenAddress [::]:22 | ||
| + | ListenAddress [::]:23 | ||
| + | </ | ||
| + | |||
| + | === Allgemein === | ||
| + | | ||
| + | <code yaml / | ||
| + | PermitRootLogin prohibit-password | ||
| + | PubkeyAuthentication yes | ||
| + | PasswordAuthentication no | ||
| + | PermitEmptyPasswords no | ||
| + | ChallengeResponseAuthentication no | ||
| + | UsePAM no | ||
| + | X11Forwarding yes | ||
| + | PrintMotd yes | ||
| + | PrintLastLog yes | ||
| + | </ | ||
| + | |||
| + | ==== SFTP ==== | ||
| + | |||
| + | Um die Standard umask zu verwenden einfach '-u 0022' weglassen | ||
| + | |||
| + | <code yaml / | ||
| + | # internal sftp (recommended) | ||
| + | Subsystem sftp internal-sftp -u 0022 | ||
| + | |||
| + | # external sftp | ||
| + | |||
| + | ## Debian/ | ||
| + | Subsystem sftp / | ||
| + | |||
| + | ## FreeBSD | ||
| + | Subsystem sftp / | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Deprecated option ===== | ||
| + | |||
| + | # The ServerKeyBits option only applies to SSH protocol version 1. | ||
| + | |||
| + | < | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 30: Deprecated option UsePrivilegeSeparation | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 33: Deprecated option KeyRegenerationInterval | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 36: Deprecated option ServerKeyBits | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 64: Deprecated option RSAAuthentication | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 77: Deprecated option RhostsRSAAuthentication | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: reprocess config line 64: Deprecated option RSAAuthentication | ||
| + | # Aug 13 13:49:12 sshserver01 sshd[3969]: reprocess config line 77: Deprecated option RhostsRSAAuthentication | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Schwäche von Diffie-Hellman für TLS ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | - Apache HTTP Server (mod_ssl) | ||
| + | - nginx | ||
| + | - Microsoft IIS | ||
| + | - Lighttpd | ||
| + | - Apache Tomcat | ||
| + | - Postfix SMTP | ||
| + | - Sendmail | ||
| + | - Dovecot | ||
| + | - HAProxy | ||
| + | - Amazon Elastic Beanstalk | ||
| + | - OpenSSH | ||
| + | |||
| + | Generating a Unique DH Group | ||
| + | > openssl dhparam -out dhparams.pem 4096 | ||
| + | |||
| + | ab Apache 2.4.8 und OpenSSL 1.0.2: | ||
| + | SSLOpenSSLConfCmd DHParameters "/ | ||
| + | |||
| + | Lighttpd: | ||
| + | > vi / | ||
| + | ... | ||
| + | ssl.dh-file="/ | ||
| + | ... | ||
| + | |||
| + | |||
| + | ===== allgemeines ===== | ||
| + | |||
| + | |||
| + | ==== SSL/TLS ==== | ||
| + | |||
| + | **TLS** hat soviele Probleme, man sollte es mind. in der Version __**1.2**__ einsetzen! | ||
| + | |||
| + | |||
| + | ==== Verschlüsselungsverfahren ==== | ||
| + | |||
| + | * __**Serpent**__ - ist der sicherste; | ||
| + | * **Twofish** - ist der zweitsicherste; | ||
| + | * **Rijndael** - ist weniger sicher als Serpent oder Twofish, es ist seit dem //02. Oktober 2000// der DES-Nachfolger und somit der US-Standard " | ||
| + | |||
| + | |||
| + | ==== Blockverschlüsselung ==== | ||
| + | |||
| + | * **EBC** - jeder Block wird mit dem selben Schlüssel verschlüsselt (das ist nicht sehr schlau) | ||
| + | * __**CBC**__ - jeder Block wird mit einem eigenen Schlüssel verschlüsselt | ||
| + | |||
| + | |||
| + | ===== OpenSSH ab Version 6.6 (ab Ubuntu 14.04 LTS) ===== | ||
| + | |||
| + | |||
| + | ==== elliptische Kurven ==== | ||
| + | |||
| + | Zur Zeit kann SSH nur den Ellyptischen-Kurven-Algorithmus ED25519, der ED448 und E-521 werden sicher später noch kommen.\\ | ||
| + | Die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen. | ||
| + | Auch von den Schlüsseln mit elliptischen Kurven wird vermutet, dass sie NSA-optimiert sind. | ||
| + | RSA mit großer Schlüssellänge ist z.Z. die sicherste Alternative. | ||
| + | |||
| + | der ED25519-Schlüssel hat eine __feste Länge von 256 Bit__, hier wird die Option '' | ||
| + | > ssh-keygen -t ed25519 -a 1024 | ||
| + | |||
| + | aus einem privaten Schlüssel einen öffentlichen generieren: | ||
| + | > ssh-keygen -y -f ~/ | ||
| + | |||
| + | Die Option **'' | ||
| + | Je größer diese Anzahl ist, desto stärker ist die Passphrase gegen Brut-Force-Angriffe gesichert aber desto langsammer ist auch der Verbindungsaufbau.\\ | ||
| + | Die Zeit, die zum generieren des Schlüssels benötigt wird, die Zeit fällt auch bei einem Verbindungsaufbau mit dem generierten Schlüssel an.\\ | ||
| + | Also wenn das generieren eines Schlüssels mit 65536 Runden ca. 10 Minuten dauert, dann wird der Vebindungsaufbau mit diesem Schlüssel von diesem Rechner (Intel Core i7-2620M 2.70GHz) aus, auch ca. 10 Minuten benötigen! | ||
| + | |||
| + | In soeinem Fall sollte man die Anzahl der Runden auf einen Wert reduzieren, bei dem die Zeit zum generieren bzw. für den Verbindungsaufbau, | ||
| + | |||
| + | Auf einem Rechner mit einer "Intel Core i7-2620M 2.70GHz" | ||
| + | |||
| + | Die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen. | ||
| + | Auch von den Schlüsseln mit elliptischen Kurven wird vermutet, dass sie NSA-optimiert sind. | ||
| + | Weiterhin gilt die Einschränkung, | ||
| + | Auch wenn von RSA nicht vermutet wird, das es NSA-optimiert ist, so arbeitet RSA doch deterministisch und ist deshalb unter Umständen für bestimmte Angriffe anfällig. In der Praxis wird RSA daher mit dem " | ||
| + | Daraus ergibt sich, dass ein RSA-Algorithmus, | ||
| + | |||
| + | Ein 160 Bit langer Schüssel, der auf elliptischen Kurven basieren (ECDH), gilt als ähnlich sicher wie ein 1024 Bit langer RSA-Schlüssel (RSA/DH): | ||
| + | 160 Bit ECDH - 1024 Bit RSA/DH | ||
| + | 224 Bit ECDH - 2048 Bit RSA/DH | ||
| + | 256 Bit ECDH - 3072 Bit RSA/DH | ||
| + | 384 Bit ECDH - 7680 Bit RSA/DH | ||
| + | ECDH-Schlüssel eignet sich daher besonders dann, wenn die Speicher- oder Rechenkapazität begrenzt ist, z. B. in Smartcards oder anderen eingebetteten Systemen. | ||
| + | |||
| + | |||
| + | ===== OpenSSH bis Version 6.5 (bis Ubuntu 12.04 LTS) ===== | ||
| + | |||
| + | einen eigenen RSA-Schlüssel generieren: | ||
| + | > ssh-keygen -t rsa -b 8192 | ||
| + | |||
| + | aus einem privaten Schlüssel einen öffentlichen generieren: | ||
| + | > ssh-keygen -y -f ~/ | ||
| + | |||
| + | |||
| + | ==== Verbindungen mit TTL ==== | ||
| + | |||
| + | so werden alle SSH-Verbindungen nach 300 Sekunden (5 Minuten) " | ||
| + | > vi / | ||
| + | < | ||
| + | ClientAliveInterval 300 | ||
| + | ClientAliveCountMax 0 | ||
| + | </ | ||
| + | |||
| + | so bleiben alle SSH-Verbindungen solange offen, wie der Rechner eingeschaltet ist: | ||
| + | > vi / | ||
| + | < | ||
| + | # | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | Nicht vergessen, nach einer Änderung an dieser Konfigurationsdatei den SSH-Dienst neu zu starten. | ||
| + | |||
| + | |||
| + | ==== ChRoot mit SSH/BASH ==== | ||
| + | |||
| + | Benutzer anlegen: | ||
| + | # useradd -m -c " | ||
| + | # mkdir -p / | ||
| + | |||
| + | SSH-Schlüssel anlegen: | ||
| + | # su - fritz | ||
| + | # ssh-keygen -t rsa -b 4096 | ||
| + | # exit | ||
| + | |||
| + | Die Rechte für die ChRoot-Funktion passend setzen: | ||
| + | # chown -R 0:0 /home/fritz | ||
| + | # chown -R fritz:fritz / | ||
| + | # chown -R fritz:fritz / | ||
| + | # chown -R fritz:fritz / | ||
| + | |||
| + | Binärdateien in die ChRoot-Umgebung kopieren: | ||
| + | # tar cvzf bash.tgz /bin/ /lib/ /lib64/ /usr/bin/ ; tar xzf bash.tgz -C / | ||
| + | |||
| + | das "/ | ||
| + | # mknod dev/null c 1 3 | ||
| + | # mknod dev/zero c 1 5 | ||
| + | # chmod 0666 dev/ | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | ganz unten an die Datei anhängen: | ||
| + | ... | ||
| + | Match user fritz | ||
| + | ChrootDirectory %h | ||
| + | X11Forwarding no | ||
| + | AllowTcpForwarding no | ||
| + | |||
| + | SSHD neu starten: | ||
| + | > / | ||
| + | |||
| + | |||
| + | ==== ChRoot mit SCP/SFTP ==== | ||
| + | |||
| + | Benutzer anlegen: | ||
| + | # useradd -m -c " | ||
| + | # mkdir -p / | ||
| + | # chown -R fritz:0 /home/fritz | ||
| + | # chown 0:0 /home/fritz | ||
| + | # chown -R fritz: | ||
| + | # chmod 0775 / | ||
| + | |||
| + | Benutzer anlegen: | ||
| + | # chown -R fritz /home/fritz | ||
| + | # userdel -r fritz | ||
| + | |||
| + | |||
| + | === / | ||
| + | |||
| + | ganz unten an die Konfigurationsdatei anhängen: | ||
| + | Match user fritz | ||
| + | ChrootDirectory %h | ||
| + | X11Forwarding no | ||
| + | AllowTcpForwarding no | ||
| + | ForceCommand internal-sftp -l VERBOSE | ||
| + | |||
| + | |||
| + | ==== unerwünschte Wartezeit (wegen IPv6) vor dem Login ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Die neuen SSH-Versionen versuchen erst per IPv6 eine Verbindung aufzubauen, | ||
| + | erst wenn das nicht geht, versuchen sie es per IPv4. | ||
| + | |||
| + | Mit dieser Option verwendet SSH-Client nur noch IPv4: | ||
| + | # vi / | ||
| + | ... | ||
| + | AddressFamily inet | ||
| + | ... | ||
| + | |||
| + | Damit der SSHD auch nur mit IPv4 arbeitet: | ||
| + | # vi / | ||
| + | ... | ||
| + | AddressFamily inet | ||
| + | ... | ||
| + | |||
| + | |||
| + | ==== OpenSSH 5.5p1 aus den Quellen bauen ==== | ||
| + | |||
| + | Seit der Version 5.4 kann open SSH mit seinem sftp-Server auch die '' | ||
| + | woraufhin recht schnell die Version 5.5 veröffentlicht wurde. | ||
| + | |||
| + | Hier zeige ich Beispielhaft, | ||
| + | |||
| + | Agent admitted failure to sign using the key. | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | === Problem === | ||
| + | |||
| + | Es ist kein automatischer Login möglich, obwohl alle relevanten Verzeichniss- und Dateirechte richtig gesetzt sind: | ||
| + | |||
| + | fratz@client: | ||
| + | Agent admitted failure to sign using the key. | ||
| + | Password: | ||
| + | |||
| + | |||
| + | === Lösung === | ||
| + | |||
| + | Schlüssel bei Seite legen: | ||
| + | fratz@client: | ||
| + | fratz@client: | ||
| + | |||
| + | einmal kurz mit Passwort einloggen: | ||
| + | fratz@client: | ||
| + | Password: | ||
| + | fritz@server: | ||
| + | fritz@server: | ||
| + | logout | ||
| + | Connection to server closed. | ||
| + | |||
| + | Schlüssel wieder hervor holen: | ||
| + | fratz@client: | ||
| + | fratz@client: | ||
| + | |||
| + | jetzt geht der passwortlose Login wieder: | ||
| + | fratz@client: | ||
| + | fritz@server: | ||
| + | |||
| + | |||
| + | ==== konvertieren zwischen OpenSSH, SSH2/ | ||
| + | |||
| + | Hier einmal beispielhaft alle Konvertierungsvarianten, | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -t rsa -b 4096 | ||
| + | Enter file in which to save the key (/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -t rsa -m RFC4716 -b 4096 | ||
| + | Enter file in which to save the key (/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -t rsa -m PEM -b 4096 | ||
| + | Enter file in which to save the key (/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -e -f .ssh/ | ||
| + | > ssh-keygen -e -f .ssh/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -e -m RFC4716 -f .ssh/ | ||
| + | > ssh-keygen -e -m RFC4716 -f .ssh/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -e -m PEM -f .ssh/ | ||
| + | > ssh-keygen -e -m PEM -f .ssh/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -i -f .ssh/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -i -m RFC4716 -f SSH2_PUBLIC_KEY_-_RFC4716.pub > .ssh/ | ||
| + | |||
| + | '' | ||
| + | > ssh-keygen -i -m PEM -f SSH2_PUBLIC_KEY_-_RFC4716.pub | ||
| + | |||
| + | |||
| + | ==== automatische Passwortübergabe mit sshpass ==== | ||
| + | |||
| + | Wenn man auf dem Zielsystem keinen eigenen Schlüssel liegen hat | ||
| + | oder wegen der Verzeichnisrechte eine Pub-Key-Auth nicht funktionieren würde, | ||
| + | dann kann man das einloggen mit //sshpass// trotzdem automatisieren: | ||
| + | > sshpass -p geheim ssh 192.168.0.100 'df -h' | ||
| + | |||
| + | installation mit FreeBSD 13: | ||
| + | > pkg install security/ | ||
| + | |||
| + | |||
| + | ==== Bug ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Wenn man //IPv6// abschaltet (sysctl.conf per net.ipv6.conf.all.disable_ipv6=1), | ||
| + | |||
| + | |||
| + | ==== Vorbereitungen ==== | ||
| + | |||
| + | Als erstes alle Pakete installieren die zum bauen gebraucht werden: | ||
| + | # aptitude -y install build-essential install zlib1g-dev pam-dev libwrap0-dev libcurl4-openssl-dev libpam-dev wget | ||
| + | |||
| + | hier ist die Baustelle: | ||
| + | # cd /usr/src/ | ||
| + | |||
| + | jetzt saugen wir uns die Quellen (siehe [[http:// | ||
| + | # wget ftp:// | ||
| + | |||
| + | Quellen auspacken: | ||
| + | # tar xzf openssh-5.5p1.tar.gz -C /usr/src/ | ||
| + | |||
| + | ins Quellverzeichnis wechseln: | ||
| + | # cd openssh-5.5p1 | ||
| + | |||
| + | |||
| + | ==== bauen ==== | ||
| + | Dann die Optionen lesen, um die richtigen auszuwählen: | ||
| + | # ./configure --help | ||
| + | |||
| + | Jetzt die gewünschten Optionen setzen: | ||
| + | # ./configure --prefix=/ | ||
| + | |||
| + | Am Ende sollte dann soetwas in der Art stehen: | ||
| + | OpenSSH has been configured with the following options: | ||
| + | User binaries: / | ||
| + | | ||
| + | | ||
| + | | ||
| + | Manual pages: / | ||
| + | PID file: /var/run | ||
| + | Privilege separation chroot path: / | ||
| + | sshd default user PATH: / | ||
| + | Manpage format: man | ||
| + | PAM support: yes | ||
| + | OSF SIA support: no | ||
| + | | ||
| + | | ||
| + | | ||
| + | S/KEY support: no | ||
| + | TCP Wrappers support: yes | ||
| + | MD5 password support: no | ||
| + | | ||
| + | Solaris process contract support: no | ||
| + | IP address in $DISPLAY hack: no | ||
| + | | ||
| + | BSD Auth support: no | ||
| + | Random number source: OpenSSL internal ONLY | ||
| + | | ||
| + | Host: x86_64-unknown-linux-gnu | ||
| + | Compiler: gcc | ||
| + | Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wno-pointer-sign -Wformat-security -fno-strict-aliasing -fno-builtin-memset -fstack-protector-all -std=gnu99 | ||
| + | Preprocessor flags: | ||
| + | Linker flags: | ||
| + | | ||
| + | +for sshd: -lwrap -lpam | ||
| + | |||
| + | Sicherheitshalber erstmal sauber machen: | ||
| + | # make clean | ||
| + | |||
| + | Wenn alles ohne Fehler durchgelaufen ist, geht es mit dem eigentlichen //bauen// weiter. | ||
| + | Sonst muss natürlich erst der Fehler behoben werden, meist fehlt nur ein '' | ||
| + | # make | ||
| + | |||
| + | Ist das auch ohne Fehler durchgelaufen, | ||
| + | # make install | ||
| + | |||
| + | |||
| + | ==== Anpassungen im System ==== | ||
| + | |||
| + | Zum Schluss muss nur noch das // | ||
| + | |||
| + | # vi / | ||
| + | |||
| + | In der alten Datei gibt es unter anderem diese Zeilen: | ||
| + | set -e | ||
| + | | ||
| + | # / | ||
| + | | ||
| + | test -x / | ||
| + | ( / | ||
| + | | ||
| + | umask 022 | ||
| + | |||
| + | Das ändern wir in: | ||
| + | set -e | ||
| + | | ||
| + | # | ||
| + | SSHD="/ | ||
| + | | ||
| + | # / | ||
| + | | ||
| + | test -x ${SSHD} || exit 0 | ||
| + | ( ${SSHD} -\? 2>&1 | grep -q OpenSSH ) 2>/ | ||
| + | | ||
| + | export PATH="/ | ||
| + | | ||
| + | umask 022 | ||
| + | |||
| + | Im Rest der Datei muss jetzt nur noch | ||
| + | / | ||
| + | |||
| + | gegen | ||
| + | ${SSHD} | ||
| + | |||
| + | ausgetauscht werden. | ||
| + | |||
| + | Jetzt kann man ganz einfach zwischen der alten Version un der neuen Version umschalten. | ||
| + | |||
| + | |||
| + | neue Version (selbst gebaute Version) aktivieren: | ||
| + | # | ||
| + | SSHD="/ | ||
| + | |||
| + | alte Version (Betriebssystem-Version) aktivieren: | ||
| + | SSHD="/ | ||
| + | # | ||
| + | |||
