Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Welche Methoden verwendet Linux SSH?

Welche Methoden verwendet Linux SSH?

王林
王林nach vorne
2023-05-22 23:58:131246Durchsuche

openssh-Softwarepaket enthält die folgenden Befehle:

sshd – SSH-Serverprogramm
sftp-Server – SFTP-Serverprogramm (ein FTP-ähnliches Protokoll, das jedoch Datenverschlüsselung bietet)
scp – nicht interaktiver SFTP-Server-Client , wird zum Hoch-/Herunterladen von Dateien auf den Server verwendet
sftp – interaktiver SFTP-Server-Client, die Verwendung ist die gleiche wie beim FTP-Befehl.
slogin —— Alias ​​von ssh
ssh —— Das Client-Programm des SSH-Protokolls, das zum Anmelden am Remote-System oder zum Ausführen von Befehlen aus der Ferne verwendet wird.
ssh-add —— SSH-Agent-bezogenes Programm, das zum Hinzufügen des DSA-Schlüssels zum hinzugefügt wird SSH-Agent
SSH-Agent ―― SSH-Agent-Programm
SSH-Keyscan ―― SSH-Public-Key-Generator

Die am häufigsten verwendete Methode zur Verwendung von SSH besteht darin, Telnet für die Remote-Anmeldung zu ersetzen. Im Gegensatz zur Passwortanmeldung von Telnet unterstützt ssh auch mehrere Anmeldemethoden wie Publickey, Keyboard Interactive, GSAPI usw. Im Gegensatz zu Telnet gibt es nur eine Möglichkeit, das Systempasswort einzugeben. Derzeit sind die am häufigsten verwendeten Anmeldemethoden die herkömmlichen Anmeldemethoden mit Passwort und öffentlichem Schlüssel. Im Folgenden wird Redhat AS4 als Beispiel verwendet, um die Verwendung dieser beiden Anmeldemethoden zu veranschaulichen.

[root@mail ~]# ssh 172.18.6.227
Die Authentizität des Hosts „172.18.6.227 (172.18.6.227)“ kann nicht festgestellt werden.
Der Fingerabdruck des RSA-Schlüssels lautet 43:80:f2:e1:9b:b6 :6e:c0:e2:dd:57:8f:ed:89:b3:81.
Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein)?Warnung: dauerhaft hinzugefügt '172.18.6.227′ (rsa) zur Liste der bekannten Hosts.
root@172.18.6.227s Passwort:
letzte Anmeldung: Do. 12. Juli 18:47:47 2007 von 172.18.6.130
[root@qmail ~]#

Nachdem ich mich zum ersten Mal angemeldet habe Zu diesem Zeitpunkt speichert ssh den angemeldeten SSH-Fingerabdruck in der Datei know_hosts im .ssh-Verzeichnis des Home-Verzeichnisses des Benutzers. Wenn das Remote-System das System neu installiert hat und sich der SSH-Fingerabdruck geändert hat, müssen Sie den entsprechenden Fingerabdruck im löschen Melden Sie sich erneut in der Datei „know_hosts“ im .ssh-Verzeichnis an und antworten Sie mit „Ja“, bevor Sie sich anmelden können. Bitte beachten Sie, dass das .ssh-Verzeichnis ein verstecktes Verzeichnis ist, das mit „.“ beginnt und den Parameter „ls –a“ erfordert, um es anzuzeigen. Darüber hinaus müssen die Berechtigungen dieses Verzeichnisses 700 sein, und das Home-Verzeichnis des Benutzers darf anderen Benutzern keine Schreibberechtigungen erteilen, da der SSH-Server sonst die Anmeldung verweigert. Wenn Sie sich nicht anmelden können, überprüfen Sie bitte die Protokolldatei /var/log/secure auf dem Server. Der Grund, warum Sie sich nicht einloggen können, lässt sich meist schnell finden.

ssh-Remote-Ausführungsbefehl:

[root@mail ~]# ssh 172.18.6.227 ls -l /

root@172.18.6.227's Passwort:
total 1244
drwxr-xr-x 2 root root 4096 jun 26 04:02 bin
drwxr-xr-x 4 root root 4096 29. März 11:17 boot
drwxr-xr-x 2 root root 4096 25. Jan. 11:26 command
drwxr-xr-x 15 root root 4096 12. Juni 20 :09 data
drwxr-xr-x 9 root root 5360 2. Juli 13:38 dev
drwxr-xr-x 87 root root 12288 11. Juli 04:02 usw.
drwxr-xr-x 20 root root 4096 10. April 10 :5 4 home
drwxr-xr-x 2 root root 4096 13. August 2004 initrd

