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)).

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.

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.

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.

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