GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit profil karty v terminálu Windows, aby automaticky SSH do krabice Linux

Doufám, že už jste si nainstalovali Windows Terminal. Pokud ne, jdi do toho, počkám. Je čas.

Můžete si také upravit nastavení. Pokud jste terminál vyzkoušeli před několika verzemi a nevrátili jste se zpět, je také čas nechat Windows Terminal vygenerovat nový pěkný profil profiles.json (soubor nastavení). Vynulování/smazání vašeho je v pořádku. Windows Terminal jej při příštím spuštění obnoví.

V rozevíracím seznamu Terminál mám řadu věcí. Vypadá to takto.

Rád bych však mohl mít profil, který ssh je na linuxové stroje, které pravidelně používám. Možná, že tyto vzdálené stroje mohou mít svou vlastní skvělou položku nabídky? Podívejme se, jak by to vypadalo a jak bychom to udělali.

Přidání nového profilu do Windows Terminal

Klepněte na šipku dolů na horní liště záložek Windows Terminal. Všimněte si, že existuje spousta skvělých a užitečných nastavení, takže prozkoumejte schéma nastavení a když upravujete nastavení, ujistěte se, že Visual Studio Code je nastaven jako výchozí obslužný program pro soubory .json. To je důležité, protože profil.json nastavení Windows Terminal obsahuje schéma JSON a budete chtít, aby vaše nastavení měla automatické doplňování/inteligentní. To usnadní vytváření a objevování nových nastavení.

Přidám profil do pole "profily". Chcete-li začít a učit se, přidejte nejjednodušší možný profil! Pouze přidávám { } jako položku pole do větších profilů [] a dávám mu název.

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

Tím vytvoříte novou položku nabídky v terminálu Windows se stejným názvem. Nebude mít žádnou ikonu a spustí cmd.exe jako výchozí shell, protože jsem nenastavil žádný jiný příkazový řádek! Pokud jej přidám na horní (jako první) položku v poli profilů, zobrazí se také jako první v nabídce a bude mít klávesovou zkratku Ctrl+Shift+1.

To je lame, tak pojďme přidat další. Přidám tabTitle a commandline .

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

Tato položka nabídky se v nabídce zobrazí jako „Toto je název“, ale karta se bude jmenovat „Toto je název karty“. Spustí powershell. Všimněte si, že jsem nezahrnul .exe, i když jsem mohl. Chtěl jsem se ujistit, že je vám jasné, že Windows Terminal se v podstatě nazývá pouze Process.Start, takže můžete nastavit kartu profilu tak, aby volala cokoli v PATH, nebo můžete být explicitní. Mohl bych také přidat "startingDirectory “ a spoustu dalších možností.

Vzhledem k tomu, že mohu volat cokoli v PATH, co jiného mi může uniknout?

Používání OpenSSH ve Windows

Možná jste neslyšeli, ale OpenSSH je dodáván ve Windows již několik let. To znamená, že mnoho nástrojů, pro které jste možná nainstalovali Putty, je již k dispozici ve Windows. Můžete otevřít administrátorské PowerShell a spustit jeden příkaz, abyste se ujistili, že jsou tam klientské aplikace OpenSSH:

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

Tím se nainstaluje klient, ale pokud chcete, existuje i volitelný server.

Budu se soustředit pouze na klienta. Pokud chcete provádět SSH z Linuxu, ne z Windows, přejděte k další oblasti.

Zde je to, co je nainstalováno v c:\windows\System32\OpenSSH

Zde máme sftp, scp a co je nejdůležitější, ssh.exe a ssh-agent. Protože ssh je v PATH, když je nainstalován s Windows, mohu změnit svůj profil Windows Terminal tak, aby vypadal takto, a přihlásit se do svého Raspberry Pi 4.

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

Všimněte si, že na tomto snímku obrazovky mám připojení ssh uvedené nahoře, a když na něj kliknu, otevře se ssh.exe a vyzve mě k zadání hesla. Ve svém systému nemám žádné ssh klíče, které by umožňovaly automatické přihlášení, proto je potřeba heslo.

Automatické SSH/přihlášení do počítače se systémem Linux z profilu Windows Terminal

Nyní je to důležité, takže věnujte pozornost. Pokud již na svém počítači máte WSL nebo WSL, můžete určitě použít pouze klíče a nástroje SSH, které jsou součástí vaší preferované distribuce Linuxu.

V takovém případě by váš příkazový řádek ve vašem profilu Windows Terminal vypadal něco jako:

wsl ssh pi@hanselpi4

nebo pokud chcete konkrétní distribuci, můžete spustit distribuci a ssh odtud.