Nach Eingabe des richtigen Passworts stellt ssh eine Verbindung zum SSHD-Serverprogramm des Remote-Servers her und führt dann den Befehl

ls –l / auf dem aus Remote-Server und geben Sie die an den lokalen Server übertragenen Ergebnisse ein. Dies entspricht der Anmeldung beim Remote-Server, der anschließenden Ausführung des Befehls ls –l / und der abschließenden Abmeldung vom Server. Denken Sie daran, dass Sie den Befehl in einfache oder doppelte Anführungszeichen setzen müssen, wenn Sie sich beim Server anmelden und mehr als einen Befehl ausführen müssen:

ssh 172.18.6.227 „cd /root && ls“

ssh's remote Ausführungsbefehl Die Funktion wird verwendet, um die ursprünglichen Befehle der R-Serie zu ersetzen. Vor dem Aufkommen von SSH mussten Systemadministratoren unsichere Remote-Ausführungsbefehlstools wie rexec und rsh verwenden, um denselben Vorgang abzuschließen. Diese Funktion ist sehr nützlich, wenn ich eine große Anzahl von Maschinen verwalten möchte. Wenn ich beispielsweise alle Server im Netzwerksegment 10.0.0.0/24 neu starten möchte, muss ich nur einen Befehl eingeben:

for i in $(seq 1 254); ssh 10.0.${i} reboot ; done

Vielleicht müssen Sie sich nicht mehr bei jedem Server anmelden Jedes Mal müssen Sie Ihr Passwort eingeben, was sehr mühsam ist. Keine Sorge, ich werde im Folgenden darüber sprechen, wie ich mich mit der SSH-Public-Key-Methode anmelden kann, um das Problem zu lösen.

Verwenden Sie den öffentlichen Schlüssel zum Anmelden:

Der Befehl ssh-keygen von openssh wird verwendet, um solche privaten und öffentlichen Schlüssel zu generieren.

[root@mail ~]# ssh-keygen -b 1024 -t dsa -c gucuiwen@myserver.com
öffentliches/privates DSA-Schlüsselpaar wird generiert.
#Die Eingabeaufforderung wird generiert Es dauert lange. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_dsa): ):
# Bitten Sie um die Eingabe der Passphrase für den privaten Schlüssel. Um eine automatische Anmeldung zu erreichen, sollten Sie die Passphrase nicht direkt eingeben.
Geben Sie die Passphrase erneut ein wurde in /root/.ssh/id_dsa gespeichert
Ihr öffentlicher Schlüssel wurde in /root/.ssh/id_dsa.pub gespeichert.
# Eingabeaufforderung, dass der öffentliche Schlüssel und der private Schlüssel in /root/.ssh/ gespeichert wurden. Verzeichnis
Der Fingerabdruck des Schlüssels lautet:
71:e5:cb: 15:d3:8c:05:ed:05:84:85:32:ce:b1:31:ce gucuiwen@myserver.com
# Prompt-Schlüsselfingerabdruck

Anweisungen:
-b 1024 Verwenden Sie eine Länge von 1024 Bytes. Das Paar aus öffentlichem Schlüssel und privatem Schlüssel kann bis zu 4096 Bytes lang sein. Wenn es zu lang ist, dauert die Ver- und Entschlüsselung lange.
-t dsa  Ein Paar aus öffentlichem Schlüssel und privatem Schlüssel mit der DSA-Verschlüsselungsmethode. Zusätzlich zur DSA-Methode gibt es auch die RSA-Methode. Die Mindestlänge der RSA-Methode darf nicht weniger als 768 Bytes betragen.
-c gucuiwen@myserver.com Ein Kommentar und eine Beschreibung dieses Paars aus öffentlichem Schlüssel und privatem Schlüssel, normalerweise ersetzt durch die E-Mail-Adresse des Besitzers. Sie können es weglassen, um weitere Parameter zu erhalten.

[root@mail ~]# ls -l /root/.ssh
total 16
-rw——- 1 root root 668 12. Juli 20:07 id_dsa
-rw-r–r– 1 root root 611 12. Juli 20:07 id_dsa.pub

