Présentation
Dans cet article, nous allons apprendre quelques commandes ssh et scp utiles avec des exemples. SSH est un protocole qui signifie Secure Shell qui est un outil de commande côté client utilisé pour prendre une session à distance du système Linux en toute sécurité. Il utilise la méthode de cryptage symétrique et asymétrique pour transférer des données sur le réseau. SSH est un outil hautement recommandé pour prendre une session à distance d'un serveur car c'est le moyen le plus sûr de se connecter à n'importe quel serveur. SSH est le remplacement de l'outil distant non sécurisé utilisé précédemment comme telnet. Le numéro de port de SSH est 22. Les versions de SSH sont la version 1 du protocole SSH et la version 2 du protocole SSH, également appelées SSH-1 et SSH-2 . La différence entre SSH-1 et SSH-2 est que SSH-2 prend en charge le certificat de clé publique alors que SSH-1 ne le fait pas.
scp est un utilitaire de ligne de commande utilisé pour copier des données d'un système Linux à un autre sur le réseau en toute sécurité. Comme SSH, SCP utilise également le port numéro 22 pour se connecter et transférer des données sur le réseau. SCP est une alternative intéressante et un outil recommandé contre les protocoles de transfert de données non sécurisés tels que FTP, Telnet et il est hautement sécurisé pour transférer des données sur le réseau car il utilise le protocole SSH pour transférer des données en toute sécurité.
Voyons donc quelques commandes ssh et scp importantes avec des exemples.
J'ai deux systèmes Linux dans mon environnement de test, c'est-à-dire pc1 et pc2, trouvez les détails du système ci-dessous.
Scénario d'environnement de test :
PC1 :
Computer Name – pc1 IP Address – 192.168.0.105
PC2 :
Computer Name – pc2 IP Address – 192.168.0.106
1. Prenez à distance de PC2 à partir de PC1 à l'aide de la commande ssh
Comme nous savons tous que ssh est utilisé pour prendre en toute sécurité la console distante d'un autre système Linux, prenons donc la console distante de pc2 à partir de pc1, vous pouvez utiliser la commande ssh ci-dessous.
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
Prise à distance réussie, pour confirmer, vérifiez le nom d'hôte et l'adresse IP du système distant comme indiqué ci-dessous.
[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. Prendre la console à distance du système avec le nom d'utilisateur actuellement connecté
Vous pouvez utiliser la console distante du système avec le nom d'utilisateur actuellement connecté. Par exemple, ici dans pc1, je me suis connecté en utilisant le nom d'utilisateur "root" et je veux prendre une session à distance de la machine pc2 en utilisant le même nom d'utilisateur, c'est-à-dire "root", alors nous pouvons utiliser la commande ci-dessous.
[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. Se déconnecter de la console distante
Pour vous déconnecter d'une console distante déjà utilisée, utilisez la commande logout. Reportez-vous à l'exemple de sortie ci-dessous.
[root@pc2 ~]# logout # Logout from already taken remote console Connection to 192.168.0.106 closed.
4. Vérifiez la version du package ssh installé
Pour vérifier la version du package ssh actuellement installé, utilisez la commande ssh avec l'option -V . Reportez-vous à l'exemple de sortie ci-dessous.
[root@pc1 ~]# ssh -V # check the currently installed ssh package version OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
5. Copiez les données d'un système Linux à un autre sur le réseau à l'aide de la commande scp
Pour copier des données d'un système Linux à un autre, nous pouvons utiliser la commande scp. Ici, je copie des données, c'est-à-dire touch.txt fichier de pc1 à pc2. Reportez-vous à l'exemple de sortie ci-dessous.
[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. Télécharger/Copier les données du système distant à l'aide de la commande SCP
Pour copier des données d'un système distant vers un système local, vous pouvez utiliser la commande ci-dessous. Ici, je copie des données de pc2 vers 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. Copier les données du système distant vers le système local de manière récursive
Pour copier un répertoire avec tout son contenu de manière récursive, vous pouvez utiliser la commande scp avec l'option -r . Reportez-vous à l'exemple de sortie ci-dessous. Ici, je copie un répertoire, c'est-à-dire des données d'un système distant, c'est-à-dire pc2 vers un système local, c'est-à-dire 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. Copiez les données du système local vers le système distant de manière récursive à l'aide de la commande scp
Pour copier un répertoire avec tout son contenu de manière récursive du système local vers le système distant, vous pouvez utiliser la commande scp avec l'option -r . Reportez-vous à l'exemple de sortie ci-dessous.
[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. Connectez et exécutez une commande simultanément sur un système distant à l'aide de la commande SSH
Vous pouvez prendre la session à distance d'un serveur et exécuter une commande simultanément. Par exemple, ici, je prends à distance le système pc2 et j'exécute une commande, c'est-à-dire ifconfig. Reportez-vous à l'exemple de sortie ci-dessous.
[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. Prendre à distance le système par un nom d'utilisateur différent à l'aide de la commande ssh
Pour prendre à distance le système avec un nom d'utilisateur différent, vous pouvez utiliser la commande ssh avec l'option -l . Reportez-vous à la sortie ci-dessous.
[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. Copiez les fichiers et répertoires cachés à l'aide de la commande scp.
Pour copier des fichiers et des répertoires cachés, vous pouvez utiliser la commande ssh avec l'option -rp . une chose, gardez à l'esprit que lors de la copie de fichiers et de répertoires cachés à l'aide de la commande scp, mettez toujours . (point) à la fin du chemin par exemple « 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