De la différence entre rsync, scp et sftp

Publié le 08/08/2017

J'ai encore appris un truc à la noix aujourd'hui: SCP et SFTP ne sont pas du tout équivalents pour l'envoi de documents sur un serveur en se connectant avec SSH. La manière de se connecter, oui; la méthode de transfert, non! SCP ne fait que copier les fichiers; SFTP permet de gérer plus finement (en mode interactif, si besoin) les fichiers et d'explorer l'arborescence si besoin.

SFTP doit être activé manuellement dans le fichier /etc/ssh/sshd_config alors qu'SCP pourra être utilisé dès qu'une connexion SSH sera fonctionnelle.

Le truc à savoir, c'est qu'il est possible d'autoriser une connexion SSH, empêcher l'utilisation d'un shell, et autoriser malgré tout le protocole SFTP. En gros, on peut donc renvoyer l'utilisateur chez lui s'il se connecte au shell, mais l'autoriser s'il s'agit uniquement d'un transfert de fichiers (et oui: SCP ne sert qu'au transfert de fichiers... Mais comme la connexion semble être ouverte, le serveur vous enverra dans les ronces).

Pour passer SFTP en mode non-interactif, on peut procéder comme ceci (SCP l'est d'office, lui, en non-interactif):

sftp <HOST> -b <<EOF
put file1
put file2
EOF

Voir aussi ici pour les détails d'installation du service SFTP complet.

Et pour simplifier:

SFTP = SSH + SFTP-server on server
SCP  = SSH + `scp` on server side
FISH = SSH + `dd` (and some other basic Unix utilities on the server side only)