Introduzione
In questo post, impareremo alcuni utili comandi ssh e scp con esempi. SSH è un protocollo che sta per Secure Shell, uno strumento di comando lato client utilizzato per eseguire sessioni remote del sistema Linux in modo sicuro. Utilizza il metodo di crittografia simmetrico e asimmetrico per trasferire i dati sulla rete. SSH è uno strumento altamente raccomandato per eseguire una sessione remota di un server poiché è il modo più sicuro per connettere qualsiasi server. SSH è la sostituzione di uno strumento remoto non protetto utilizzato in precedenza come telnet. Il numero di porta di SSH è 22. Le versioni di SSH sono il protocollo SSH versione 1 e il protocollo SSH versione 2 indicato anche come SSH-1 e SSH-2 . La differenza tra SSH-1 e SSH-2 è che SSH-2 supporta Public Key Certificate mentre SSH-1 no.
scp è un'utilità della riga di comando che viene utilizzata per copiare i dati da un sistema Linux a un altro in modo sicuro sulla rete. Come SSH, anche SCP utilizza la porta numero 22 per connettersi e trasferire dati sulla rete. SCP è una valida alternativa e uno strumento consigliato contro protocolli di trasferimento dati non protetti come FTP, Telnet ed è altamente sicuro per trasferire i dati sulla rete poiché utilizza il protocollo SSH per trasferire i dati in modo sicuro.
Quindi diamo un'occhiata ad alcuni importanti comandi ssh e scp con esempi.
Ho due sistemi Linux nel mio ambiente di test, ovvero pc1 e pc2, trova i dettagli del sistema di seguito.
Scenario ambientale di test:
PC1 :
Computer Name – pc1 IP Address – 192.168.0.105
PC2 :
Computer Name – pc2 IP Address – 192.168.0.106
1. Prendi il telecomando di PC2 da PC1 usando il comando ssh
Come tutti sappiamo che ssh viene utilizzato per prendere la console remota di un altro sistema Linux in modo sicuro, quindi prendiamo la console remota di pc2 da pc1 che puoi usare sotto il comando ssh.
Sintassi:
# ssh username@IP Address of the Remote Computer
[root@pc1 ~]# ssh [email protected] # Take Remote of PC2 from PC1 [email protected]'s password: Last login: Thu Mar 9 09:14:34 2017 from 192.168.0.107
Remoto preso con successo, per confermare controllare il nome host e l'indirizzo IP del sistema remoto come mostrato di seguito.
[root@pc2 ~]# hostname pc2 [root@pc2 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:01:77:E7 inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe01:77e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9688 errors:0 dropped:0 overruns:0 frame:0 TX packets:4695 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11157837 (10.6 MiB) TX bytes:370245 (361.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:960 (960.0 b) TX bytes:960 (960.0 b)
2. Prendi la console remota del sistema con il nome utente attualmente connesso
Puoi prendere la console remota del sistema con il nome utente attualmente connesso. Ad esempio, qui in pc1 ho effettuato l'accesso usando il nome utente "root" e voglio prendere una sessione remota della macchina pc2 usando lo stesso nome utente, ad esempio "root", quindi possiamo usare il comando seguente.
[root@pc1 ~]# ssh 192.168.0.106 # Take Remote using currently logged in username [email protected]'s password: Last login: Thu Mar 9 09:08:54 2017 from 192.168.0.107 [root@pc2 ~]# hostname pc2
3. Esci dalla console remota
Per disconnettersi dalla console remota già utilizzata, utilizzare il comando logout. Fare riferimento all'output di esempio di seguito.
[root@pc2 ~]# logout # Logout from already taken remote console Connection to 192.168.0.106 closed.
4. Controlla la versione del pacchetto ssh installato
Per controllare la versione del pacchetto ssh attualmente installata, usa il comando ssh con l'opzione -V . Fare riferimento all'output di esempio di seguito.
[root@pc1 ~]# ssh -V # check the currently installed ssh package version OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
5. Copia i dati da un sistema Linux a un altro in rete usando il comando scp
Per copiare i dati da un sistema Linux a un altro possiamo usare il comando scp. Qui sto copiando i dati, ad esempio touch.txt file da pc1 a pc2. Fare riferimento all'output di esempio di seguito.
[root@pc1 ~]# touch text.txt # Create a Sample text File [root@pc1 ~]# ls anaconda-ks.cfg Documents install.log.syslog Public Videos data Downloads Music Templates Desktop install.log Pictures text.txt [root@pc1 ~]# scp text.txt [email protected]:/root/Desktop/ # Copy data from Local System to Remote System [email protected]'s password: text.txt 100% 0 0.0KB/s 00:00
6. Scarica/copia i dati dal sistema remoto utilizzando il comando SCP
Per copiare i dati dal sistema remoto al sistema locale è possibile utilizzare il comando seguente. Qui sto copiando i dati da pc2 a pc1.
[root@pc1 ~]# scp [email protected]:/data/database.txt /root/ # Copy Data from Remote System to Local using scp Command [email protected]'s password: database.txt 100% 0 0.0KB/s 00:00 [root@pc1 ~]# ls anaconda-ks.cfg Desktop install.log Pictures text.txt data Documents install.log.syslog Public Videos database.txt Downloads Music Templates
7. Copia i dati dal sistema remoto al sistema locale in modo ricorsivo
Per copiare ricorsivamente una directory con tutto il suo contenuto puoi usare il comando scp con l'opzione -r . Fare riferimento all'output di esempio di seguito. Qui sto copiando una directory, ad esempio i dati dal sistema remoto, ad esempio PC2, al sistema locale, ad esempio PC1.
[root@pc1 ~]# scp -r [email protected]:/data /root/Desktop/ # Copy directory Recursively [email protected]'s password: database.txt 100% 0 0.0KB/s 00:00 [root@pc1 ~]# cd /root/Desktop/ [root@pc1 Desktop]# ls data [root@pc1 Desktop]# ls data/ database.txt [root@pc1 Desktop]#
8. Copia i dati dal sistema locale al sistema remoto in modo ricorsivo usando il comando scp
Per copiare una directory con tutto il suo contenuto in modo ricorsivo da un sistema locale a un sistema remoto puoi usare il comando scp con l'opzione -r . Fare riferimento all'output di esempio di seguito.
[root@pc1 ~]# ls apps/ test1.txt test2.txt test3.txt test4.txt test5.txt [root@pc1 ~]# scp -r apps/ [email protected]:/root # Copy directory Recursively from Local System to Remote System [email protected]'s password: test2.txt 100% 0 0.0KB/s 00:00 test1.txt 100% 0 0.0KB/s 00:00 test4.txt 100% 0 0.0KB/s 00:00 test5.txt 100% 0 0.0KB/s 00:00 test3.txt 100% 0 0.0KB/s 00:00
9. Connetti ed esegui un comando contemporaneamente sul sistema remoto utilizzando il comando SSH
Puoi prendere la sessione remota di un server ed eseguire un comando contemporaneamente. Ad esempio, qui sto prendendo il telecomando del sistema pc2 ed eseguo un comando, ad esempio ifconfig. Fare riferimento all'output di esempio di seguito.
[root@pc1 ~]# ssh 192.168.0.106 "ifconfig" # take remote and run a command simultaneously [email protected]'s password: eth0 Link encap:Ethernet HWaddr 00:0C:29:01:77:E7 inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe01:77e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9870 errors:0 dropped:0 overruns:0 frame:0 TX packets:4845 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11182999 (10.6 MiB) TX bytes:393576 (384.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:18 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1058 (1.0 KiB) TX bytes:1058 (1.0 KiB)
10. Prendi il telecomando del sistema con un nome utente diverso usando il comando ssh
Per prendere in remoto il sistema con un nome utente diverso puoi usare il comando ssh con l'opzione -l . Fare riferimento all'output di seguito.
[root@pc1 Desktop]# ssh -l root 192.168.0.106 # Take remote using different username [email protected]'s password: Last login: Fri Mar 10 08:54:59 2017 from 192.168.0.107
11. Copia file e directory nascosti usando il comando scp.
Per copiare file e directory nascosti puoi usare il comando ssh con l'opzione -rp . una cosa tieni presente che durante la copia di file e directory nascosti usando il comando scp metti sempre . (punto) alla fine del percorso ad esempio “scp -rp /root/.“.
[root@pc1 ~]# scp -rp /root/. [email protected]:/hidden # Copy hidden files and directories using scp command [email protected]'s password: .gtk-bookmarks 100% 107 0.1KB/s 00:00 .bashrc 100% 176 0.2KB/s 00:00 .bash_logout 100% 18 0.0KB/s 00:00 .bash_profile 100% 176 0.2KB/s 00:00 database.txt 100% 0 0.0KB/s 00:00 .bash_history 100% 3327 3.3KB/s 00:00 database.txt 100% 0 0.0KB/s 00:00 profiles.ini 100% 104 0.1KB/s 00:00 . . . home-2f9509b7.log 100% 32KB 32.0KB/s 00:00 addressbook.db 100% 12KB 12.0KB/s 00:00 addressbook.db.summary 100% 86 0.1KB/s 00:00 .ICEauthority 100% 1244 1.2KB/s 00:00 [root@pc1 ~]# ssh 192.168.0.106 [email protected]'s password: Last login: Fri Mar 10 08:56:14 2017 from 192.168.0.107 [root@pc2 ~]# ls -a /hidden/ . data .gnote Pictures .. database.txt .gnupg Public anaconda-ks.cfg .dbus .gtk-bookmarks .pulse apps Desktop .gvfs .pulse-cookie .bash_history Documents .ICEauthority .ssh .bash_logout Downloads install.log .tcshrc .bash_profile .esd_auth install.log.syslog Templates .bashrc .gconf .local text.txt .cache .gconfd .mozilla Videos .config .gnome2 Music .cshrc .gnome2_private .nautilus