ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Remote SSH: Tipps und Tricks

3. Oktober 2019 von Sana Ajani, @sana_ajani

In einem früheren Remote SSH Blogbeitrag haben wir erklärt, wie man eine Linux-VM einrichtet und sich mit der VM über die Remote - SSH-Erweiterung in Visual Studio Code verbindet. In diesem Blogbeitrag werden wir einige Tipps und Tricks erläutern, mit denen Sie Ihr Remote-Setup optimal nutzen können.

Verbindung mit Remote SSH

Die Visual Studio Code Remote - SSH-Erweiterung ermöglicht es Ihnen, sich von VS Code aus über SSH mit einem Remote-Computer oder einer VM zu verbinden. Wenn Sie die Erweiterung noch nicht installiert haben, können Sie im Erweiterungs-Explorer nach "remote ssh" suchen (⇧⌘X (Windows, Linux Ctrl+Shift+X)).

Remote - SSH extension

Nach der Installation der Erweiterung bemerken Sie eine Anzeige in der unteren linken Ecke der Statusleiste. Diese Anzeige informiert Sie darüber, in welchem Kontext VS Code ausgeführt wird (lokal oder remote). Klicken Sie auf die Anzeige, um eine Liste der Remote-Erweiterungsbefehle anzuzeigen.

Remote extension commands

SSH-Konfigurationsdatei

Im früheren Remote SSH Blogbeitrag haben wir uns nur mit einem einzigen Computer verbunden und dabei bei Aufforderung "Benutzer@Host" eingegeben. Wenn Sie sich regelmäßig bei mehreren Remote-Servern oder lokalen virtuellen Maschinen anmelden, gibt es eine bessere Möglichkeit, sich zu verbinden, ohne sich alle Benutzernamen, Adressen und zusätzlichen Konfigurationsoptionen merken zu müssen.

OpenSSH unterstützt die Verwendung einer Konfigurationsdatei zum Speichern all Ihrer verschiedenen SSH-Verbindungen. Um eine SSH-Konfigurationsdatei zu verwenden, klicken Sie auf die Remote-Anzeige, um die Remote-Befehle anzuzeigen, wählen Sie Konfigurationsdatei öffnen und wählen Sie die Datei, die dem Pfad "Users/{IhrBenutzername}/.ssh/config" folgt.

Open Configuration File command

Hier ist ein Beispiel für eine SSH-Konfigurationsdatei

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host python-linux-vm
    HostName <vm address>
    User sana
    IdentityFile ~/.ssh/id_python_vm

Host node-vm
    HostName <vm address>
    User sana
    Port 5522
    IdentityFile ~/.ssh/id_node_vm

Es gibt viele weitere Konfigurationsoptionen, die Sie im Format der SSH-Konfigurationsdatei angeben können. Sie erhalten Vervollständigungen und Hervorhebungen in dieser Datei und können (⌃Space (Windows, Linux Ctrl+Space)) drücken, um mit IntelliSense mehr über die Konfigurationsoptionen zu erfahren.

Die oben verwendeten Optionen sind

Option Beschreibung
Host Ein leicht zu merkender Alias für Ihren Host-Computer.
HostName Der Hostname des Servers (Sie können die IP-Adresse des Servers verwenden).
User Der Benutzer, den Sie für die Anmeldung am Rechner per SSH angegeben haben.
Port Der Port, der für die Verbindung per SSH verwendet wird. Der Standardport ist 22, aber wenn Sie einen eindeutigen Port angegeben haben, können Sie ihn hier konfigurieren.
IdentityFile Der Dateispeicherort, an dem Sie Ihren privaten Schlüssel gespeichert haben.

Sie können die Informationen für alle Hosts hinzufügen, die Sie haben. Sobald Sie die Konfigurationsdatei gespeichert haben, können Sie diese Hosts im Remote Explorer sehen, sowie alle Ordner, die Sie auf diesem Host geöffnet haben. Sie können auf das Symbol neben jedem Host oder Ordner klicken, und es wird ein neues VS Code-Fenster (Instanz) gestartet und Sie werden mit diesem Host verbunden. Im folgenden Screenshot bin ich mit meinem Remote-Computer "python-linux-vm" verbunden, und der Remote Explorer zeigt mir die Ordner an, mit denen ich in der Vergangenheit verbunden war, sowie alle Portweiterleitungen vom Remote-Computer.

Connected to python-linux-vm host machine

ProxyCommand