wsl -d Ubuntu-18.04 ssh pi@hanselpi4

Pokud znáte Linux, pak jste obeznámeni s tím, jak nastavit veřejné klíče, aby to umožňovaly. Většina lidí si však myslí, že k tomu ve Windows potřebujete Putty nebo nějaký nástroj třetí strany, takže se zde zaměřím na to, jak to udělat.

Chci mít možnost napsat "ssh pi@hanselpi4" ze svého počítače se systémem Windows a být automaticky přihlášen. Konkrétněji chci kliknout na profil a nechat to prostě fungovat.

Budu

  • Vytvořte si klíč na mém počítači s Windows. Stroj FROM, v tomto případě Windows. Pak chci ssh odsud na vzdálený počítač s Linuxem.
  • Řekněte linuxovému počítači (přenesením) o veřejné části mého klíče a přidejte jej do povolených_klíčů konkrétního uživatele.

Spustím ssh-keygen a vytvořím klíč z příkazového řádku ve Windows. Stiskl jsem klávesu Enter, abych to vygeneroval, ale můžete si vytvořit svůj vlastní název souboru, pokud chcete, stačí použít úplnou cestu a ujistěte se, že máte přehled o tom, kde se věci nacházejí. Výchozí jsou obvykle nejlepší.

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

Pamatujte, že cesta je c:\users\vaše jméno, protože to je Windows ekvivalent domovské složky ~ a klíče jsou v c:\users\vaše jméno\.ssh.

Nyní chci přenést to, co je v id_rsa.pub, do mého Raspberry Pi. Pokud chcete, můžete scp (zabezpečenou kopii), ale nejlepší je připojit klíč do souboru autorizovaných klíčů na cílovém počítači.

POZNÁMKA:Píšu (cat na Linuxu je typ na Windows) ten textový soubor a posílám ho do SSH, kde se přihlásím na vzdálený počítač s uživatelem pi a pak cat (nyní na straně Linuxu) a připojím>> tento text do složky .ssh/authorized_keys. Složka ~ je implicitní, ale můžete ji přidat, pokud chcete.

Spusťte tento příkaz jednou v systému Windows, abyste vypsali svůj klíč a přenesli jej do správného souboru na vzdáleném počítači se systémem Linux a přidali k němu. Jednou budete vyzváni k zadání hesla.

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

Ujistěte se, že rozumíte tomu, co se děje ve výše uvedeném řádku.

Přidání ikony profilu – malina nahoře

V tomto okamžiku mohu kliknout na položku nabídky v terminálu Windows a automaticky být ssh'ed/přihlášen do vzdáleného terminálu. Položka nabídky Terminál však skandálně nemá žádnou ikonu. To je jasně nepřijatelné M$sft naštve, že? Vezmu pěknou ikonu Raspberry Pi 32x32 a někam ji dám. Můžete je vložit do Dropboxu nebo OneDrive, aby byly dostupné, ať jste kdekoli.

Můj profil teď vypadá takto:

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

Jak je to krásné?

Vypadá dobře, má pěkný název a ikonu a mohu použít klávesovou zkratku pro automatické SSH do mého vzdáleného počítače.

Poslední poznámka, Azure Cloud Shell už máte v terminálu Windows (můžete se tam dostat zdarma na http://shell.azure.com ve vašem prohlížeči a přistupovat k bezplatnému linuxovému kontejneru odkudkoli a kdykoli s trvalým cloudovým diskem ), ale nyní můžete postupovat podle pokynů v tomto příspěvku a nastavit SSH jedním kliknutím kamkoli.

Doufám, že je to užitečné!

Sponzor: Sponzorem tohoto týdne jsem...já! Tento blog a můj podcast jsou dílem lásky již více než 18 let. Vaše sponzorství platí mé účty za hosting za obojí A umožňuje mi nakupovat gadgety ke kontrole A občasné taco. Připojte se ke mně!


Linux
  1. Jak nastavit vlastní výstražný banner SSH nebo MOTD v Linuxu

  2. Jak nastavit název okna v Linuxu

  3. Jak SCP z linuxového serveru na Windows klienta

  1. Jak nastavit nastavení proxy na příkazovém řádku nebo terminálu Linuxu

  2. Jak mohu sdílet internet s Windows z mého Linuxového boxu?

  3. jak tunelovat vzdálenou plochu Windows přes ssh pomocí linuxového boxu?

  1. Jak synchronizovat profil prohlížeče do Tmpfs (RAM) v Linuxu

  2. Jak spustit Windows 95 v Linuxu

  3. Jak SSH do konkrétního adresáře v Linuxu