GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH-Befehl

Secure Shell (SSH) ist ein kryptografisches Netzwerkprotokoll, das für eine verschlüsselte Verbindung zwischen einem Client und einem Server verwendet wird. Der SSH-Client erstellt eine sichere Verbindung zum SSH-Server auf einem Remote-Computer. Die verschlüsselte Verbindung kann verwendet werden, um Befehle auf dem Server, X11-Tunneling, Portweiterleitung und mehr auszuführen.

Es gibt eine Reihe von SSH-Clients, sowohl kostenlose als auch kommerzielle, wobei OpenSSH der am weitesten verbreitete Client ist. Es ist auf allen wichtigen Plattformen verfügbar, einschließlich Linux, OpenBSD, Windows und macOS.

In diesem Artikel wird erläutert, wie Sie den OpenSSH-Befehlszeilenclient (ssh ), um sich bei einem Remote-Computer anzumelden und Befehle auszuführen oder andere Vorgänge auszuführen.

Installation des OpenSSH-Clients #

Das OpenSSH-Client-Programm heißt ssh und kann vom Terminal aus aufgerufen werden. Das OpenSSH-Client-Paket stellt auch andere SSH-Dienstprogramme wie scp bereit und sftp die zusammen mit ssh installiert werden Befehl.

Installieren des OpenSSH-Clients unter Linux #

Der OpenSSH-Client ist standardmäßig auf den meisten Linux-Distributionen vorinstalliert. Wenn auf Ihrem System der SSH-Client nicht installiert ist, können Sie ihn mit dem Paketmanager Ihrer Distribution installieren.

Installieren von OpenSSH auf Ubuntu und Debian #

sudo apt updatesudo apt install openssh-client

Installieren von OpenSSH auf CentOS und Fedora #

sudo dnf install openssh-clients

Installieren des OpenSSH-Clients unter Windows 10 #

Die meisten Windows-Benutzer verwenden Putty, um sich über SSH mit einem Remote-Computer zu verbinden. Die neuesten Versionen von Windows 10 enthalten jedoch einen OpenSSH-Client und -Server. Beide Pakete können über die GUI oder PowerShell installiert werden.

Um den genauen Namen des OpenSSH-Pakets zu finden, geben Sie den folgenden Befehl ein:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Der Befehl sollte etwa so zurückgeben:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

Sobald Sie den Paketnamen kennen, installieren Sie es, indem Sie Folgendes ausführen:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Bei Erfolg sieht die Ausgabe etwa so aus:

Path          :
Online        : True
RestartNeeded : False

Installieren des OpenSSH-Clients auf macOS #

macOS wird standardmäßig mit installiertem OpenSSH-Client ausgeliefert.

Verwendung von ssh Befehl #

Die folgenden Voraussetzungen müssen erfüllt sein, um sich über SSH bei einem Remote-Rechner anmelden zu können:

  • Auf dem Remote-Rechner muss ein SSH-Server laufen.
  • Der SSH-Port muss in der Firewall des Remote-Computers geöffnet sein.
  • Sie müssen den Benutzernamen und das Passwort des Remote-Kontos kennen. Das Konto muss über die entsprechenden Berechtigungen für die Remote-Anmeldung verfügen.

Die grundlegende Syntax von ssh Befehl lautet wie folgt:

ssh [OPTIONS] [USER@]:HOST

Um den ssh zu verwenden Befehl, öffnen Sie Ihr Terminal oder PowerShell und geben Sie ssh ein gefolgt vom Remote-Hostnamen:

ssh ssh.linuxize.com

Wenn Sie sich zum ersten Mal über SSH mit einem Remote-Rechner verbinden, sehen Sie eine Nachricht wie unten.

The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?

Jeder Host hat einen eindeutigen Fingerabdruck, der in ~/.ssh/known_hosts gespeichert ist Datei.

