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

So richten Sie ein Registerkartenprofil in Windows Terminal ein, um automatisch SSH in eine Linux-Box einzubinden

Hoffentlich haben Sie jetzt Windows Terminal installiert. Wenn nicht, mach das, ich warte. Es ist soweit.

Möglicherweise haben Sie auch Ihre Einstellungen angepasst. Wenn Sie Terminal vor ein paar Versionen ausprobiert haben und nicht wieder hineingegangen sind, ist es auch an der Zeit, dass das Windows-Terminal Ihnen eine schöne, frische Profile.json (Einstellungsdatei) generiert. Es ist in Ordnung, Ihre auf Null zu setzen/zu löschen. Windows Terminal wird es beim nächsten Start neu generieren.

Ich habe eine Reihe von Dingen in meinem Terminal-Dropdown. Es sieht so aus.

Ich möchte jedoch in der Lage sein, ein Profil zu haben, das ssh in Linux-Computer einbindet, die ich regelmäßig verwende. Vielleicht können diese Remote-Rechner ihren eigenen coolen Menüpunkt haben? Mal sehen, wie das aussehen würde und wie wir es machen würden.

Hinzufügen eines neuen Profils zu Windows Terminal

Klicken Sie auf den Abwärtspfeil in der oberen Registerkartenleiste von Windows Terminal. Beachten Sie, dass es eine Menge toller und nützlicher Einstellungen gibt, also erkunden Sie das Einstellungsschema, und stellen Sie beim Bearbeiten der Einstellungen sicher, dass Visual Studio Code als Ihr Standardhandler für JSON-Dateien festgelegt ist. Das ist wichtig, weil die Datei „profile.json“ der Windows-Terminaleinstellungen ein JSON-Schema enthält und Sie möchten, dass Ihre Einstellungen über Autovervollständigung/IntelliSense verfügen. Dadurch wird es einfacher, neue Einstellungen zu erstellen und zu entdecken.

Ich füge dem Array "profiles" ein Profil hinzu. Lassen Sie uns zu Beginn und zum Lernen das einfachste Profil hinzufügen! Ich füge einfach das { } als Array-Element in den größeren Profilen [] hinzu und gebe ihm einen Namen.

