Come configurare smartphone e PC. Portale informativo

Connessione tramite terminale ssh linux. Cosa può essere modificato nelle impostazioni SSH

Ci sono molte opportunità per organizzare l'accesso remoto al tuo computer tramite una connessione Internet. Alcuni di essi sono molto complessi e vengono utilizzati solo da specialisti in un ambiente professionale, mentre altri sono molto semplici e possono essere gestiti anche da utenti inesperti. Abbiamo già scritto di diversi metodi, in particolare del programma TeamViewer e del protocollo VNC.

Sfumature di lavorare con il protocollo SSH in Ubuntu.

In questo articolo parleremo del protocollo di connessione sicura SSH, che recentemente è diventato quasi lo standard tra gli utenti Linux. È molto sicuro perché supporta la crittografia ed è molto facile da configurare. Vedremo le caratteristiche del protocollo SSH e impareremo anche come configurare il server e il client. Tutto ciò che ti sarà richiesto è un computer con un sistema operativo Ubuntu installato e una connessione Internet.

Il protocollo Secure Shell, noto anche come SSH, è un protocollo speciale per l'accesso remoto sicuro a un computer tramite una connessione di rete. Il protocollo ha molte funzionalità, tra cui l'impostazione di una connessione sicura, l'esecuzione di una riga di comando del terminale sul computer a cui ci si connette in remoto, l'avvio di applicazioni GUI, il trasferimento di file e l'implementazione di reti private.

Esistono molte utilità responsabili della gestione del protocollo. Sul sistema operativo Ubuntu, il più famoso è Open SSH. È un prodotto completamente gratuito con una licenza aperta e un set completo di funzioni essenziali. Il client per la gestione della connessione SSH è già incluso nella distribuzione Ubuntu, è sufficiente installare e configurare i componenti del server. La gestione avviene tramite comandi nel terminale.

Installazione di SSH su Ubuntu

Poiché il protocollo client SSH è lo standard accettato per la sua gestione, è possibile installarlo utilizzando un breve comando nel terminale Ubuntu. per fare ciò, avvia il terminale stesso premendo la combinazione di tasti sulla tastiera Ctrl + Alt + T, quindi usa il comando sudo apt-get install ssh. Dopo aver preparato il download, l'utility ti chiederà se vuoi continuare. cambia la tastiera in russo e premi D. Sulla tua macchina Ubuntu, l'installazione di ssh sarà completa in un paio di secondi. Se desideri abilitare l'avvio automatico all'avvio del sistema, usa il comando sudo systemctl enable sshd. di conseguenza, se in seguito si desidera disabilitare l'avvio automatico del servizio, sarà necessario il comando sudo systemctl disable sshd.

Ora puoi controllare come funziona tutto. Basta provare a connettersi al server SSH locale: ssh localhost. L'utility chiederà la password del superutente e offrirà anche di aggiungere l'indirizzo inserito all'elenco di quelli consentiti. Se tutto funziona come previsto, vedrai un piccolo messaggio che termina con una notifica sulla data dell'ultima connessione all'indirizzo.

Ora puoi connetterti a qualsiasi computer della rete se conosci il suo indirizzo IP e nome utente. Per fare ciò, nel terminale, è necessario inserire un comando nel seguente formato:

ssh nome utente @ indirizzo_ip

Ad esempio, se desideri connetterti al computer di Vasya Pupkin con l'indirizzo 132.14.25.10, il comando sarà simile a questo:

ssh [e-mail protetta]

Configurare SSH su Ubuntu

Per funzionare correttamente e in sicurezza con un server SSH, è necessario configurarlo in un certo modo. Per fare ciò, è necessario modificare il file dei parametri sshd_config situato nella directory / etc / ssh. È interessante notare che non può essere modificato semplicemente aprendolo tramite il file manager in un normale editor di testo. Il sistema ti avviserà in caso di diritti insufficienti e semplicemente non sarai in grado di salvare le modifiche. Pertanto, hai ancora bisogno di un terminale e della conoscenza di diversi comandi, di cui parleremo ora. Esaminiamo i passaggi necessari per configurare un server ssh su un sistema operativo Ubuntu.


Cosa può essere modificato nelle impostazioni SSH


Comandi minimi richiesti


Questa sarà una serie di articoli sull'installazione e la configurazione di un semplice server per un team di sviluppo web. Il server avrà Git, FTP, SSH, Apache 2, PHP 5.4, MySQL, cron, sottodomini, memcached, Composer. Gli articoli si applicano a Ubuntu 14.04. Credo che il server verrà utilizzato per scopi aziendali e non per progetti finali. Sebbene, se è consentito che il progetto sia sul server di sviluppo, allora perché no ...

Faccio subito la prenotazione. Non ho abbastanza esperienza nell'amministrazione dei server e non lo faccio professionalmente, quindi non garantisco la correttezza al 100% delle azioni descritte di seguito. L'istruzione è un promemoria per distribuire rapidamente un server per le mie esigenze. Se vedi un errore ovvio o "questo non dovrebbe essere fatto in produzione" (anche se ho stabilito che i progetti non devono essere conservati sul server di sviluppo), ti sarò grato se descrivi la soluzione corretta nei commenti.

