Padroneggiare i comandi SSH in Linux per gli amministratori Windows

Linux e Windows erano nemici giurati, ma oggi tendono a convivere molto meglio. In effetti, ora è possibile utilizzare nativamente SSH in Windows, sia come client che come server. Cosa fai quando sei un amministratore di Windows ma devi anche gestire macchine Linux? Ti abitui al comando (Secure Shell) SSH in Linux!

Questo è il quarto capitolo della serie di articoli A Windows Guy in a Linux World. Se vuoi saperne di più sui concetti Linux popolari, assicurati di leggere Parte I, Parte II e Parte III.

In questo articolo, imparerai tutto su come abilitare SSH in Linux e come configurare il client SSH di Windows per connettersi a server Linux remoti.

Nota: Tutti gli esempi utilizzeranno OpenSUSE Linux.

Allontanarsi dall’ambiente desktop

Nel primo articolo di questa serie, il tutorial consigliava di utilizzare l’ambiente desktop KDE. Durante l’installazione di OpenSUSE, avrai probabilmente visto un’altra opzione interessante: l’edizione server di OpenSUSE.

Server Edition of OpenSUSE

Se hai installato la versione server della maggior parte delle distribuzioni Linux (incluse OpenSUSE), potresti aver notato la completa mancanza di un desktop. La versione server della maggior parte delle distribuzioni popolari (come OpenSUSE, così come Ubuntu Server e CentOS) è simile a Windows Server Core: non c’è un desktop vero e proprio.

Per capire perché il desktop è generalmente evitato nella cultura Linux, è necessario comprendere la CLI e SSH.

SSH: Lo standard d’oro per la gestione remota

SSH, come molti altri protocolli di gestione remota, è un sistema basato su client-server. Un client si connette in remoto alla rete a un server e consente di eseguire comandi (o persino trasferire file). SSH è lo standard de facto per la gestione remota di Linux.

Poiché SSH esiste da molto tempo ed è profondamente integrato nell’ecosistema Linux, le utility di amministrazione da riga di comando dominano l’ambiente dei server Linux. La maggior parte delle distribuzioni di server Linux non ha un’interfaccia grafica.

Utilizzo dei comandi SSH in Linux

Basta parlare. Vediamo cosa può fare SSH abilitandolo in OpenSUSE Linux. Per farlo, utilizza il gestore dei pacchetti YaST. Per abilitare SSH con YaST in OpenSUSE:

  1. Fai clic sul menu di avvio, digita terminale e scegli Konsole assumendo di aver installato il gestore desktop KDE durante l’installazione di OpenSUSE.
  2. Nel terminale, aprire YaST eseguendo sudo yast.
  3. Una volta in YaST, scorrere verso il basso fino a sistema, quindi scorrere verso destra fino a gestore dei servizi e premere Invio per procedere.
  4. Scorrere verso il basso fino a sshd e premere alt+s per avviare il servizio SSH.
  5. Premere alt+r per modificare la modalità di avvio da manuale a all’avvio. In questo modo il servizio del server SSH verrà avviato anche dopo un riavvio.
  6. Premere alt+o per confermare le modifiche e applicarle.

Puoi vedere questi passaggi in azione di seguito.

Using YaST from the command line to enable SSH

Consentire SSH attraverso il firewall

Quasi ogni distribuzione Linux è dotata di un qualche tipo di firewall per proteggerla, come avviene in Windows. Puoi leggere informazioni sul firewall di OpenSUSE qui. Per poter accedere al servizio SSH in remoto da Windows, devi consentirlo attraverso il firewall. Per farlo:

  1. Sempre nel terminale, avvia nuovamente YaST con sudo yast.
  2. Scorri verso il basso fino a Sicurezza e utenti e quindi scorrere verso destra fino a Firewall e premere Invio per procedere.
  3. Naviga verso Zone –> Pubblico e scorri verso destra fino al pannello Servizi—Porte.
  4. Scorri verso il basso per trovare ssh nei servizi.
  5. Seleziona ssh premendo la barra spaziatrice e premi alt+d per aggiungere la selezione.
  6. Premi alt+a per accettare le modifiche.

Puoi vedere tutti questi passaggi sopra rappresentati visivamente qui sotto.

Using YaST from the command line to let SSH through the firewall

Come Windows, anche Linux ha diversi livelli di fiducia per applicare le regole del firewall. Questi livelli sono chiamati zone. Windows ha le zone pubblica, lavoro e privata di default. Linux ne ha molte di più, ma di default usa la zona pubblica.

Connessione a Linux da Windows

Fortunatamente, oggigiorno Windows 10 ha un client SSH integrato. Per connettersi a un host Linux, apri un prompt dei comandi (cmd) o una console PowerShell e specifica il nome utente con cui connettersi e l’IP o l’hostname.

> ssh <username>@<ip address>

Se tutto va bene, il client SSH ti chiederà di accettare una fingerprint. Una fingerprint è un identificatore per assicurarsi che nessuno abbia dirottato l’indirizzo IP di destinazione.

Se stai utilizzando Windows 7, puoi comunque connetterti via SSH al tuo host Linux. Dovrai solo scaricare il client SSH di Microsoft da qui. Questo client SSH è lo stesso utilizzato da Windows 10.

Dopo aver digitato yes e inserito la password, sei connesso al tuo server! Ora puoi utilizzare la riga di comando come se stessimo aprendo un terminale sul computer stesso.

Non esporre SSH (porta predefinita 22) su Internet attraverso il tuo router. I bot esplorano costantemente Internet alla ricerca di porte SSH aperte. Appena un bot trova una porta aperta, inizierà a tentare di forzare l’accesso con password di spam.

Abilitare il supporto del mouse in SSH con Windows

Uno dei grandi svantaggi nell’utilizzare il client nativo SSH di Windows 10 (almeno al momento della stesura di questo articolo) è la mancanza di supporto del mouse. Ciò significa che non è possibile utilizzare un mouse in midnight commander come hai imparato in un precedente post del blog.

Fortunatamente, a partire dalla versione otto del client OpenSSH per Windows, è possibile ottenere il supporto del mouse! Procediamo con l’installazione di questo client.

  1. Scarica l’ultima versione di OpenSSH-Win64 da qui ed estrai il file zip risultante. Il tutorial suppone che tu lo estragga in ~\Downloads\OpenSSH-Win64.
  2. Apri una console di PowerShell e naviga in ~\Downloads\OpenSSH-Win64 con il comando cd ~\Downloads\OpenSSH-Win64.
  3. Verifica la versione del client SSH eseguendo il comando .\\ssh -V. Al momento della stesura di questa guida, la versione dovrebbe essere 8.1.0.0-p1.
  4. Esegui l’accesso al tuo server Linux utilizzando il comando .\ssh <utente>@<ip>.
  5. Dopo aver effettuato l’accesso, verifica il supporto del mouse eseguendo il comando mc per avviare midnight commander e assicurati di poter utilizzare il mouse.

Puoi vedere tutti questi passaggi visualizzati in modo visivo qui sopra.

Sovrascrivere il client SSH predefinito

Se desideri utilizzare la nuova versione in modo permanente, puoi farlo; ma devi sovrascrivere il client SSH predefinito di Windows 10. In questo modo, ogni volta che esegui ssh dalla riga di comando, verrà utilizzata la versione più recente (con supporto per il mouse).

Supponendo che tu abbia estratto il client nella cartella ~\Downloads\OpenSSH-Win64

  1. Sposta la cartella estratta di OpenSSH-Win64 in una cartella permanente a tua scelta. In questo tutorial useremo C:\users\public\OpenSSH-Win64.
  2. Vai su Start, quindi su Esegui e digita sysdm.cpl oppure apri Sistema dal pannello di controllo.
  3. Nella scheda Avanzate, fai clic su Variabili d’ambiente.
  4. Nelle Variabili di sistema, fai clic su Path.
  5. Fai clic su Nuovo per aggiungere un nuovo percorso e fornisci il percorso della cartella del client SSH (C:\users\public\OpenSSH-Win64 in questo caso).
  6. Fai clic su Sposta su fino a quando non si trova sopra la cartella %SystemRoot%\system32. In questo modo, quando digiti ssh dalla riga di comando, Windows cercherà qui per primo.
  7. Apri una console di PowerShell ed esegui ssh -V. Dovresti vedere che la versione è 8.1.0.0-p.

Di seguito sono riassunti i passaggi.

Overriding the Default SSH Client

Dare priorità a una cartella rispetto a %SystemRoot%\system32 può rappresentare un rischio per la sicurezza. Se qualcuno ha accesso al tuo computer, potrebbe decidere di inserire un virus nella cartella OpenSSH-Win64 e nominarlo come un’utilità di Windows come cd.exe.