"profiles": [
{
"name": "This is a name"
},

Dadurch wird ein neuer Menüpunkt im Windows Terminal mit demselben Namen erstellt. Es wird kein Symbol haben und cmd.exe wird als Standard-Shell gestartet, da ich keine andere Befehlszeile festgelegt habe! Wenn ich es ganz oben (als erstes) Element im Profile-Array hinzufüge, erscheint es auch als erstes im Menü und hat die Tastenkombination Strg+Umschalt+1.

Das ist lahm, also lasst uns mehr hinzufügen. Ich füge einen tabTitle hinzu und eine commandline .

    {
"name": "This is a name",
"tabTitle": "This is a tab title",
"commandline": "powershell"
},

Dieses Menüelement wird im Menü als „Dies ist ein Name“ angezeigt, aber die Registerkarte heißt „Dies ist ein Registerkartentitel“. Es startet Powershell. Beachten Sie, dass ich keine .exe eingefügt habe, obwohl ich es hätte tun können. Ich wollte sicherstellen, dass Ihnen klar ist, dass Windows Terminal im Grunde nur Process.Start heißt, sodass Sie eine Profilregisterkarte festlegen können, um alles im PATH aufzurufen, oder Sie können explizit sein. Ich könnte auch "startingDirectory hinzufügen " und viele andere Optionen.

Da ich alles im PATH aufrufen kann, womit kann ich noch davonkommen?

OpenSSH unter Windows verwenden

Sie haben es vielleicht noch nicht gehört, aber OpenSSH wird seit einigen Jahren in Windows ausgeliefert. Das bedeutet, dass viele der Dienstprogramme, für die Sie möglicherweise Putty installiert haben, bereits in Windows verfügbar sind. Sie können eine Administrator-PowerShell öffnen und einen Befehl ausführen, um sicherzustellen, dass die Client-Apps von OpenSSH vorhanden sind:

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

Dadurch wird der Client installiert, aber es gibt auch einen optionalen Server, wenn Sie möchten.

Ich werde mich nur auf den Kunden konzentrieren. Fahren Sie mit dem nächsten Bereich fort, wenn Sie SSH von Linux und nicht von Windows aus durchführen möchten.

Folgendes ist in c:\windows\System32\OpenSSH

installiert

Hier haben wir sftp, scp und vor allem ssh.exe und ssh-agent. Da sich ssh im PATH befindet, wenn es mit Windows installiert wird, kann ich mein Windows-Terminalprofil so ändern, dass es so aussieht, und mich bei meinem Raspberry Pi 4 anmelden.

{
"name": "ssh hanselPi4",
"tabTitle": "HanselPi4",
"commandline": "ssh pi@hanselpi4"
},

Beachten Sie, dass in diesem Screenshot die ssh-Verbindung oben aufgeführt ist, und wenn ich darauf klicke, öffnet sie ssh.exe und fordert mich zur Eingabe eines Passworts auf. Ich habe keine SSH-Schlüssel auf meinem System, die die automatische Anmeldung aktivieren würden, daher wird das Passwort benötigt.

Automatisches SSH-Verbinden/Anmelden bei einem Linux-Rechner von einem Windows-Terminalprofil aus

Das ist jetzt wichtig, also pass auf. Wenn Sie WSL oder WSL bereits auf Ihrem Computer haben, können Sie einfach die SSH-Schlüssel und -Dienstprogramme verwenden, die in Ihrer bevorzugten Linux-Distribution enthalten sind.

In diesem Fall würde Ihre Befehlszeile in Ihrem Windows Terminal-Profil etwa so aussehen:

wsl ssh pi@hanselpi4

oder wenn Sie eine bestimmte Distribution möchten, können Sie eine Distribution und ssh von dort aus starten.

wsl -d Ubuntu-18.04 ssh pi@hanselpi4

Wenn Sie sich mit Linux auskennen, sind Sie damit vertraut, wie Sie Ihre öffentlichen Schlüssel so einrichten, dass dies möglich ist. Die meisten Leute denken jedoch, dass Sie Putty oder ein Tool eines Drittanbieters benötigen, um dies unter Windows zu tun, also konzentriere ich mich hier darauf, wie das geht.

Ich möchte in der Lage sein, "ssh pi@hanselpi4" von meinem Windows-Rechner aus einzugeben und automatisch angemeldet zu werden. Genauer gesagt möchte ich auf das Profil klicken und es einfach funktionieren lassen.

Ich werde

  • Erstellen Sie einen Schlüssel auf meiner Windows-Maschine. Der FROM-Computer, in diesem Fall Windows. Dann möchte ich von hier ZUR Remote-Linux-Maschine ssh.
  • Teilen Sie dem Linux-Rechner (indem Sie ihn übertragen) den öffentlichen Teil meines Schlüssels mit und fügen Sie ihn zu den allow_keys eines bestimmten Benutzers hinzu.

Ich werde ssh-keygen ausführen, um einen Schlüssel von meiner Befehlszeile unter Windows zu erstellen. Ich habe nur die Eingabetaste gedrückt, um es zu generieren, aber Sie können Ihren eigenen Dateinamen erstellen, wenn Sie möchten, verwenden Sie einfach den vollständigen Pfad und stellen Sie sicher, dass Sie den Überblick behalten, wo sich die Dinge befinden. Standardeinstellungen sind normalerweise am besten.

>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\scott/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in hanselpi4.
Your public key has been saved in hanselpi4.pub.

Denken Sie daran, dass der Pfad c:\users\yourname ist, da dies das Windows-Äquivalent des ~ Home-Ordners ist und die Schlüssel in c:\users\yourname\.ssh.

liegen

Jetzt möchte ich den Inhalt von id_rsa.pub auf meinen Raspberry Pi übertragen. Sie können scp (sichere Kopie) verwenden, wenn Sie möchten, aber am besten den Schlüssel anhängen in die Datei "authorized_keys" auf dem Zielcomputer.

HINWEIS:Ich tippe (cat unter Linux ist type unter Windows) diese Textdatei aus und leite sie in SSH, wo ich mich auf diesem Remote-Computer mit dem Benutzer pi anmelde und dann cat (jetzt auf der Linux-Seite) und anhänge>> diesen Text in den Ordner .ssh/authorized_keys. Der Ordner ~ ist impliziert, könnte aber hinzugefügt werden, wenn Sie möchten.

Führen Sie diesen Befehl einmal unter Windows aus, um Ihren Schlüssel auszugeben, und leiten Sie ihn an die richtige Datei auf Ihrem Linux-Remotecomputer weiter und hängen Sie sie an. Sie werden einmal nach Ihrem Passwort gefragt.

type c:\users\scott\.ssh\id_rsa.pub | ssh pi@hanselpi4 'cat >> .ssh/authorized_keys'

Stellen Sie sicher, dass Sie verstehen, was in der obigen Zeile passiert.

Hinzufügen eines Profilsymbols - die Himbeere oben

An diesem Punkt kann ich auf den Menüpunkt im Windows-Terminal klicken und automatisch beim Remote-Terminal per SSH verbunden/angemeldet werden. Aber skandalöserweise hat der Terminal-Menüpunkt kein Symbol. Das ist eindeutig inakzeptabel, M$sft ist scheiße, oder? Ich werde mir ein schönes 32x32 Raspberry Pi Icon holen und es irgendwo hinstellen. Sie können Ihre Dateien in Dropbox oder OneDrive ablegen, damit sie überall verfügbar sind.

Jetzt sieht mein Profil so aus:

"profiles": [
{
"name": "ssh hanselPi4",
"tabTitle": "HanselPi4",
"commandline": "ssh pi@hanselpi4",
"icon": "c:/users/scott/downloads/icons8-raspberry-pi-32.png"
},

Wie schön ist das?

Sieht gut aus, hat einen schönen Titel und ein schönes Symbol, und ich kann einen Hotkey verwenden, um automatisch per SSH in meinen Remote-Computer zu gelangen.

Eine letzte Anmerkung:Sie haben die Azure Cloud Shell bereits im Windows Terminal (Sie können sie kostenlos unter http://shell.azure.com in Ihrem Browser abrufen und jederzeit und überall mit einem persistenten Cloud-Laufwerk auf einen kostenlosen Linux-Container zugreifen ), aber jetzt können Sie den Anweisungen in diesem Beitrag folgen und SSH mit einem Klick überall einrichten.

Hoffe, das ist nützlich!

Sponsor: Der Sponsor dieser Woche bin ich! Dieser Blog und mein Podcast sind seit über 18 Jahren eine Herzensangelegenheit. Ihr Sponsoring bezahlt meine Hosting-Rechnungen für beide UND ermöglicht es mir, Gadgets zu kaufen, um sie zu überprüfen, UND gelegentlich einen Taco. Machen Sie mit!


Linux
  1. So legen Sie ein benutzerdefiniertes SSH-Warnbanner oder MOTD in Linux fest

  2. So legen Sie Proxy-Einstellungen in der Linux-Befehlszeile oder im Terminal fest

  3. So legen Sie den Titel eines Windows unter Linux fest

  4. So führen Sie SCP vom Linux-Server zum Windows-Client aus

  5. Wie teile ich das Internet mit Windows von meiner Linux-Box aus?

Wie Sie von Windows aus SSH in Ihren Linux-Server einbinden

Wie verbinde ich mich mit Linux VPS über SSH von Linux und Windows OS?

So führen Sie SSH in WSL2 unter Windows 10 von einem externen Computer aus

Wie man SSH in einen Windows 10-Rechner von Linux ODER Windows ODER überall her einfügt

So verwenden Sie SSH, um eine Verbindung zu einem Remote-Server unter Linux oder Windows herzustellen

Wie mounte ich einen Remote-Linux-Ordner in Windows über SSH?