GNU/Linux >> Linux Esercitazione >  >> Linux

Come impostare un profilo di scheda in Terminale di Windows per SSH automaticamente in una scatola Linux

Spero che tu abbia installato Windows Terminal. Se no, vai a farlo, io aspetterò. È ora.

Potresti anche aver personalizzato le tue impostazioni. Se hai provato il terminale alcune versioni fa e non sei tornato indietro, è anche il momento di lasciare che il terminale di Windows ti generi un nuovo e fresco profiles.json (file delle impostazioni). Va bene azzerare/eliminare il tuo. Windows Terminal lo rigenererà al prossimo avvio.

Ho un certo numero di cose nel mio menu a discesa Terminale. Sembra così.

Tuttavia, mi piacerebbe poter avere un profilo che ssh sia in macchine Linux che uso regolarmente. Forse quelle macchine remote possono avere la loro voce di menu interessante? Vediamo come sarebbe e come lo faremmo.

Aggiunta di un nuovo profilo a Windows Terminal

Fare clic sulla freccia giù nella barra delle schede in alto di Terminale di Windows. Tieni presente che ci sono un sacco di impostazioni fantastiche e utili, quindi esplora lo schema delle impostazioni e quando modifichi le impostazioni assicurati che Visual Studio Code sia impostato come gestore predefinito per i file .json. Questo è importante perché il profilo delle impostazioni di Windows Terminal.json include uno schema JSON e vorrai che le tue impostazioni abbiano il completamento automatico/intellisense. In questo modo sarà più facile creare e scoprire nuove impostazioni.

Aggiungerò un profilo all'array "profili". Per iniziare, e per imparare, aggiungiamo il profilo più semplice possibile! Sto solo aggiungendo { } come elemento dell'array nei profili più grandi [] e dandogli un nome.

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

Questo creerà una nuova voce di menu in Terminale di Windows con lo stesso nome. Non avrà alcuna icona e avvierà cmd.exe come shell predefinita perché non ho impostato nessun'altra riga di comando! Se lo aggiungo in alto (come primo) nell'array profili, apparirà anche per primo nel menu e avrà il tasto di scelta rapida Ctrl+Maiusc+1.

Questo è zoppo, quindi aggiungiamo altro. Aggiungerò un tabTitle e un commandline .

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

Questa voce di menu apparirà come "Questo è un nome" nel menu, ma la scheda sarà chiamata "Questo è un titolo di scheda". Verrà avviato PowerShell. Nota che non ho incluso .exe anche se avrei potuto. Volevo assicurarmi che tu sia chiaro che Windows Terminal è fondamentalmente chiamato solo Process.Start in modo da poter impostare una scheda del profilo per chiamare qualsiasi cosa nel PERCORSO, oppure puoi essere esplicito. Potrei anche aggiungere "startingDirectory " e un sacco di altre opzioni.

Dal momento che posso chiamare qualsiasi cosa nel PERCORSO, cos'altro posso farla franca?

Utilizzo di OpenSSH su Windows

Potresti non aver sentito, ma OpenSSH è stato distribuito in Windows da alcuni anni. Ciò significa che molte delle utilità per le quali potresti aver installato Putty sono già disponibili in Windows. Puoi aprire un PowerShell amministrativo ed eseguire un comando per assicurarti che le app client di OpenSSH siano presenti:

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

Questo installa il client, ma c'è anche un server opzionale, se lo desideri.

Mi concentrerò solo sul cliente. Passa all'area successiva se vuoi eseguire il tuo SSH da Linux, non da Windows.

Ecco cosa è installato in c:\windows\System32\OpenSSH

Qui abbiamo sftp, scp e, soprattutto, ssh.exe e ssh-agent. Poiché ssh è nel PERCORSO quando è installato con Windows, posso cambiare il mio profilo del terminale di Windows in modo che assomigli a questo e accedere al mio Raspberry Pi 4.

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

Nota in questo screenshot che ho la connessione ssh elencata in alto e quando faccio clic su di essa si apre ssh.exe e mi chiede una password. Non ho chiavi ssh sul mio sistema che consentano l'accesso automatico, quindi è necessaria la password.

Accesso/accesso SSH automatico a una macchina Linux da un profilo Terminale Windows

Ora questo è importante, quindi fai attenzione. Se hai già WSL o WSL sul tuo computer, puoi semplicemente usare le chiavi SSH e le utilità incluse nella tua distribuzione Linux preferita.

In tal caso, la tua riga di comando nel tuo profilo di Terminale di Windows sarebbe qualcosa del tipo:

wsl ssh pi@hanselpi4