Si presume che Ubuntu 14.04 sia già installato sul server (su un VPS/VDS, ad esempio) e si abbia accesso alla console di root.

  1. Utenti e SSH

Iniziamo.

Utenti del server

Innanzitutto, un breve elenco di comandi per lavorare con gli utenti.

Aggiungi nuovo utente

Aggiungi utente Nome utente

Elimina utente

userdel -r Nome utente

Cambiare la password

passwd Nome utente

Accedi come utente

su Nome utente

Torna alla radice:

Cambia directory home

usermod -d directory_richiesto Nome utente

Imposta proprietario e gruppo su una directory (e tutto il suo contenuto)

chown -R Nome utente:directory nome_gruppo

Decidi gli utenti

  • mygit - per dimostrare come lavorare con i repository Git;
  • myftp - per dimostrare di lavorare con FTP;
  • myssh - per dimostrare come lavorare con SSH.

Se è chiaro con myssh, allora, a prima vista, l'accesso SSH a mygit e ancor di più a myftp non è necessario. Puoi negare l'accesso SSH a utenti specifici (o consentire solo a determinati) in /etc/ssh/sshd_config ma mygit usa SSH per autorizzare Git. Pertanto, considereremo ulteriormente un altro metodo che non richiede il riavvio di SSH e, da un lato, non consente l'accesso alla console tramite SSH mygit, ma dall'altro consente di utilizzare SSH per lavorare con Git.

SSH

Formazione

L'installazione di client e server OpenSSH viene eseguita con il comando:

Apt-get install ssh

Configurazione

Usando l'editor mcedit (o nano, nel caso di mcedit, devi prima installare mc), apri il file /etc/ssh/sshd_config:

Mcedit / etc / ssh / sshd_config

Assicurati che il seguente parametro abbia il valore specificato:

PermessoVuotoPassword no

Qui puoi specificare una porta diversa per SSH, ma in questo caso, alla successiva connessione da parte dei client, il comando di connessione dovrebbe essere simile a questo:

Ssh -p PORTA login @ server

Puoi riavviare il server SSH con il comando:

Riavvio del servizio ssh

Clienti

Gli utenti che si collegheranno al server tramite SSH o Git (tramite SSH) devono disporre di un client SSH installato e delle chiavi generate. Puoi controllare se la chiave è stata generata dalla presenza del file ~ / .ssh / id_rsa.pub... In caso contrario, è necessario generarlo, ad esempio, utilizzando il seguente comando:

Ssh-keygen -t rsa -C " [e-mail protetta] server"

La password può essere omessa.

Quindi aggiungi la chiave a ssh-agent:

Ssh-add ~ / .ssh / id_rsa

Autorizzazione chiave

In modo che ogni volta che ti connetti a SSH e Git (funzionerà anche per noi tramite SSH) non inserisci una password, devi creare un file ~ / .ssh / chiavi_autorizzate quegli utenti sul server a cui verranno effettuati i collegamenti.

