VSCode und SSH

Wenn Sie einmal an die Vorzüge von VSCode zu schätzen gelernt haben, möchten Sie diese auch dann nutzen, wenn Sie remote via SSH einen Server administrieren oder Code verfassen. VSCode läuft aber nur im Grafikmodus und kann daher nicht direkt in typischen Server-Installationen ausgeführt werden. Hier schlägt die Stunde von Editoren, die wie Vi oder Emacs im Textmodus laufen und daher auch in einer SSH-Session funktionieren …

Ich will Sie hier aber nicht von den Vorteilen alter Text-Modus-Editoren überzeugen, sondern Ihnen stattdessen die ausgesprochen praktische VSCode-Erweiterung Remote SSH vorstellen: Damit läuft VSCode weiterhin auf Ihrem lokalen Rechner. Via SSH können Sie nun die Dateien eines Remote-Verzeichnisses auflisten, bearbeiten, verändern und speichern — ganz so, als würden Sie lokale Dateien bearbeiten.

Installation und erste Tests

Zur Installation suchen Sie in der Extensions-Seite nach Remote SSH und klicken auf Install. Fertig!

Nun führen Sie mit <F1> Remote SSH: Add new ssh host aus und geben dann — ganz wie in einem Terminal — das Kommando ssh <user>@<hostname> ein. VSCode speichert die Daten in .ssh/config, stellt aber vorerst keine Verbindung her.

Der Verbindungsaufbau erfolgt mit <F1> Remote SSH: Connect to host oder über den grünen Remote-Bereich in der Statusleiste. VSCode greift beim Verbindungsaufbau auf das Linux-Kommando ssh zurück und wertet entsprechend auch die in .ssh gespeicherten Schlüssel aus. Die Angabe eines Passworts ist nur erforderlich, wenn es für die gewünschte Verbindung keine SSH-Schlüssel gibt oder wenn ein per Passwort abgesicherter Schlüssel erstmalig verwendet wird.

Nach dem erfolgreichen Verbindungsaufbau öffnet VSCode ein neues Fenster, wobei der grünen Bereich in der Statusbar klar macht, dass nicht lokale Daten bearbeitet werden. Von nun an funktioniert VSCode wie üblich: Sie wählen ein Verzeichnis aus, bearbeiten die darin enthaltenen Dateien, speichern Ihre Änderungen usw.

Mit VSCode Dateien bearbeiten, die sich auf einem anderen Rechner befinden. Beachten Sie den grünen Bereich der Statusleiste!

Ausgesprochen praktisch ist im Remote-Betrieb auch der Terminal-Bereich von VSCode (Menükommando Terminal/New Terminal). Auch das Terminal agiert remote, Sie führen darin also wie in einer SSH-Session Kommandos am Server aus.

Kein sudo

An seine Grenzen stößt VSCode, wenn Sie Systemdateien bearbeiten möchten (siehe auch dieses GitHub-Issue): Es gibt keine sudo vergleichbare Funktion. Somit erlaubt VSCode nur den Zugriff auf die Dateien, die auch ein SSH-Benutzer lesen darf.

Sofern Ihr Server einen SSH-root-Login erlaubt, ist es grundsätzlich denkbar, die SSH-Verbindung für VSCode mit root@<hostname> herzustellen. Wirklich glücklich macht diese Lösung aber nicht. VSCode kann sich zwar mehrere Verbindungen für einen Server merken (normaler Benutzer, root etc.), in der Statusleiste wird aber immer nur den Hostnamen anzeigt (aber nicht den Loginnamen). Wenn Sie VSCode mal als gewöhnlicher Benutzer und mal mit root-Login verwenden, geht schnell der Überblick verloren. Und ständig mit root-Rechten arbeiten will sowieso niemand.

Inotify-Fehlermeldung

VSCode überwacht die im geöffneten Remote-Verzeichnis befindlichen Dateien auf Änderungen. Wenn VSCode dabei einen inotify-Fehler anzeigt (siehe die entsprechende VSCode-Dokumentation), erhöhen Sie am besten das Limit der zu überwachenden Dateien. Dazu bauen Sie in die Datei /etc/sysctl.conf des Remote-Rechners die folgende Anweisung ein:

# Datei /etc/sysctl.conf
...
fs.inotify.max_user_watches=100000

Anstelle von 100000 können Sie natürlich einen anderen Wert wählen. Das Kommando sysctl -p aktiviert die Änderungen.

Sicherheitsbedenken

Bei aller Bequemlichkeit ist es mir persönlich ein wenig unheimlich, VSCode via SSH den Zugriff auf einen Server zu erlauben. Ich hege zwar kein ausgesprochenes Misstrauen gegenüber den VSCode-Entwicklern, aber als erste Schutzmaßnahme ist das Abschalten der Telemetriefunktionen sicher kein Fehler. Suchen Sie in den VSCode-Einstellungen nach telemetry und deaktivieren Sie die entsprechenden Optionen.

Selbst wenn VSCode an sich OK ist: Wer weiß schon, ob nicht irgendeine der typischerweise vielen installierten VSCode-Extensions bösartigen Code enthält und z.B. die via VSCode bearbeiteten Dateien auf Passwörter durchsucht und diese weiterleitet?

Grundsätzlich gilt dieser Vorbehalt natürlich für jeden Editor, ganz egal, ob »nur« lokale Dateien oder SSH-Verbindungen im Spiel sind. Fest steht aber, dass ein so leicht erweiterbarer Editor wie VSCode eine potenzielle Gefahrenquelle ist.

Quellen

Ein Gedanke zu „VSCode und SSH“

Kommentare sind geschlossen.