SSH SCP et serveurs distants

Quelques exemples de commandes pour la connexion SSH et l'envoi de fichiers et/ou dossiers avec SCP.

Installation

Ces outils sont généralement installés en même temps que votre distribution, si toutefois ça n'était pas le cas:

# apt install openssh-server openssh-client

SSH

Rien de très compliqué ici, ssh permet de se connecter en console sur un serveur distant et d'administrer ce dernier de la même manière qu'on le fait en local ... et en console bien sûr.

$ ssh login@server_ip 

ou

$ ssh login@server_adress

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

Si en vous connectant vous obtenez le message WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! c'est que vous tentez de joindre une machine dont l'adresse IP et/ou le domaine à déjà été enregistré parmi les clés ssh de votre machine locale mais que cette clé à changé.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
ab:cd:ef:33:44:55:66:77:88:99:00:b1:b2:b3:b4:b5.
Please contact your system administrator.
Add correct host key in /home/manu/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:6
RSA host key for 90.90.90.90 has changed and you have requested strict checking.
Host key verification failed.

Remarquez la ligne Offending key in /home/user/.ssh/known_hosts:6, tout est dit ici pour corriger ce non problème, il suffit en effet de supprimer la ligne 6 du fichier known_hosts. Libre à vous de le faire manuellement ou en utilisant la commande ci-dessous, qui selon moi est mieux adaptée.

$ ssh-keygen -R [ip ou domaine]

Juste le retour d'une commande

En général on se connecte sur un serveur distant et on travail comme sur une machine local. Si au contraire on ne souhaite que récupérer le résultat d'une commande passé sur le serveur distant il suffit de passer cette dernière à la suite de ssh:

manu@zoo:~$ ssh user@domaine.com ls -la
user@domaine.com's password: 
total 56
drwx------  4 root root 4096 oct.   5 15:44 .
drwxr-xr-x 22 root root 4096 sept. 21 13:58 ..
-rw-------  1 root root 9932 oct.   5 15:46 .bash_history
-rw-r--r--  1 root root  570 janv. 31  2010 .bashrc
-rw-r--r--  1 root root    7 sept. 21 13:57 .mdg
-rw-------  1 root root  291 sept. 22 10:43 .mysql_history
-rw-------  1 root root   63 oct.   5 15:45 .nano_history
-rw-r--r--  1 root root  326 sept. 21 13:53 .ovhrc
-rw-r--r--  1 root root  140 nov.  19  2007 .profile
-rw-r--r--  1 root root   66 oct.   5 15:44 .selected_editor
drwx------  2 root root 4096 sept. 26 16:03 .ssh
manu@zoo:~$

SCP

Copie d'un fichier depuis le répertoire courant vers un répertoire du serveur:

$ scp fichier login@serveur:chemin_destination

Copie d'un répertoire, avec éventuellement ses sous-répertoires, vers un répertoire du serveur:

$ scp -r repertoire login@serveur:chemin_destination

Copie d'un fichier du serveur distant vers le répertoire courant de l'ordinateur local:

$ scp login@serveur:chemin/fichier_distant .

Copie d'un répertoire du serveur distant vers le répertoire courant de l'ordinateur local:

$ scp -r login@serveur:chemin/repertoire_distant .

Copie d'un fichier entre deux serveurs distants:

$ scp Login1@Serveur1:chemin/fichier Login2@Serveur2:chemin/

Ou si l'on souhaite changer le nom du fichier:

$ scp Login1@Serveur1:chemin/fichier Login2@Serveur2:chemin/fichier_nom

Si vous souhaitez utiliser une de ces commandes dans un script bash vous vous retrouverez sans doute confronté au problème de la saisie du mot de passe. Une solution possible est d'utiliser l'utilitaire sshpass. Mais le plus sûr reste RSA.

15-Jul-2023
^