Nota: per creare la directory .ssh (se non ce n'è nessuna) e il file authorized_keys, devi essere loggato come lo stesso utente nella cui home directory vengono eseguite le azioni. O dopo aver impostato i diritti appropriati, il gruppo e il proprietario. Questo dovrebbe essere tenuto presente anche quando si modifica il file authorized_keys in futuro.

In questo file, su ogni riga dovrebbe esserci il contenuto della chiave pubblica ( ~ / .ssh / id_rsa.pub) dei client di questo utente. Dovrebbe esserci una riga vuota alla fine del file authorized_keys.

In altre parole, se abbiamo server_user_1, a cui accederanno tramite ssh i client client_user_1 e client_user_2, allora nella home directory dell'utente server_user_1, il file ~/.ssh/authorized_keys dovrebbe avere tre righe:

Contenuto id_rsa.pub client_user_1 contenuto id_rsa.pub client_user_2 (stringa vuota)

Vi presentiamo alla vostra attenzione un nuovo corso del team Il codeby- "Penetration Test di applicazioni Web da zero". Teoria generale, preparazione dell'ambiente di lavoro, fuzzing passivo e impronte digitali, fuzzing attivo, vulnerabilità, post-sfruttamento, strumenti, ingegneria sociale e altro ancora.


Cos'è SSH e a cosa serve

Secure Shell (SSH) è un protocollo di rete che fornisce funzionalità di shell a una macchina remota su un canale protetto. SSH offre vari miglioramenti alla sicurezza, tra cui l'autenticazione dell'utente/host, la crittografia dei dati e l'integrità dei dati, il che rende impossibili attacchi popolari come intercettazioni, spoofing DNS/IP, falsificazione dei dati e dirottamento della connessione, ecc. Per gli utenti ftp, telnet o rlogin che utilizzano un protocollo di testo in chiaro, si consiglia vivamente di passare a SSH.

OpenSSH è un'implementazione open source del protocollo SSH che crittografa una connessione di rete utilizzando una suite di programmi. Se desideri avere SSH su Linux, puoi installare OpenSSH, che consiste in un server OpenSSH e pacchetti client.

I pacchetti server/client OpenSSH vengono forniti con le seguenti utilità:

  • Server OpenSSH: sshd (demone SSH)
  • Client OpenSSH: scp (copia remota sicura), sftp (trasferimento file sicuro), slogin / ssh (accesso remoto sicuro), ssh-add (aggiunta di chiavi private), ssh-agent (agente di autenticazione), ssh-keygen (gestione delle chiavi di autenticazione ).

Installazione di server e client OpenSSH su Linux

Se desideri installare il server/client OpenSSH e configurare il server OpenSSH per l'avvio automatico, segui le istruzioni riportate di seguito, che differiscono a seconda della distribuzione.

Debian, Ubuntu o Linux Mint

$ sudo apt-get install openssh-server openssh-client

Sui sistemi basati su Debian, subito dopo l'installazione, OpenSSH si avvierà automaticamente all'avvio. Se per qualche motivo il server OpenSSH non si avvia automaticamente all'avvio del sistema, è possibile eseguire il comando seguente per aggiungere senza ambiguità ssh all'avvio all'avvio del sistema.

$ sudo update-rc.d ssh defaults

Fedora o CentOS / RHEL 7

$ sudo yum -y install openssh-server openssh-clients $ sudo systemctl start sshd service $ sudo systemctl enable sshd.service

CentOS / RHEL 6

$ sudo yum -y install openssh-server openssh-clients $ sudo service sshd start $ sudo chkconfig sshd on

Arch Linux

$ sudo pacman -Sy openssh $ sudo systemctl start sshd service $ sudo systemctl enable sshd.service

Configurazione del server OpenSSH

Se vuoi configurare il server OpenSSH, puoi modificare il file di configurazione a livello di sistema che si trova in /etc/ssh/sshd_config.

Ci sono un paio di opzioni OpenSSH che potrebbero interessarti:

Per impostazione predefinita, sshd ascolta sulla porta 22 e ascolta le connessioni ssh in entrata. Modificando la porta predefinita per ssh, puoi prevenire vari attacchi di hacker automatizzati.

ListenAddress 192.168.1.1

Se la tua macchina ha più di un'interfaccia di rete fisica, potresti voler controllare quale è correlata a sshd, puoi usare l'opzione ListenAddress per farlo. Questa opzione aiuta a migliorare la sicurezza limitando SSH in entrata solo attraverso un'interfaccia specifica.

HostKey / etc / ssh / ssh_host_key

L'opzione HostKey determina dove si trova la chiave host personale.

PermitRootLogin no

Opzione PermitRootLogin - Se root può accedere tramite ssh.

Consenti Utenti alice bob

Utilizzando l'opzione AllowUsers è possibile disabilitare selettivamente il servizio ssh per utenti Linux specifici. È possibile specificare più utenti, separati da spazi.

Dopo aver modificato /etc/ssh/sshd_config, assicurati di riavviare il servizio ssh.

Per riavviare OpenSSH su Debian, Ubuntu o Linux Mint:

$ sudo /etc/init.d/ssh restart

Per riavviare OpenSSH su Fedora, CentOS / RHEL 7 o Arch Linux:

$ sudo systemctl riavvia sshd.service

Per riavviare OpenSSH su CentOS/RHEL 6:

$ sudo service sshd riavvio

Come connettersi a SSH

Connessione a SSH da Linux

Gli utenti Linux non devono installare software aggiuntivo.

Connettiti a SSH da Windows

Per Windows, molte persone consigliano e utilizzano con successo PuTTY. Non ho nulla contro questo programma, ma preferisco e raccomando personalmente Cygwin.

Cygwin non è solo un client SSH. È una potente combinazione che supporta molti comandi di Linux. Ad esempio, è molto facile creare certificati SSL in Cygwin (proprio come in Linux). In Windows, devi ballare con un tamburello per creare certificati autofirmati. Cygwin è molto comodo da usare cURL (non è necessario installare nulla separatamente), ecc. Coloro che non hanno la riga di comando e i programmi Linux su Windows troveranno uno sbocco in Cygwin.

L'installazione di Cygwin è semplice. Vai al sito Web ufficiale e scarica la versione a 32 o 64 bit.

Viene scaricato un piccolo file: questo è il programma di installazione. Il programma di installazione è grafico. Sebbene contenga un gran numero di opzioni, sono tutte abbastanza semplici e molte sono familiari da altri programmi di installazione grafici. Se qualcosa non è chiaro, fai clic su "Avanti". Forse solo la seguente finestra può creare confusione:

Ecco tutti gli articoli disponibili per l'installazione. Non abbiamo bisogno di capirli adesso. Poiché quelli più richiesti sono già contrassegnati per l'installazione. E se manca qualcosa in futuro, puoi facilmente installare quello necessario.

Connessione SSH (comune per Linux e Windows)

Gli utenti Linux aprono una console, gli utenti Windows digitano Cygwin.

SSH ha bisogno delle seguenti informazioni per connettersi:

  • IP o nome host
  • numero di porta
  • Nome utente
  • password utente

SSH può assumere due di questi parametri: nome utente e numero di porta. Se non viene specificata alcuna porta, viene utilizzata la porta predefinita. Se non viene specificato alcun utente, viene utilizzato lo stesso nome del sistema da cui viene effettuata la connessione. Ad esempio, l'indirizzo host per la connessione è 192.168.1.36. Se scrivo

Ssh 192.168.1.36

vedo quanto segue

[e-mail protetta]~ $ ssh 192.168.1.36 Impossibile stabilire l'autenticità dell'host "192.168.1.36 (192.168.1.36)". L'impronta digitale della chiave ECDSA è SHA256: sIxZeSuiivoEQ00RXAQHxylxuEA8SC5r / YPhL8wfp8s. Sei sicuro di voler continuare la connessione?

Dal momento che mi sto connettendo all'host per la prima volta, è un host sconosciuto. Mi chiedono se voglio continuare. sto scrivendo :

Avvertimento: aggiunto in modo permanente "192.168.1.36" (ECDSA) all'elenco degli host conosciuti. [e-mail protetta]"s password:

Ok, l'host 192.168.1.36 è stato aggiunto all'elenco degli host familiari. Mi viene richiesta una password per l'utente Alex. Poiché non esiste un tale utente sul server con SSH, ma clicco Ctrl + C(da rompere) e inserire il comando insieme al nome utente del sistema remoto. L'utente viene inserito prima dell'indirizzo della macchina remota ed è separato dall'indirizzo dal simbolo @. Il simbolo @ in inglese viene letto come at e può essere tradotto come "in". Quelli. registrazione [e-mail protetta] può essere interpretato come "utente mial sulla macchina 192.168.1.36".

Ssh [e-mail protetta]

Invito [e-mail protetta] ha dato il via a un invito [e-mail protetta] Ciò significa che siamo già su una macchina remota, cioè abbiamo già una connessione. Se è necessario specificare una porta (se è diversa da quella standard), è necessario specificare la porta dopo l'opzione -p. Ad esempio così:

Ssh [e-mail protetta]-p 10456

Dopo la connessione, siamo accolti con qualcosa come il seguente saluto:

Linux mint 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 I programmi inclusi con il sistema Debian GNU/Linux sono software libero; i termini esatti di distribuzione per ogni programma sono descritti nei singoli file in /usr/share/doc/*/copyright. Debian GNU / Linux viene fornito con ASSOLUTAMENTE NESSUNA GARANZIA, nella misura consentita dalla legge applicabile. Ultimo accesso: mar Jun 16 15:32:25 2015 da 192.168.1.35

Implica che la macchina remota sia Linux Mint, con kernel 3.16, versione a 64 bit. Importanti anche le informazioni sull'ora dell'ultimo login e l'indirizzo IP da cui ha avuto origine la connessione. Se l'ora e l'IP non ti sono familiari e sei l'unico utente, il tuo sistema è compromesso e devi intraprendere l'azione appropriata.

Digitiamo alcuni comandi per assicurarci dove siamo e chi siamo: pwd, uname -a eccetera.:

Per terminare la sessione (disconnettersi), digitare

Oppure premere Ctrl + D.

Accedi a SSH senza inserire una password

Innanzitutto, è solo più conveniente. In secondo luogo, è più sicuro.

Per prima cosa, dobbiamo creare le chiavi rsa. Se sei un utente Linux, allora stai bene. Se sei un utente Windows, ma non hai ascoltato il mio consiglio e hai scelto PuTTY, allora hai un problema e pensa tu stesso come risolverlo. Se hai Cygwin, allora va tutto bene.

Se sei riuscito ad accedere al sistema remoto, disconnettiti. Quindi digita

Ssh-keygen -t rsa

Ci viene chiesto il nome del file, non è necessario inserire nulla, verrà utilizzato il nome predefinito. Viene richiesta anche la password. Non inserisco una password.

Ora sulla macchina remota, dobbiamo creare la directory .ssh. Di seguito verrà descritta l'esecuzione del comando su una macchina remota. Per ora, copia semplicemente il comando, ricordandoti di cambiare l'indirizzo IP e il nome utente con i tuoi:

Ssh [e-mail protetta] mkdir .ssh

Ora dobbiamo copiare il contenuto del file id_rsa.pub sulla macchina remota. È molto facile farlo (non dimenticare di cambiare i dati con i tuoi):

Gatto .ssh / id_rsa.pub | ssh [e-mail protetta]"gatto >> .ssh / chiavi_autorizzate"

Ora ci limitiamo ad accedere e non ci chiediamo più la password. E ora sarà sempre così.

Esecuzione di comandi su un server remoto senza creare una sessione di shell

Oltre ad aprire una sessione di shell su un sistema remoto, ssh consente anche l'esecuzione di singoli comandi sul sistema remoto. Ad esempio, per eseguire il comando dell'albero su un host remoto denominato remote-sys e visualizzare i risultati sul sistema locale, procedere come segue:

ssh albero di sistema remoto

Il mio esempio di vita reale:

Ssh [e-mail protetta] albero

Usando questa tecnica, puoi fare cose interessanti, come eseguire il comando ls sul sistema remoto e reindirizzare l'output su un file sul sistema locale:

ssh remote-sys "ls *"> dirlist.txt

Un vero esempio:

Ssh [e-mail protetta]"ls *"> dirlist.txt cat dirlist.txt

Nota le singole virgolette nel comando precedente. Questo perché non vogliamo che l'espansione del percorso venga eseguita sulla macchina locale; poiché abbiamo bisogno di questa esecuzione su un sistema remoto. Inoltre, se vogliamo reindirizzare l'output standard a un file sulla macchina remota, possiamo inserire l'istruzione di reindirizzamento e il nome del file tra virgolette singole:

ssh remote-sys "ls *> dirlist.txt"

Invio di stdout dalla macchina locale a ssh remoto

Una versione altrettanto interessante dell'esecuzione dei comandi è mostrata poco sopra:

Gatto .ssh / id_rsa.pub | ssh [e-mail protetta]"gatto >> .ssh / chiavi_autorizzate"

  • Il comando cat legge e visualizza riga per riga il contenuto del file .ssh / id_rsa.pub sulla macchina locale.
  • | (pipe) passa ciò che dovrebbe apparire su stdout a un altro comando.
  • Invece di un comando che avrebbe dovuto elaborare le righe passate, viene stabilita una connessione al sistema remoto (ssh [e-mail protetta]).
  • Il sistema remoto riceve le righe per le quali viene fornito il comando cat >> .ssh / authorized_keys. Quelli. i contenuti dello standard output vengono scritti riga per riga nel file .ssh / authorized_keys sulla macchina remota.

Apertura di un programma di grafica situato su un computer remoto

Il prossimo trucco richiede due computer Linux. Sfortunatamente, nemmeno Cygwin può gestire questo trucco. Inoltre, entrambi i Linux devono essere dotati di un'interfaccia utente grafica.

Tunneling con SSH

Tra l'altro, ciò che accade quando viene effettuata una connessione a un host remoto tramite SSH è la creazione di un tunnel crittografato che si forma tra il sistema locale e quello remoto. In genere, questo tunnel viene utilizzato per garantire che i comandi digitati sulla macchina locale vengano trasmessi in modo sicuro alla macchina remota e che anche il risultato venga restituito in modo sicuro.

Oltre a questa funzione di base, SSH consente di instradare la maggior parte dei tipi di traffico su un tunnel crittografato, creando una sorta di VPN (rete privata virtuale) tra il sistema locale e quello remoto.

Forse la più comunemente usata di queste funzionalità è la capacità di trasmettere il traffico del sistema X Window. Su un sistema che esegue un server X (queste sono macchine che hanno un'interfaccia utente grafica), è possibile eseguire un programma client X (applicazione grafica) su un sistema remoto e vedere i risultati del suo lavoro sul sistema locale. È facile da fare. Ad esempio, voglio connettermi all'host remoto remote-sys e su questo voglio eseguire il programma xload. Allo stesso tempo, potrò vedere l'output grafico di questo programma sul computer locale. Questo è fatto in questo modo:

ssh -X remote-sys

Un vero esempio:

Ssh -X [e-mail protetta] gedit

Quelli. SSH viene avviato con l'opzione -X. E poi il programma si avvia. Dai un'occhiata allo screenshot.

Sono su Kali Linux. Sto accedendo con successo al computer remoto tramite SSH. Successivamente, ho eseguito il programma gedit. Questo programma potrebbe non essere nemmeno disponibile su Kali Linux, ma lo è sicuramente su Linux Mint, a cui mi sono connesso. Posso vedere il risultato di questo programma sullo schermo come se il programma fosse in esecuzione localmente. Ma, ancora una volta, voglio che tu capisca questo, non c'è un programma gedit in esecuzione sul computer locale. Se voglio salvare il risultato del lavoro di gedit (o qualsiasi altro programma aperto in questo modo), si scopre che funziona nell'ambiente del computer remoto, vede il suo file system, ecc. Questo è conveniente quando si desidera configurare il computer remoto utilizzando un'interfaccia grafica ...

Imparerai come trasferire un'immagine dall'intero desktop nello stesso articolo più avanti, nella sezione "Come configurare VNC su SSH".

Su alcuni sistemi, questo "focus" richiede l'uso dell'opzione -Y invece dell'opzione -X.

Copia da/a computer remoto (scp e sftp)

scp

Il pacchetto OpenSSH include anche due programmi che utilizzano un tunnel SSH crittografato per copiare i file sulla rete. Il primo programma è scp("Copia sicura") - usato più spesso, così come un programma simile cp per la copia di file. La differenza più evidente è che l'origine del file può essere un host remoto seguito da due punti e dalla posizione del file. Ad esempio, se vogliamo copiare un documento chiamato document.txt dalla nostra directory home al sistema remote-sys nella directory di lavoro corrente sul nostro sistema locale, possiamo farlo:

Scp remote-sys: document.txt. document.txt 100% 177 0.2KB / s 00:00

Un vero esempio:

# cancella il file sulla macchina locale, se presente rm dirlist.txt # crea il file sulla macchina ssh remota [e-mail protetta]"ls *> dirlist.txt" # controlla la sua presenza ssh [e-mail protetta]"ls -l" # copialo sulla macchina locale scp [e-mail protetta]: dirlist.txt. # controlla il suo contenuto cat dirlist.txt

Per copiare un file da una macchina locale a una remota:

scp file-local remote-sys :.

Esempio reale

# crea un nuovo file touch nfile.txt # invia il file scp nfile.txt [e-mail protetta]:. nfile.txt 100% 0 0.0KB / s 00:00 # controlla se il file esiste sulla macchina ssh remota [e-mail protetta]"ls -l"

Nel comando di invio:

  • nfile.txt - nome file,
  • [e-mail protetta]- nome utente e host remoto,
  • ... (punto) significa che il file deve essere copiato nella directory di lavoro corrente sul server remoto, mentre il nome del file rimarrà lo stesso, ovvero nfile.txt

Nota:

Per copiare un file da B ad A dopo aver effettuato l'accesso a B:

scp / percorso / a / file [e-mail protetta]: / percorso / verso / destinazione

Copiare un file da B ad A dopo aver effettuato l'accesso ad A:

scp [e-mail protetta]: /percorso/a/file/percorso/a/destinazione

sftp

Il secondo programma per la copia di file su SSH è sftp... Come suggerisce il nome, è un sostituto sicuro per i programmi ftp. sftp funziona come il programma ftp originale. Tuttavia, invece di inviare in chiaro, utilizza un tunnel SSH crittografato. Un importante vantaggio di sftp su ftp è che non richiede un server FTP in esecuzione sull'host remoto. Richiede solo un server SSH. Ciò significa che qualsiasi macchina remota connessa tramite un client SSH può essere utilizzata anche come server simile a FTP. Ecco una sessione di esempio:

[e-mail protetta]~ $ sftp [e-mail protetta] 1.36 Collegato a 192.168.1.36. sftp> ls dirlist.txt newfile.txt nfile.txt temp Video Documenti Download Immagini Musica Public Desktop Modelli sftp> lls dirlist.txt nfile.txt sftp> ls temp temp / TakeMeHome sftp> cd temp / sftp> get TakeMeHome Fetching / mial / temp / Da TakeMeHome a TakeMeHome sftp> ciao

Il protocollo SFTP è supportato da molti gestori di file grafici presenti nelle distribuzioni Linux. Usando sia Nautilus (GNOME) che Konqueror (KDE), possiamo inserire URI (link) che iniziano con sftp: // nella barra di navigazione e lavorare con file che si trovano su un sistema remoto che esegue un server SSH.

Il Garante è un intermediario di fiducia tra i Partecipanti all'operazione.


Utilizzando il protocollo SSH sicuro, gli amministratori si connettono ai propri server per operazioni sicure. Consideriamo più in dettaglio le caratteristiche di questo protocollo:

Che cos'è il protocollo SSH

Protocollo SSH (dall'inglese. Guscio sicuro) è un protocollo di rete crittografico progettato per l'accesso remoto al sistema operativo e l'implementazione della gestione remota sicura all'interno di una rete non protetta (ad esempio, tramite Internet).

SSH fornisce un canale di comunicazione sicuro tra il client e il server, attraverso il quale è possibile trasferire dati (posta, video, file), lavorare nella riga di comando, eseguire programmi in remoto, inclusa la grafica. Il server SSH deve essere installato su un sistema operativo remoto. Il client SSH deve essere in esecuzione sulla macchina da cui verrà effettuata la connessione remota.

Le principali funzioni disponibili quando si utilizza il protocollo SSH:

  • Trasferimento di qualsiasi dato su una connessione SSH sicura, inclusa la compressione dei dati per la successiva crittografia.
  • X11 Forwarding è un meccanismo che consente di eseguire programmi server UNIX/Linux sotto forma di shell grafica, proprio come in Windows (usando il sistema X Window).
  • Il port forwarding è la trasmissione di traffico crittografato tra porte su macchine diverse.

La sicurezza della connessione SSH è garantita da:

  • crittografia dei dati utilizzando uno degli algoritmi esistenti
  • autenticazione server e client utilizzando uno dei numerosi metodi disponibili
  • la presenza di funzioni aggiuntive del protocollo volte a prevenire vari attacchi hacker

L'autenticazione del server protegge da:

  • Spoofing IP, in cui un host remoto invia pacchetti per conto di un altro host remoto
  • spoofing dei record DNS (DNS spoofing), quando un record su un server DNS viene falsificato, a seguito del quale viene stabilita una connessione con l'host specificato nel record falsificato invece di quello richiesto
  • intercettazione di password aperte e altri dati trasmessi in chiaro su una connessione stabilita

Oggi esistono due versioni del protocollo SSH (SSH-1 e SSH-2) e la seconda versione è migliorata ed ampliata rispetto alla prima. Ad esempio, la seconda versione è resistente agli attacchi MITM ("man in the middle", attacco intermediario). Esistono anche due edizioni di questo protocollo: versione aperta (gratuita) e commerciale (a pagamento). La versione gratuita - OpenSSH - è integrata in tutti i sistemi operativi UNIX come client SSH standard e utilità server SSH.

L'implementazione commerciale del protocollo SSH - SSH Communications Security - è stata sviluppata dall'organizzazione con lo stesso nome. Presenta piccole differenze rispetto alla versione gratuita, come la disponibilità di supporto tecnico commerciale, la disponibilità di strumenti di gestione web, ecc. Il set di base di comandi e funzionalità è quasi lo stesso per entrambi i prodotti.

Sono stati rilasciati vari client e shell SSH per Windows, i più comuni dei quali sono PuTTY e WinSCP gratuiti. Anche altri sistemi operativi hanno i propri client SSH.

Che cos'è il protocollo SFTP

Protocollo SFTP (dall'inglese. Protocollo di trasferimento file SSH) È un protocollo di rete a livello di applicazione progettato per trasferire file e altre azioni con essi tramite una connessione affidabile esistente. Il protocollo è stato sviluppato come estensione SSH-2 per le operazioni sui file su un canale sicuro, ma può funzionare con altri protocolli che forniscono una connessione sicura server-client. In altre parole, per un funzionamento affidabile tramite il protocollo SFTP, è necessario disporre di una connessione sicura stabilita (ad esempio SSH), che autentichi il client e il server e stabilisca il fatto della loro affidabilità, poiché il protocollo SFTP stesso non autentica e non fornisce sicurezza.

SFTP ha una serie di vantaggi rispetto ai suoi predecessori - FTP e SCP - come l'interruzione dei trasferimenti di file, l'eliminazione, la ripresa dei trasferimenti, l'associazione dei file trasferiti con attributi di base come data/ora e una maggiore indipendenza dalla piattaforma.

Il protocollo SFTP è implementato tramite il server SFTP e il client SFTP, che sono sottosistemi di OpenSSH.

A cosa servono i protocolli SSH e SFTP?

Molto spesso, SSH e SFTP vengono utilizzati per lavorare in remoto con il sistema operativo o trasferire un numero elevato di file.

Ad esempio, un client affitta un server o parte dello spazio del server. Diventa necessario trasferire lì i dati dei clienti esistenti, ad esempio un sito Web o file di posta. Il provider deve garantire l'affidabilità e la velocità dello scambio di dati con il proprio server, soprattutto quando si tratta di grandi quantità di informazioni e della sua elevata riservatezza. In questo caso, un server SSH (con protocollo SFTP integrato) è installato sulla macchina remota (in questo caso, un server virtuale) e un client SSH è installato sul computer client. Viene creato un tunnel SSH e la comunicazione tra client e server remoto avviene tramite una connessione affidabile con tutti i vantaggi del protocollo sopra descritto.

SSH può essere utilizzato anche per lavorare in remoto su una connessione sicura con vari servizi del provider, come software, sistemi operativi, ecc.

Come funziona SSH

Il protocollo SSH esegue una serie di programmi utilizzati per eseguire varie azioni su un sistema operativo remoto. Ad esempio, il programma sshd fornisce funzionalità SSH lato server e deve essere in esecuzione su un server SSH. Il programma ssh viene eseguito su un client SSH e consente di connettersi a un host remoto, accedervi e lavorare con una macchina remota tramite una connessione SSH.

Esistono comandi speciali con una serie di opzioni diverse per avviare determinati programmi con protocollo SSH. Questi comandi possono variare a seconda del sistema operativo del client e della shell del client SSH in uso. I comandi vengono eseguiti dalla riga di comando per i sistemi simili a UNIX o tramite un'interfaccia grafica nelle shell SSH appropriate.

Come connettersi tramite SSH

Se il tuo computer esegue Windows e la macchina remota è un sistema simile a UNIX (ad esempio Linux), puoi utilizzare PuTTY per stabilire una connessione SSH. Questo programma gratuito per Windows è costituito da un file eseguibile e non richiede installazione.

Per stabilire una connessione utilizzando PuTTY, è necessario effettuare le seguenti operazioni.

Avvia PuTTY (putty.exe).


Per impostazione predefinita, non è necessario effettuare alcuna impostazione aggiuntiva, è possibile assicurarsi che la 22a porta e il tipo di connessione siano specificati come SSH. Nel campo Nome host (o indirizzo IP), inserisci il nome del computer remoto o il suo indirizzo IP e fai clic sul pulsante Apri.


Potrebbe apparire un avviso di sicurezza PuTTY, ma se sei sicuro che l'host sia affidabile, devi fare clic su Sì e continuare la connessione.


Nella riga di comando che appare, è necessario inserire il nome utente con il quale accedere al computer remoto.


Nella riga successiva, devi inserire la password per questo utente. Quando inserisci una password, non vengono visualizzati caratteri sulla riga di comando, quindi devi solo digitare la password e premere il tasto Invio. Se il nome utente e la password vengono inseriti in modo errato, verrà visualizzato l'errore "Accesso negato", se la connessione ha esito positivo viene fornita la riga di comando del computer remoto.


SSH (Secure Shell) è un protocollo di rete progettato per controllare in remoto un server e trasferire dati su connessioni TCP crittografate. La maggior parte dei siti di hosting, anche virtuali, oggi fornisce sia l'accesso FTP che SSH. A mio parere, questo è fantastico, SSH è molto più comodo e sicuro da usare.

Configurazione di SSH

La configurazione verrà eseguita per un server dedicato, VDS, VPS su Debian, Ubuntu. Il file di configurazione si trova qui: /etc/ssh/sshd_config.
Se hai un hosting regolare, tutto dovrebbe essere configurato come dovrebbe, vai alla sezione.

Per impostazione predefinita, il demone SSHD (stiamo apportando modifiche ad esso) non necessita di alcuna impostazione e funziona correttamente. Apportiamo solo un paio di piccole modifiche per limitare l'accesso al server di persone indesiderate.

A seguito di modifiche errate al file di configurazione, puoi perdere l'accesso al server tramite ssh, quindi assicurati di avere opzioni alternative per accedervi, ad esempio utilizzando il pannello di controllo ISPManager.

Come limitare l'accesso SSH

Tutte le modifiche vengono apportate in / etc / ssh / sshd_config
Affinché le modifiche abbiano effetto, è necessario

Cambia porta

Porta 9724

Ora, quando si autorizza, è necessario specificare 9724 invece della porta 22 standard.
Il metodo è molto semplice ed efficace contro la maggior parte dei semplici bot di hacker che bussano alle porte standard. La cosa principale qui è non creare un conflitto con altri servizi e raccogliere un numero deliberatamente inutilizzato.

Nega la comunicazione utilizzando il vecchio protocollo

Qui definiamo che la comunicazione è possibile solo utilizzando il protocollo v2

Se non sei loggato sotto radice, prima di tutti i comandi della console devi aggiungere sudo - sta per Sostituisci utente e DO- cambia l'utente e fai (sotto di esso). Ad esempio, ti consente di eseguire comandi per conto del superutente radice.

Riduci il numero di tentativi di autorizzazione

MaxAuthTries 2

Il numero di tentativi di immissione della password. Per impostazione predefinita 6. Se la ricerca non riesce, la sessione di comunicazione viene terminata.

Riduci il timeout di autorizzazione

AccediGraceTime 30s

Per impostazione predefinita, una sessione di autorizzazione può richiedere 120 secondi. Alla fine di questo tempo, si interrompe. 2 minuti per l'autorizzazione sono troppi, per tutto questo tempo il server mantiene la connessione aperta, il che è molto irrazionale. Mezzo minuto è sufficiente per gli occhi.

Chiudi accesso IP

Se solo hai bisogno dell'accesso, il modo più semplice e affidabile è bloccare l'accesso da qualsiasi luogo tranne il tuo IP o, se è dinamico, l'intervallo IP.

  1. Apri /etc/hosts.allow e aggiungi SSHD lì: 192.168.1.1

    dove 192.168.1.1 è il tuo IP. Se hai un IP dinamico, definisci un IP con una subnet mask e annota la tua sottorete invece dell'IP, ad esempio:

    SSHD: 192.168.0.0/16

  2. Apri /etc/hosts.deny e aggiungi lì: SSHD: ALL

Un altro modo per limitare l'accesso tramite IP

È possibile utilizzare la seguente direttiva:

ConsentiUtenti = *@1.2.3.4

Qui permettiamo l'accesso solo per IP 1.2.3.4

Autorizzazione chiave SSH

Sarà molto più sicuro, conveniente e corretto configurare l'autorizzazione ssh senza password. L'autorizzazione chiave verrà utilizzata per questo.

Quindi ecco l'istruzione:

La connessione è impostata. Se hai fatto qualcosa di sbagliato, il server ha rifiutato il nostro errore di chiave apparirà durante l'autorizzazione, cioè Il server non ha accettato la nostra chiave... In questo caso, esamina tutti i punti in sequenza e cerca un errore.

Principali articoli correlati