-rw-r–r– 1 root root 222 12. Juli 19:37 Die vonknown_hosts


generierten öffentlichen/privaten Schlüsseldateien befinden sich im .ssh-Verzeichnis des Home-Verzeichnisses des Benutzers, wo id_dsa.pub liegt ist die öffentliche Schlüsseldatei. Laden Sie den generierten öffentlichen Schlüssel in das .ssh-Verzeichnis des Home-Verzeichnisses hoch, das dem Benutzerverzeichnis des anzumeldenden Servers entspricht. Es wird noch einmal betont, dass es sich um das eigene Verzeichnis des Benutzers (Home-Verzeichnis) handelt. Das .ssh-Verzeichnis darf nicht über die Berechtigung 700 verfügen, d. h. niemand außer dem Benutzer selbst hat die Berechtigung, das Verzeichnis zu lesen, zu schreiben oder anzuzeigen . Die standardmäßige öffentliche Schlüsseldatei von ssh ist die Datei „authorized_keys“ im Verzeichnis „.ssh“ im Home-Verzeichnis des Benutzers. Daher muss der generierte öffentliche Schlüssel im Verzeichnis „/root/.ssh/“ des Servers unter diesem Dateinamen abgelegt werden Dateien können in dieser Datei gespeichert werden. Die Datei mit dem öffentlichen Schlüssel eines Clients ist wie eine Tür, die viele Schlösser und verschiedene Schlüssel haben kann, um zu versuchen, das Schloss zu öffnen. Wenn es auf dem Server abgelegt wird, sollte es so aussehen:

Der private Schlüssel muss 600 Berechtigungen haben, sonst verweigert der SSH-Server dem Benutzer die Anmeldung.

So ungefähr sieht es aus. Lassen Sie uns nun über die Konfiguration von /etc/ssh/ssh_config und /etc/ssh/sshd_config sprechen.

/etc/ssh/ssh_config:

host *Die Option „host“ ist nur für Computer gültig, die mit der folgenden Zeichenfolge übereinstimmen können. „*“ bezeichnet alle Computer.

forwardagent no

„forwardagent“ legt fest, ob die Verbindung über einen Authentifizierungsagenten (falls vorhanden) an den Remotecomputer weitergeleitet wird.

forwardx11 no

"forwardx11" legt fest, ob x11-Verbindungen automatisch zu sicheren Kanälen und Anzeigesätzen umgeleitet werden.


rhostsauthentication no

„rhostsauthentication“ legt fest, ob die Rhosts-basierte Sicherheitsüberprüfung verwendet werden soll.


rhostsrsaauthentication no

„rhostsrsaauthentication“ legt fest, ob die Rhosts-basierte Sicherheitsauthentifizierung mithilfe des RSA-Algorithmus verwendet werden soll.


rsaauthentication ja

„rsaauthentication“ legt fest, ob der RSA-Algorithmus zur Sicherheitsüberprüfung verwendet werden soll.


passwordauthentication ja

"passwordauthentication" legt fest, ob die Passwortauthentifizierung verwendet werden soll.


fallbacktorsh no

"fallbacktorsh" legt fest, ob rsh automatisch verwendet werden soll, wenn beim Herstellen einer Verbindung mit ssh ein Fehler auftritt.


usersh no

„usersh“ legt fest, ob „rlogin/rsh“ auf diesem Computer verwendet werden soll.


Batchmodus nein

Wenn „Batchmodus“ auf „Ja“ eingestellt ist, wird die Eingabeaufforderung für Passphrase/Passwort (interaktive Passworteingabe) deaktiviert. Diese Option ist für Skriptdateien und Batch-Aufgaben nützlich, wenn eine interaktive Passworteingabe nicht möglich ist.


checkhostip ja

„checkhostip“ legt fest, ob SSH auf die IP-Adresse des mit dem Server verbundenen Hosts schaut, um DNS-Spoofing zu verhindern. Es wird empfohlen, es auf „Ja“ zu setzen.


stricthostkeychecking no

Wenn „stricthostkeychecking“ auf „yes“ eingestellt ist, fügt ssh den Schlüssel des Computers nicht automatisch zur Datei „$home/.ssh/known_hosts“ hinzu, und sobald sich der Schlüssel des Computers ändert, wird die Verbindung abgelehnt.


identityfile ~/.ssh/identity

"identityfile" legt die Datei fest, aus der die RSA-Sicherheitsüberprüfungsidentifikation des Benutzers gelesen werden soll.