Manchmal müssen Sie sich von Ihrem Desktop oder Laptop über das Intranet Ihres Unternehmens oder hinter einer Firewall mit einem Remote-Computer verbinden. In diesem Fall verwenden Sie möglicherweise einen Zwischenserver oder eine Jump Box. Diese Art von Einrichtung ist nützlich, wenn Sie innerhalb eines sicheren Systems arbeiten, das so konfiguriert ist, dass es nur SSH-Verbindungen von einer festen Menge von Hosts akzeptiert.

Um eine Jump-Box-Einrichtung mit der Remote - SSH-Erweiterung zu verwenden, können Sie die Konfigurationsoption ProxyCommand verwenden. Diese Konfiguration öffnet eine Hintergrund-SSH-Verbindung zur Jump Box und verbindet sich dann über eine private IP-Adresse mit dem Ziel.

Sie können die Konfigurationsoption ProxyCommand in der SSH-Konfigurationsdatei wie folgt festlegen

# Jump box with public IP address
Host jump-box
    HostName 52.179.157.97
    User sana
    IdentityFile ~/.ssh/jumpbox

# Target machine with private IP address
Host target-box
    HostName <IP address of target>
    User sana
    IdentityFile ~/.ssh/target
    ProxyCommand ssh -q -W %h:%p jump-box

ControlMaster

Wenn Sie sich mit einem Remote-SSH-Host mit anderen Authentifizierungsmethoden als der schlüsselbasierten Authentifizierung verbinden, wie z. B. Zwei-Faktor, passwortbasiert oder ein SSH-Schlüssel mit Passphrase, müssen Sie die erforderlichen Informationen möglicherweise mehrmals eingeben.

Anstatt mehrere SSH-Verbindungen zu öffnen, können Sie die Option ControlMaster (nur unter macOS/Linux-Clients) verwenden, um eine bestehende Verbindung wiederzuverwenden und die Anzahl der Passphrase-Eingaben zu reduzieren.

Um diese Funktion zu nutzen, fügen Sie Folgendes zu Ihrer SSH-Konfigurationsdatei hinzu

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

Offline-Remote-Maschine

Wenn Sie durch eine Firewall eingeschränkt sind oder Ihr Unternehmen Ihre VMs sperrt und diese keine Internetverbindung herstellen können, kann sich die Remote - SSH-Erweiterung nicht mit Ihrer VM verbinden, da VS Code eine Komponente namens VS Code Server auf der Remote-Maschine herunterladen muss.

Dieses Problem können Sie jetzt jedoch mit einer neuen Benutzereinstellung in der Remote - SSH-Erweiterung lösen. Wenn Sie die Einstellung remote.SSH.allowLocalServerDownload aktivieren, installiert die Erweiterung den VS Code Server zunächst auf dem Client und kopiert ihn dann per SCP auf den Server.

Hinweis: Dies ist derzeit eine experimentelle Funktion, wird aber in der nächsten Version standardmäßig aktiviert sein.

Remote - SSH Nightly-Erweiterung

Wenn Sie neue Updates und experimentelle Funktionen testen möchten, sobald sie verfügbar sind, installieren Sie die Remote - SSH Nightly-Erweiterung (deinstallieren Sie zuerst die Remote-SSH-Stable-Erweiterung). Dies ist der nächtliche Build der Erweiterung, in dem wir neue Funktionen und Einstellungen experimentell testen, bevor wir sie in die stabile Version freigeben.

Wir freuen uns auf Ihr Feedback

Vielen Dank, dass Sie die Remote - SSH-Erweiterung ausprobiert haben! Wenn Sie auf Probleme stoßen oder neue Funktionen oder Szenarien vorschlagen möchten, eröffnen Sie bitte ein Issue in unserem GitHub-Repo. Wenn Sie sehen möchten, an welchen Funktionen wir derzeit arbeiten oder welche als Nächstes kommen, werfen Sie einen Blick auf unsere Release Notes für die Remote-Entwicklung und Iterationspläne. Sie können auch das einführende Tutorial zur Remote-Entwicklung über SSH ausprobieren, das Sie durch die Verwendung der anderen Remote-Erweiterungen zur Arbeit in Docker-Containern und im Windows Subsystem für Linux (WSL) führt.

Viel Spaß beim Remote Coding,

Sana Ajani, VS Code Program Manager @sana_ajani

© . This site is unofficial and not affiliated with Microsoft.