Geben Sie yes ein um den Remote-Fingerabdruck zu speichern, und Sie werden aufgefordert, Ihr Passwort einzugeben.

Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.

[email protected]'s password:

Sobald Sie das Passwort eingegeben haben, werden Sie beim Remote-Rechner angemeldet.

Wenn der Benutzername nicht angegeben wird, wird der ssh Der Befehl verwendet den aktuellen System-Anmeldenamen.

Um sich als ein anderer Benutzer anzumelden, geben Sie den Benutzernamen und den Host im folgenden Format an:

ssh username@hostname

Der Benutzername kann auch mit dem -l angegeben werden Möglichkeit:

ssh -l username hostname

Wenn kein Port angegeben ist, versucht der SSH-Client standardmäßig, eine Verbindung zum Remote-Server über Port 22 herzustellen. Auf einigen Servern ändern Administratoren den Standard-SSH-Port, um dem Server eine zusätzliche Sicherheitsebene hinzuzufügen, indem sie das Risiko einer Automatisierung verringern Angriffe.

Um eine Verbindung über einen nicht standardmäßigen Port herzustellen, verwenden Sie -p Option zur Angabe des Ports:

ssh -p 5522 username@hostname

Wenn Sie Authentifizierungs- oder Verbindungsprobleme haben, verwenden Sie den -v Option, um ssh mitzuteilen Debugging-Meldungen drucken:

ssh -v username@hostname

Um die Ausführlichkeit zu erhöhen, verwenden Sie -vv oder -vvv .

Die ssh Der Befehl akzeptiert eine Reihe von Optionen.

Für eine vollständige Liste aller Optionen lesen Sie den ssh Manpage, indem Sie man ssh eingeben in Ihrem Terminal.

SSH-Konfigurationsdatei #

Wenn Sie sich täglich über SSH mit mehreren Remote-Systemen verbinden, werden Sie feststellen, dass es schwierig, wenn nicht sogar unmöglich ist, sich alle Remote-IP-Adressen, verschiedene Benutzernamen, nicht standardmäßige Ports und verschiedene Befehlszeilenoptionen zu merken.

Der OpenSSH-Client liest die in der benutzerspezifischen Konfigurationsdatei (~/.ssh/config ). In dieser Datei können Sie verschiedene SSH-Optionen für jeden Remote-Rechner speichern, mit dem Sie sich verbinden.

Eine beispielhafte SSH-Konfiguration ist unten dargestellt:

Host dev
    HostName dev.linuxize.com
    User mike
    Port 4422

Wenn Sie den SSH-Client aufrufen, indem Sie ssh dev eingeben , liest der Befehl den ~/.ssh/config -Datei und verwenden Sie die für den Entwicklungshost angegebenen Verbindungsdetails. In diesem Beispiel ssh dev entspricht dem Folgenden:

ssh -p 4422 [email protected]

Weitere Informationen finden Sie im Artikel über die SSH-Konfigurationsdatei.

Public-Key-Authentifizierung #

Das SSH-Protokoll unterstützt verschiedene Authentifizierungsmechanismen.

Der auf öffentlichen Schlüsseln basierende Authentifizierungsmechanismus ermöglicht es Ihnen, sich beim Remote-Server anzumelden, ohne Ihr Passwort eingeben zu müssen.

Bei dieser Methode wird ein Paar kryptografischer Schlüssel generiert, die zur Authentifizierung verwendet werden. Der private Schlüssel wird auf dem Client-Gerät gespeichert und der öffentliche Schlüssel wird an jeden Remote-Server übertragen, bei dem Sie sich anmelden möchten. Der Remote-Server muss so konfiguriert werden, dass er die Schlüsselauthentifizierung akzeptiert.

Wenn Sie auf Ihrem lokalen Computer noch kein SSH-Schlüsselpaar haben, können Sie eines generieren, indem Sie Folgendes eingeben:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Sie werden aufgefordert, eine sichere Passphrase einzugeben. Ob Sie eine Passphrase verwenden möchten, bleibt Ihnen überlassen.

Sobald Sie Ihr Schlüsselpaar haben, kopieren Sie den öffentlichen Schlüssel auf den Remote-Server:

ssh-copy-id username@hostname

Geben Sie das Passwort des entfernten Benutzers ein, und der öffentliche Schlüssel wird an die authorized_keys des entfernten Benutzers angehängt Datei.

Sobald der Schlüssel hochgeladen ist, können Sie sich beim Remote-Server anmelden, ohne zur Eingabe eines Passworts aufgefordert zu werden.

Indem Sie eine schlüsselbasierte Authentifizierung festlegen, können Sie den Anmeldevorgang vereinfachen und die allgemeine Serversicherheit erhöhen.

Portweiterleitung #

SSH-Tunneling oder SSH-Portweiterleitung ist eine Methode zum Erstellen einer verschlüsselten SSH-Verbindung zwischen einem Client und einem Server, über die Dienstports weitergeleitet werden können.

Die SSH-Weiterleitung ist nützlich, um Netzwerkdaten von Diensten zu transportieren, die ein unverschlüsseltes Protokoll wie VNC oder FTP verwenden, auf geobeschränkte Inhalte zuzugreifen oder zwischengeschaltete Firewalls zu umgehen. Grundsätzlich können Sie jeden TCP-Port weiterleiten und den Datenverkehr über eine sichere SSH-Verbindung tunneln.

Es gibt drei Arten der SSH-Portweiterleitung:

Lokale Portweiterleitung #

Mit der lokalen Portweiterleitung können Sie eine Verbindung vom Clienthost zum SSH-Serverhost und dann zum Zielhostport weiterleiten.

Um eine lokale Portweiterleitung zu erstellen, übergeben Sie den -L Option zum ssh Kunde:

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname

Die Option -f teilt dem ssh mit Befehl, der im Hintergrund ausgeführt werden soll, und -N keinen Fernbefehl auszuführen.

Remote-Portweiterleitung #

Die Remote-Portweiterleitung ist das Gegenteil der lokalen Portweiterleitung. Es leitet einen Port vom Server-Host zum Client-Host und dann zum Ziel-Host-Port weiter.

Das -R Option teilt ssh mit So erstellen Sie eine Remote-Portweiterleitung:

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname

Dynamische Portweiterleitung #

Die dynamische Portweiterleitung erstellt einen SOCKS-Proxyserver, der die Kommunikation über eine Reihe von Ports ermöglicht.

Um eine dynamische Portweiterleitung (SOCKS) zu erstellen, übergeben Sie -D Option zum ssh-Client:

ssh -D [LOCAL_IP:]LOCAL_PORT  -N -f username@hostname

Ausführlichere Informationen und Schritt-für-Schritt-Anleitungen finden Sie im Artikel zum Einrichten von SSH-Tunneling (Port Forwarding).

Schlussfolgerung #

Um sich über SSH mit einem Remote-Server zu verbinden, verwenden Sie den ssh Befehl gefolgt vom entfernten Benutzernamen und Hostnamen (ssh username@hostname ).

Wissen, wie man ssh verwendet Der Befehl ist für die Verwaltung von Remote-Servern unerlässlich.

Wenn Sie Fragen haben, hinterlassen Sie bitte unten einen Kommentar.


Linux
  1. Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

  2. Ssh bewirkt, dass While-Schleife stoppt?

  3. Sonderzeichen '#' im Perl-Ssh-Befehl?

  4. Übergeben von Variablen im Remote-SSH-Befehl

  5. Linux Befehl remote ausführen

W-Befehl unter Linux

Bei Befehl unter Linux

So übergeben Sie das Passwort an den SSH-Befehl in Linux

Verwendung von SSH-Befehlen in Linux/Unix-Systemen

Linux-mv-Befehl

Mit OpenSSH verbinden (Windows)