Úvod
V tomto příspěvku se naučíme některé užitečné příkazy ssh a scp s příklady. SSH je protokol, který znamená Secure Shell, což je příkazový nástroj na straně klienta používaný k bezpečnému provádění vzdálené relace systému Linux. K přenosu dat po síti používá metodu symetrického a asymetrického šifrování. SSH je vysoce doporučený nástroj pro vzdálenou relaci serveru, protože je to nejbezpečnější způsob připojení jakéhokoli serveru. SSH je náhradou dříve používaného nezabezpečeného vzdáleného nástroje, jako je telnet. Číslo portu SSH je 22. Verze SSH jsou protokol SSH verze 1 a protokol SSH verze 2 také označované jako SSH-1 a SSH-2 . Rozdíl mezi SSH-1 a SSH-2 je ten, že SSH-2 podporuje certifikát veřejného klíče, zatímco SSH-1 nikoli.
scp je nástroj příkazového řádku, který se používá k bezpečnému kopírování dat z jednoho systému Linux do druhého přes síť. Stejně jako SSH SCP také používá port číslo 22 pro připojení a přenos dat po síti. SCP je pěkná alternativa a doporučený nástroj proti nezabezpečeným protokolům přenosu dat, jako je FTP, Telnet, a je vysoce zabezpečený pro přenos dat po síti, protože k bezpečnému přenosu dat používá protokol SSH.
Pojďme se tedy podívat na některé důležité příkazy ssh a scp s příklady.
V testovacím prostředí mám dva systémy Linux, tj. pc1 a pc2. Podrobnosti o systému naleznete níže.
Scénář testovacího prostředí:
PC1:
Computer Name – pc1 IP Address – 192.168.0.105
PC2:
Computer Name – pc2 IP Address – 192.168.0.106
1. Vzdálené ovládání PC2 z PC1 pomocí příkazu ssh
Jak všichni víme, že ssh se používá k bezpečnému převzetí vzdálené konzole jiného systému Linux, Vezměme tedy vzdálenou konzoli pc2 z pc1, kterou můžete použít pod příkazem ssh.
Syntaxe:
# 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
Vzdálené odebráno Úspěšně, pro potvrzení zkontrolujte název hostitele a IP adresu vzdáleného systému, jak je uvedeno níže.
[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. Vezměte vzdálenou konzoli systému s aktuálně přihlášeným uživatelským jménem
Můžete si vzít vzdálenou konzoli systému s aktuálně přihlášeným uživatelským jménem. Například zde v pc1 jsem se přihlásil pomocí uživatelského jména „root“ a chci provést vzdálenou relaci počítače pc2 pomocí stejného uživatelského jména, tj. „root“, pak můžeme použít níže uvedený příkaz.
[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. Odhlášení ze vzdálené konzoly
Pro odhlášení z již pořízené vzdálené konzole použijte příkaz logout. Podívejte se na ukázkový výstup níže.
[root@pc2 ~]# logout # Logout from already taken remote console Connection to 192.168.0.106 closed.
4. Zkontrolujte verzi nainstalovaného balíčku ssh
Chcete-li zkontrolovat aktuálně nainstalovanou verzi balíčku ssh, použijte příkaz ssh s volbou -V . Podívejte se na ukázkový výstup níže.
[root@pc1 ~]# ssh -V # check the currently installed ssh package version OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
5. Zkopírujte data z jednoho systému Linux do druhého přes síť pomocí příkazu scp
Pro kopírování dat z jednoho linuxového systému do druhého můžeme použít příkaz scp. Zde kopíruji data, tj. touch.txt soubor z pc1 do pc2. Podívejte se na ukázkový výstup níže.
[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. Stažení/kopírování dat ze vzdáleného systému pomocí příkazu SCP
Chcete-li zkopírovat data ze vzdáleného systému do místního systému, můžete použít níže uvedený příkaz. Zde kopíruji data z pc2 do 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. Zkopírujte data ze vzdáleného systému do místního systému rekurzivně
Chcete-li rekurzivně zkopírovat adresář s celým jeho obsahem, můžete použít příkaz scp s volbou -r . Viz ukázkový výstup níže. Zde kopíruji adresář, tj. data ze vzdáleného systému, tj. pc2, do místního systému, tj. 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. Zkopírujte data z místního systému do vzdáleného systému rekurzivně pomocí příkazu scp
Chcete-li rekurzivně zkopírovat adresář s celým jeho obsahem z místního systému do vzdáleného systému, můžete použít příkaz scp s volbou -r . Podívejte se na ukázkový výstup níže.
[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. Připojte a spusťte příkaz současně na vzdáleném systému pomocí příkazu SSH
Můžete vzít vzdálenou relaci serveru a spustit příkaz současně. Například zde beru vzdálený systém pc2 a provádím příkaz, tj. ifconfig. Podívejte se na ukázkový výstup níže.
[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. Vzdálené ovládání systému pomocí jiného uživatelského jména pomocí příkazu ssh
Chcete-li se vzdálit od systému s jiným uživatelským jménem, můžete použít příkaz ssh s volbou -l . Viz výstup níže.
[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. Zkopírujte skryté soubory a adresáře pomocí příkazu scp.
Pro kopírování skrytých souborů a adresářů můžete použít příkaz ssh s volbou -rp . jednu věc mějte na paměti, že při kopírování skrytých souborů a adresářů pomocí příkazu scp vždy vložte . (tečka) na konci cesty například „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