Port 22

"Port" legt den Port für die Verbindung zum Remote-Host fest.


cipher blowfish

„cipher“ legt das Passwort für die Verschlüsselung fest.


escapechar ~

"escapechar" legt das Escape-Zeichen fest.


/etc/ssh/sshd_config:


port 22

„port“ legt die Portnummer für die SSHD-Überwachung fest.

listenaddress 192.168.1.1

„listenaddress“ legt die an den SSHD-Server gebundene IP-Adresse fest.

hostkey /etc/ssh/ssh_host_key

Die Einstellung „hostkey“ enthält die Datei mit dem privaten Schlüssel des Computers.

serverkeybits 1024
„serverkeybits“ definiert die Anzahl der Bits im Serverschlüssel.

loggingracetime 600
„loggingracetime“ legt die Zeitspanne (in Sekunden) fest, die der Server warten muss, bevor er die Verbindung trennt, wenn sich der Benutzer nicht erfolgreich anmelden kann.

keyregenerationinterval 3600
„keyregenerationinterval“ legt die Anzahl der Sekunden fest, nach denen der Schlüssel des Servers automatisch neu generiert wird (sofern ein Schlüssel verwendet wird). Der Schlüssel wird neu generiert, um zu verhindern, dass abgefangene Informationen mit einem gestohlenen Schlüssel entschlüsselt werden.

permitrootlogin no
„permitrootlogin“ legt fest, ob sich Root über SSH anmelden kann. Diese Option darf nicht auf „ja“ stehen.

ignorerhosts ja
„ignorerhosts“ legt fest, ob bei der Überprüfung die Dateien „rhosts“ und „shosts“ verwendet werden sollen.

ignoreuserknownhosts ja
„ignoreuserknownhosts“ legt fest, ob der SSH-Daemon das „$home/.ssh/known_hosts“ des Benutzers ignoriert, wenn er die Rhostsrsauthentication-Sicherheitsüberprüfung durchführt Berechtigungen und Besitz von Verzeichnissen und Rhosts-Dateien. Dies ist oft notwendig, da Neulinge ihre Verzeichnisse und Dateien oft so einstellen, dass jeder Schreibzugriff hat.

x11forwarding nein
"x11forwarding" legt fest, ob x11-Weiterleitung zugelassen werden soll.

printmotd ja
„printmotd“ legt sshd fest, ob die Informationen in „/etc/motd“ angezeigt werden sollen, wenn sich der Benutzer anmeldet.

syslogfacility auth
„syslogfacility“ legt fest, ob beim Protokollieren von Nachrichten von SSHD „Facility Code“ angegeben werden soll.

loglevel info
„loglevel“ legt die Ebene fest, auf der SSHD-Protokollmeldungen aufgezeichnet werden. info ist eine gute Wahl. Weitere Informationen finden Sie auf der SSHD-Manpage.

rhostsauthentication nein
Reicht die Einstellung „rhostsauthentication“ aus, um nur Rhosts oder „/etc/hosts.equiv“ zur Sicherheitsüberprüfung zu verwenden?

rhostsrsaauthentication no
„rhostsrsa“ legt fest, ob die Sicherheitsüberprüfung mit rhosts oder „/etc/hosts.equiv“ plus rsa zugelassen werden soll.

rsaauthentication ja
Die Einstellung „rsaauthentication“ ermöglicht nur die RSA-Sicherheitsüberprüfung.

passwordauthentication ja
"passwordauthentication" legt fest, ob die Passwortüberprüfung zugelassen werden soll.

permitemptypasswords no
„permitemptypasswords“ legt fest, ob die Anmeldung mit einem Konto mit leerem Passwort zulässig ist.

allowusers admin
"allowusers" kann eine beliebige Anzahl von mit dem Benutzernamen übereinstimmenden Zeichenfolgen (Mustern) oder übereinstimmenden Zeichenfolgen wie user@host folgen. Diese Zeichenfolgen werden durch Leerzeichen getrennt. Der Hostname kann ein DNS-Name oder eine IP-Adresse sein.


Konvertieren Sie den öffentlichen Schlüssel im SSH2-kompatiblen Format in das OpenSh-kompatible Format

ssh-keygen -i -f Identity.pub >> /root/.ssh/authorized_keys2

Das obige ist der detaillierte Inhalt vonWelche Methoden verwendet Linux SSH?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen