GNU/Linux >> Linux Esercitazione >  >> Linux

Stabilire una connessione SSH tra Windows e Linux

Il Secure Shell Protocol (SSH) è il metodo più comune per controllare le macchine remote tramite la riga di comando nel mondo Linux. SSH è un vero originale Linux e sta guadagnando popolarità anche nel mondo Windows. Esiste persino la documentazione ufficiale di Windows per SSH, che copre il controllo di macchine Windows utilizzando OpenSSH.

Questo articolo descrive come stabilire una connessione SSH da una macchina Windows a un sistema Fedora 33 Linux utilizzando il popolare strumento open source PuTTY.

Modalità di utilizzo di SSH

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

SSH utilizza un'architettura client-server, in cui un client SSH stabilisce una connessione a un server SSH. Il server SSH viene solitamente eseguito come un demone di sistema, quindi viene spesso chiamato SSHD. Difficilmente puoi trovare una distribuzione Linux che non venga fornita con il demone SSH. In Fedora 33, il demone SSH è installato ma non attivato.

Puoi utilizzare SSH per controllare quasi tutte le macchine Linux, indipendentemente dal fatto che siano in esecuzione come macchina virtuale o come dispositivo fisico sulla rete. Un caso d'uso comune è la configurazione headless di dispositivi embedded, incluso il Raspberry Pi. SSH può essere utilizzato anche per eseguire il tunneling di altri servizi di rete. Poiché il traffico SSH è crittografato, puoi utilizzare SSH come livello di trasporto per qualsiasi protocollo che non fornisce la crittografia per impostazione predefinita.

In questo articolo spiegherò quattro modi per utilizzare SSH:1. come configurare il demone SSH sul lato Linux, 2. come impostare una connessione alla console remota, 3. come copiare file sulla rete e 4 .come eseguire il tunneling di un determinato protocollo su SSH.

1. Configura SSHD

Il sistema Linux (Fedora 33 nel mio caso) funge da server SSH che consente al client SSH PuTTY di connettersi. Innanzitutto, controlla la configurazione SSH del demone. Il file di configurazione si trova in /etc/ssh/sshd_config e contiene molti interruttori che possono essere attivati ​​commentando le righe correlate:

#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

La configurazione predefinita, in cui nessuna riga è decommentata, dovrebbe funzionare per questo esempio. Controlla se il demone SSH è già in esecuzione digitando systemctl status sshd :

$ systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 577 (sshd)
    Tasks: 1 (limit: 26213)
   CGroup: /system.slice/sshd.service
           └─577 /usr/sbin/sshd -D [email protected],chacha20-[...]

Se è inattivo, avvialo con systemctl start sshd comando.

2. Configura una console remota

Su Windows, scarica il programma di installazione di PuTTY, quindi installalo e aprilo. Dovresti vedere una finestra come questa:

Nel Nome host (o indirizzo IP) campo di immissione, inserisci le informazioni di connessione per il tuo sistema Linux. In questo esempio, ho configurato una macchina virtuale Fedora 33 con un adattatore di rete con bridge che posso utilizzare per contattare il sistema all'indirizzo IP 192.168.1.60 . Fai clic su Apri e dovrebbe aprirsi una finestra come questa:

Questo è un meccanismo di sicurezza SSH per prevenire un attacco man-in-the-middle. L'impronta nel messaggio deve corrispondere alla chiave sul sistema Linux in /etc/ssh/ssh_host_ed25519_key.pub. . PuTTY stampa la chiave come un hash MD5. Per verificarne l'autenticità, passa al sistema Linux, apri una shell dei comandi e inserisci:

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub

L'output dovrebbe corrispondere all'impronta digitale mostrata da PuTTY:

$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519)

Conferma l'avviso di sicurezza PuTTY facendo clic su . L'impronta digitale del sistema host è ora nell'elenco di fiducia di PuTTY, che si trova nel registro di Windows in:

HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys

Inserisci le tue credenziali di accesso corrette e dovresti essere sulla console nella tua home directory:

3. Copia i file sulla rete

Oltre alla console remota, puoi utilizzare PuTTY per trasferire file tramite SSH. Cerca nella cartella di installazione in C:\\Program Files (x86)\\PuTTY e trova pscp.exe . Puoi usarlo per copiare file da e verso un sistema Linux.

Apri un prompt dei comandi con Windows + R e inserisci cmd . Copia il file MyFile.txt dalla home directory dell'utente Linux alla home directory di Windows immettendo:

C:\"Program Files (x86)"\PuTTY\pscp.exe [email protected]:/home/stephan/MyFile.txt .

Per copiare un file dalla home directory di Windows alla home directory dell'utente Linux, immettere:

C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt [email protected]:/home/stephan/

Come avrai già capito, la struttura generale del comando di copia è:

pscp.exe <source> <target>

4. Tunnel un protocollo

Immagina di avere una macchina Linux che esegue un servizio basato su HTTP per qualche applicazione arbitraria. Vuoi accedere a questo servizio HTTP dal tuo computer Windows su Internet. Ovviamente, non puoi esporre al pubblico la relativa porta TCP perché:

  1. Il server esegue HTTP, non HTTPS
  2. Non esiste alcuna gestione degli utenti né accesso

A prima vista, sembra un compito impossibile configurare questa architettura senza produrre un orribile difetto di sicurezza. Ma SSH rende relativamente facile impostare una soluzione sicura per questo scenario.

Dimostrerò questa procedura con il mio progetto software Pythonic. In esecuzione come contenitore, Pythonic espone due porte TCP:la porta TCP 7000 (editor principale) e la porta TCP 8000 (l'editor del codice sorgente del server di codice).

Per installare Pythonic su una macchina Linux, esegui:

podman pull pythonicautomation/pythonic
podman run -d -p 7000:7000 -p 8000:8000 pythonic

Passa al tuo computer Windows, apri PuTTY e vai a Connessione -> SSH -> Tunnel . Aggiungi le due porte TCP che desideri inoltrare:

  • Fonte:7000 / Destinazione:localhost:7000
  • Fonte:8000 / Destinazione:localhost:8000

Quindi torna alla Sessione e stabilisci una connessione SSH come hai fatto prima. Apri un browser e vai a http://localhost:7000; dovresti vedere una schermata come questa:

Hai configurato correttamente il port forwarding!

Avviso :se esponi al pubblico la porta TCP 22, non utilizzare credenziali di accesso facili da indovinare. Riceverai tentativi di accesso da tutto il mondo che tentano di accedere alla tua macchina Linux con credenziali standard comuni. Consenti invece solo ai client noti di accedere. Questa restrizione di accesso può essere ottenuta utilizzando la crittografia a chiave pubblica, che utilizza una coppia di chiavi in ​​cui la chiave pubblica è archiviata sul computer host SSH e la chiave privata rimane sul client.

Debug

Se hai difficoltà a connetterti alla tua macchina Linux, puoi seguire i processi nel tuo demone SSH con:

journalctl -f -u sshd

Ecco come appare un normale processo di accesso con LogLevel DEBUG :

Ulteriori informazioni

Questo articolo ha appena scalfito la superficie sui modi di utilizzare SSH. Se stai cercando informazioni su un caso d'uso specifico, probabilmente puoi trovarlo tra le tonnellate di tutorial SSH su Internet. Uso molto PuTTY al lavoro perché la sua facile configurazione e la buona interoperabilità tra i sistemi operativi lo rendono uno strumento coltellino svizzero per soluzioni di connettività.


Linux
  1. Come configurare il server SAMBA e trasferire file tra Linux e Windows

  2. Interoperabilità Windows e Linux:uno sguardo a Samba

  3. Differenza tra GNUWin32 e cygwin

  4. Come impostare una connessione Wi-Fi Direct tra Android e Linux

  5. Differenza tra i comandi 'ifconfig' e 'ip'

Condividi facilmente i file tra Linux, Windows e Mac utilizzando NitroShare

Come condividere file di giochi Steam tra Linux e Windows

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

Un ragazzo Windows in un mondo Linux:VS Code e SSH remoto

Condivisione di file tra Linux Mint e Windows 10

differenza tra netstat e ss in linux?