GNU/Linux >> Linux Esercitazione >  >> Linux

11 Utili comandi “ssh” e “scp” in Linux

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


Linux
  1. Scopri la differenza tra i comandi "su" e "su -" in Linux

  2. Comandi Linux:job, bg e fg

  3. I comandi Nginx più utili nel sistema Linux

  4. 10 utili comandi YUM in Linux

  5. Comandi di riavvio e spegnimento di Linux

Comandi Pushd e Popd in Linux

Comandi SSH in Linux con esempi di utilizzo

Installa e usa WinSCP

50 semplici e utili comandi dmidecode per Linux

I 40 comandi utili del server Linux per principianti e professionisti

40 utili comandi git per amministratori e sviluppatori Linux