Dovresti limitare la cartella OpenSSH-Win64 in sola lettura per chiunque tranne che per gli amministratori.

  1. Fai clic con il pulsante destro del mouse sulla cartella OpenSSH-Win64 e seleziona Proprietà.
  2. Sotto la scheda Sicurezza, fai clic sul pulsante Avanzate.
  3. Fai clic su Disabilita ereditarietà per consentire le autorizzazioni personalizzate della cartella e impedire alle cartelle padre di sovrascrivere le autorizzazioni nella cartella OpenSSH-Win64.
  4. Scegli Aggiungi, trova il gruppo Amministratori e concedi loro i diritti completi.
  5. Fai clic su Aggiungi, trova il gruppo Tutti e concedi loro autorizzazioni di sola lettura.
  6. Seleziona la casella Sostituisci tutte le autorizzazioni degli oggetti figlio per propagare queste impostazioni a tutti i file nella cartella OpenSSH-Win64; fai clic su Applica.
  7. Ora testa queste autorizzazioni creando un nuovo file nella cartella OpenSSH-Win64. Windows dovrebbe richiedere un prompt dell’amministratore.

Puoi vedere tutti questi passaggi rappresentati visivamente qui sopra.

restrict the OpenSSH-Win64 folder

Gestire le sessioni disconnesse con Tmux.

Ah, che seccatura! Sei a metà strada nell’esecuzione di un comando a lunga durata tramite SSH e la tua connessione Internet cade. Ora non hai idea dello stato del server Linux! Ha completato quel comando? Come lo riporti indietro?

Le sessioni disconnesse sono un problema legittimo con SSH e fortunatamente hanno una soluzione semplice. Hai bisogno di un terminale multiplexer (tmux).

Tmux sta sia per l’abbreviazione di terminale multiplexer, sia per il nome del programma stesso

Tmux è un gestore di sessioni per SSH. “Mantiene” una sessione se ti disconnetti e la mantiene in esecuzione in background. Puoi riconnetterti a quella sessione in seguito o anche creare più sessioni e passare da una all’altra.

Per gestire le sessioni disconnesse con tmux:

  1. Nel terminale di Linux, scarica e installa l’utility tmux eseguendo il comando sudo zypper install -y tmux come mostrato di seguito:

Puoi utilizzare anche YaST per scaricare l’utility tmux.

Tmux Utility

Molte distribuzioni Linux hanno un diverso gestore di pacchetti da riga di comando. OpenSUSE utilizza zypper. Arch utilizza pacman. Ubuntu utilizza apt. Red Hat utilizza dnf e yum. Fortunatamente, la sintassi di questi gestori di pacchetti è abbastanza simile in generale.

2. Sul tuo computer Windows, apri una console PowerShell e accedi al tuo server Linux tramite SSH. Il tutorial utilizzerà un nome utente homelab e un indirizzo IP del server Linux di 192.168.134.169.

ssh <username>@<ip address>

3. Apri tmux eseguendo il comando tmux una volta connesso. Dovresti visualizzare una barra verde in basso

4. Esegui un comando che produce del testo. Non importa quale sia. In questo tutorial viene utilizzato neofetch. Puoi anche eseguire il comando ls.

5. Disconnetti la sessione chiudendo PowerShell. Questa azione simula una disconnessione improvvisa.

6. Riconnetti nuovamente al tuo server Linux utilizzando SSH.

7. Ora riattacca alla vecchia sessione eseguendo il comando tmux a. Dovresti ancora vedere l’output del precedente comando ls. Evviva, nessuna perdita di dati dalla disconnessione!

Puoi vedere tutti questi passaggi rappresentati visivamente di seguito.

Managing Disconnected Sessions with a Tmux

Se provi ad eseguire l’utilità Midnight Commander all’interno di tmux, potresti notare che non hai il supporto del mouse. Puoi risolvere il problema eseguendo mc -x al suo posto.

Abilitare tmux all’avvio

Per impostazione predefinita, tmux non sarà disponibile in tutte le sessioni SSH. Puoi modificarlo forzando tmux ad attaccarsi alla tua sessione SSH ogni volta che effettui l’accesso.

Supponendo che tu sia connesso via SSH al tuo server Linux:

  1. Apri l’utilità midnight commander utilizzando mc.

2. Evidenzia il file .bashrc e premi modifica.

Il file .bashrc è uno script di shell (batch) che viene eseguito ogni volta che accedi tramite la riga di comando

3. Aggiungi il seguente codice di script di shell alla fine del file di testo.

if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi

4. Fai clic su esci e salva quando richiesto.

5. Verifica l’auto-attacco di tmux disconnettendoti dalla sessione SSH e ricollegandoti. Dovresti ottenere automaticamente una barra verde in basso, che indica che sei connesso a una sessione tmux!

Questo è solo l’inizio di ciò che tmux può fare, è un programma multitasking molto potente. Se chiedi a un amministratore di sistema Linux qual è il suo comando più utilizzato, probabilmente ti risponderà tmux.

Conclusione

Questo conclude l’ultimo post nella serie di articoli del blog A Windows Guy in a Linux World. Resta sintonizzato sul blog ATA per il prossimo articolo in arrivo!

Source:
https://adamtheautomator.com/ssh-command-in-linux/