o se vuoi una distribuzione specifica, puoi avviare una distribuzione e ssh da lì.

wsl -d Ubuntu-18.04 ssh pi@hanselpi4

Se conosci Linux, allora hai familiarità con come impostare le tue chiavi pubbliche per consentirlo. Tuttavia, la maggior parte delle persone pensa che tu abbia bisogno di Putty o di uno strumento di terze parti per farlo su Windows, quindi mi concentrerò su come farlo qui.

Voglio essere in grado di digitare "ssh pi@hanselpi4" dal mio computer Windows e accedere automaticamente. Più specificamente, voglio fare clic sul profilo e farlo funzionare.

Lo farò

  • Crea una chiave sulla mia macchina Windows. La macchina FROM, in questo caso, Windows. Quindi voglio ssh DA qui ALLA macchina Linux remota.
  • Informa la macchina Linux (trasferendola) sulla parte pubblica della mia chiave e aggiungila alle chiavi_permesse di un utente specifico.

Eseguirò ssh-keygen per creare una chiave dalla mia riga di comando su Windows. Ho appena premuto invio per generarlo, ma puoi creare il tuo nome file se lo desideri, usa semplicemente il percorso completo e assicurati di tenere traccia di dove si trovano le cose. Le impostazioni predefinite sono generalmente le migliori.

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

Ricorda che il percorso è c:\utenti\tuonome perché è l'equivalente di Windows della cartella ~ home e le chiavi sono in c:\utenti\tuonome\.ssh.

Ora voglio trasferire ciò che è in id_rsa.pub sul mio Raspberry Pi. Puoi scp (copia sicura) se vuoi, ma è meglio aggiungere la chiave al file authorized_keys sul computer di destinazione.

NOTA:sto digitando (cat su Linux è digitato su Windows) quel file di testo e lo sto inserendo in SSH dove accedo a quella macchina remota con l'utente pi e poi cat (sul lato Linux ora) e aggiungo>> quel testo nella cartella .ssh/authorized_keys. La cartella ~ è implicita ma potrebbe essere aggiunta se lo desideri.

Esegui questo comando una volta su Windows per emettere la tua chiave, inviarla tramite pipe e aggiungerla al file corretto sulla tua macchina Linux remota. Ti verrà richiesta la password una volta.

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

Assicurati di capire cosa sta succedendo nella riga sopra.

Aggiunta di un'icona al profilo:il lampone in alto

A questo punto posso fare clic sulla voce di menu in Terminale di Windows ed essere automaticamente registrato/acceso al terminale remoto. Ma, scandalosamente, la voce di menu Terminale non ha icona. Questo è chiaramente inaccettabile M$sft fa schifo, giusto? Vado a prendere una bella icona Raspberry Pi 32x32 e la metto da qualche parte. Potresti mettere i tuoi in un Dropbox o OneDrive in modo che siano disponibili ovunque tu vada.

Ora il mio profilo si presenta così:

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

Quanto è adorabile?

Sembra buono, ha un bel titolo e un'icona e posso usare un tasto di scelta rapida per SSH automaticamente nella mia macchina remota.

Un'ultima nota, hai già Azure Cloud Shell nel terminale di Windows (puoi accedervi gratuitamente all'indirizzo http://shell.azure.com nel tuo browser e accedere a un contenitore Linux gratuito ovunque e in qualsiasi momento con un'unità cloud persistente ) ma ora puoi seguire le istruzioni in questo post e impostare SSH con un clic ovunque.

Spero che questo sia utile!

Sponsor: Lo sponsor di questa settimana sono... io! Questo blog e il mio podcast sono stati un lavoro d'amore per oltre 18 anni. La tua sponsorizzazione paga le mie bollette di hosting per entrambi E mi consente di acquistare gadget da rivedere E il taco occasionale. Unisciti a me!


Linux
  1. Come impostare un banner di avviso SSH personalizzato o un MOTD in Linux

  2. Come impostare il titolo di una finestra in Linux

  3. Come eseguire SCP dal server Linux al client Windows

  4. Come posso condividere Internet con Windows dalla mia macchina Linux?

  5. come eseguire il tunneling di Windows Remote Desktop tramite ssh utilizzando una macchina Linux?

Come SSH nel tuo server Linux da Windows

Come mi collego a Linux VPS tramite SSH da Linux e Windows OS?

Come eseguire SSH in WSL2 su Windows 10 da un computer esterno

Come eseguire SSH in una macchina Windows 10 da Linux O Windows O ovunque

Come utilizzare SSH per connettersi a un server remoto in Linux o Windows

Come posso montare una cartella Linux remota in Windows tramite SSH?