Installieren Sie zunächst den OpenSSH-Server im Docker. Wechseln Sie nach Abschluss der Installation in das Installationsverzeichnis /etc/ssh des OpenSSH-Servers. Führen Sie ssh-keygen aus, um den entsprechenden Schlüssel zu generieren. Schauen Sie sich zunächst die SSHD-Konfigurationsdatei sshd_config an, die Folgendes enthält: Hostschlüssel /etc/ssh/ssh_host_rsa_key #HostSchlüssel /etc/ssh/ssh_host_dsa_key Hostschlüssel /etc/ssh/ssh_host_ecdsa_key Hostschlüssel /etc/ssh/ssh_host_ed25519_key Es gibt Verschlüsselungsverfahren wie RSA, DSA, ECDSA und ED25519. Die entsprechenden Schlüsselpaare werden nach diesen Verschlüsselungsverfahren generiert. [root@655f62a4ed82 ssh]# ssh-keygen -t rsa //RSA generieren Generieren eines öffentlichen/privaten RSA-Schlüsselpaars. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_rsa): Passphrase eingeben (leer, wenn keine Passphrase vorhanden ist): Geben Sie dieselbe Passphrase erneut ein: Ihre Identifikation wurde in /root/.ssh/id_rsa gespeichert. Ihr öffentlicher Schlüssel wurde in /root/.ssh/id_rsa.pub gespeichert. Der Schlüsselfingerabdruck ist: 0e:fa:07:36:bb:87:c1:60:14:be:41:41:01:1b:4b:bc root@655f62a4ed82 Das Randomart-Bild des Schlüssels ist: +--[RSA 2048]----+ | .+o*+ | | ..*. | |oooo| | E oo | | ..o.S | | .*o | | .. *. | | .oo | | o+ | +-----------------+ [root@655f62a4ed82 ssh]# ssh-keygen -t dsa //dsa generieren Generieren eines öffentlichen/privaten DSA-Schlüsselpaars. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_dsa): Passphrase eingeben (leer, wenn keine Passphrase vorhanden ist): Geben Sie dieselbe Passphrase erneut ein: Ihre Identifikation wurde in /root/.ssh/id_dsa gespeichert. Ihr öffentlicher Schlüssel wurde in /root/.ssh/id_dsa.pub gespeichert. Der Schlüsselfingerabdruck ist: ee:8c:db:a8:24:68:0d:33:79:eb:09:33:ed:74:c3:66 root@655f62a4ed82 Das Randomart-Bild des Schlüssels ist: +--[DSA 1024]----+ | | | | | | | . | | = . | .B o . | |.=.=.E . | |.Bo= .* | | +..+.+ | +-----------------+ [root@655f62a4ed82 ssh]# ssh-keygen -t ecdsa //ECDSA generieren Generieren eines öffentlichen/privaten ECDSA-Schlüsselpaars. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_ecdsa): Passphrase eingeben (leer, wenn keine Passphrase vorhanden ist): Geben Sie dieselbe Passphrase erneut ein: Ihre Identifikation wurde in /root/.ssh/id_ecdsa gespeichert. Ihr öffentlicher Schlüssel wurde in /root/.ssh/id_ecdsa.pub gespeichert. Der Schlüsselfingerabdruck ist: 84:74:de:d1:e4:98:a1:5c:27:25:8e:b7:d6:27:fd:c9 root@655f62a4ed82 Das Randomart-Bild des Schlüssels ist: +--[ECDSA 256]---+ | . . *++ | | . = * X. | | . * * . | | . . o . | |S ooo | | . o...| | E.| | | | | +-----------------+ [root@655f62a4ed82 ssh]# ssh-keygen -t ed25519 Öffentliches/privates ed25519-Schlüsselpaar wird generiert. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_ed25519): Passphrase eingeben (leer, wenn keine Passphrase vorhanden ist): Geben Sie dieselbe Passphrase erneut ein: Ihre Identifikation wurde in /root/.ssh/id_ed25519 gespeichert. Ihr öffentlicher Schlüssel wurde in /root/.ssh/id_ed25519.pub gespeichert. Der Schlüsselfingerabdruck ist: d8:40:95:1f:07:96:8a:83:7f:af:19:01:3b:b4:79:91 Wurzel@655f62a4ed82 Das Randomart-Bild des Schlüssels ist: +--[ED25519 256--+ | ....oo | | . .oo . | | .+.Eo o | | ..oO... | | .*.S | | .o.. | | ... | | o. | | o. | +-----------------+ [root@655f62a4ed82 ssh]# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys Nachdem das Schlüsselpaar generiert wurde, müssen Sie den Speicherort der oben genannten Dateien in sshd_config ändern. Hostschlüssel /root/.ssh/id_rsa Hostschlüssel /root/.ssh/id_dsa Hostschlüssel /root/.ssh/id_ecdsa Hostschlüssel /root/.ssh/id_ed25519 Führen Sie /usr/sbin/sshd aus, um zu prüfen, ob Port 22 aktiviert ist. Wenn er aktiviert ist, bedeutet dies, dass der Start erfolgreich war. [root@655f62a4ed82 ssh]# /usr/sbin/sshd [root@655f62a4ed82 ssh]# lsof -i:22 BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE/AUS KNOTENNAME sshd 37 root 3u IPv4 250907 0t0 TCP *:ssh (HÖREN) sshd 37 root 4u IPv6 250909 0t0 TCP *:ssh (HÖREN) Zusatzwissen: Beim Ausführen des SSHD-Prozesses im Docker-Container stürzt der Remote-Login ab (Exit-Status 254) Notiz: Hintergrund Im Container wird ein SSHD-Prozess ausgeführt, der einen Port für die externe Remote-Verbindung zuordnet. Bei jeder Verbindung werden Sie sofort nach Eingabe des Passworts abgemeldet. Das Phänomen ist wie folgt: [root@localhost /]# ssh [email protected] -p 8000 Passwort von [email protected]: Letzte Anmeldung: Di 6. Nov 2018 14:46:17 von 192.168.0.6 Verbindung zu 192.168.0.6 geschlossen. Überprüfen Sie die Debuginformationen. Der endgültige Ausgabeausdruck lautet wie folgt: ...... Verbindung zu 192.168.0.6 geschlossen. Übertragen: 2264 gesendet, 2224 Bytes empfangen, in 0,0 Sekunden Bytes pro Sekunde: gesendet 235367,6, empfangen 231209,1 debug1: Beendigungsstatus 254 analysieren Aus dem Ausdruck ist bereits die letzte Anmeldung ersichtlich, das Passwort muss also korrekt eingegeben worden sein und ich habe mich zwar am System angemeldet, allerdings ist die Initialisierung der Umgebung fehlgeschlagen. Zuerst habe ich mir die Konfiguration von hosts.deny angesehen. Nach dem Kommentieren der entsprechenden Konfiguration besteht das Problem weiterhin. Im Internet heißt es, dass das Auskommentieren der UsePAM-Konfiguration in der SSHD-Konfigurationsdatei bedeutet, dass das PAM-Authentifizierungsmodul nicht verwendet wird.
Nach dem Ändern und Neustarten des SSHD-Prozesses funktioniert dieser wie erwartet. Als Grund wurde von allen angegeben, dass die Funktion zur Trennung bei Zeitüberschreitung in der Standardkonfiguration aktiviert war. Das ist Unsinn. Die Standardzeit zum Trennen der Verbindung kann nicht so kurz sein, und warum läuft der SSHD-Prozess in einer Nicht-Docker-Umgebung normal? Ich akzeptiere diesen Grund nicht. Dann schauen wir doch nochmal vorbei. Es gibt kein Problem, wenn keine PAM-Authentifizierung verwendet wird, daher habe ich die SSHD-bezogenen Konfigurationen in /etc/pam.d/ nacheinander auskommentiert, konnte das Problem aber immer noch nicht finden. Ich dachte, ich könnte jetzt einen Blick auf das PAM-Protokoll werfen, das einige Hinweise liefern sollte. Übrigens speichern RedHat und CentOS PAM-Protokolle in /var/log/secure und Ubuntu und Debian speichern Authentifizierungsinformationen in /var/log/auth.log. Tatsächlich gibt es in Pam eine Fehlermeldung. 6. Nov 15:36:56 bbb sshd[11016]: Akzeptiertes Passwort für Root von 192.168.0.6 Port 56394 ssh2 6. Nov 15:36:56 bbb sshd[11016]: pam_limits(sshd:session): Limit für „nproc“ konnte nicht gesetzt werden: Vorgang nicht zulässig 6. Nov 15:36:56 bbb sshd[11016]: pam_limits(sshd:session): Limit für „nofile“ konnte nicht festgelegt werden: Vorgang nicht zulässig 6. Nov 15:36:56 bbb sshd[11016]: pam_limits(sshd:session): Limit für „memlock“ konnte nicht gesetzt werden: Vorgang nicht zulässig 6. Nov 15:36:56 bbb sshd[11016]: pam_unix(sshd:session): Sitzung für Benutzer root geöffnet durch (uid=0) 6. Nov 15:36:56 bbb sshd[11016]: Fehler: PAM: pam_open_session(): Zugriff verweigert 6. Nov 15:36:56 bbb sshd[11016]: Trennung von 192.168.0.6 empfangen: 11: Trennung durch Benutzer Es ist ersichtlich, dass dies durch unzureichende Berechtigungen zum Festlegen von Parametern wie nproc, nofile, memlock usw. verursacht wird. Diese Konfigurationen befinden sich in der PAM-Komponente und werden in den folgenden beiden Dateien gespeichert:
Kommentieren Sie die relevanten Einstellungen in diesen beiden Dateien aus, aktivieren Sie die PAM-Authentifizierung und die SSH-Verbindung wird erfolgreich sein. Das ist das Problem. Es gibt andere Methoden 1. Da dies durch unzureichende Berechtigungen verursacht wird, bringen Sie beim Starten des Containers den Parameter --privileged mit und verwenden Sie einen privilegierten Benutzer, um das Problem zu lösen 2. Da beim Konfigurieren von ulimits ein Fehler auftritt, können Sie den Parameter --ulimit=[] verwenden, um es beim Starten des Containers zu konfigurieren Der obige Artikel über das Aktivieren des SSHD-Betriebs in Docker ist alles, was ich mit Ihnen teilen kann. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Zusammenfassung der allgemeinen Funktionen und Verwendungsmethoden der WeChat-Applet-Entwicklung
>>: MySQL-Abfragedaten stündlich, geben Sie 0 ein, wenn keine Daten vorhanden sind
LEMP (Linux + Nginx + MySQL + PHP) ist heutzutage...
Dieser Befehl ändert die Datentabelle ff_vod und ...
Dieser Artikel darf gerne geteilt und zusammengef...
Freunde, die in der Entwicklung tätig sind, insbe...
Vorwort JavaScript ist eine der am häufigsten ver...
MySQL-Dienst stoppen Klicken Sie in Windows mit d...
Inhaltsverzeichnis Problembeschreibung: Lösung 1 ...
Ursprünglich sollte dieses siebte Kapitel eine aus...
1. Konzeptanalyse 1: UE User Experience <br /&...
Inhaltsverzeichnis 1. Speichermodell und Laufzeit...
Inhaltsverzeichnis 1. Funktionen 2. Beispiele 3. ...
Inhaltsverzeichnis Regelmäßig beschneiden Spiegel...
Inhaltsverzeichnis [Siehe ein Beispiel]: [Der urs...
Was ist CSS? CSS (Abkürzung für Cascading Style S...
Inhaltsverzeichnis 1. Einführung in das Teleporti...