scp – copie de fichiers via SSH
Il est possible d’utiliser une connexion SSH pour copier un fichier entre 2 machines du réseau de façon sécurisée.
Utiliser pour cela SCP sous Linux et son homologue pour Windows WinScp ou PSCP.exe en ligne de commande (de la suite Putty).
Pour copier d’un serveur SSH distant vers un répertoire local :
# copie distant vers local scp username_distant@nom_du_serveur_ssh_distant:/dossier_distant/fichier_distant /dossier_distant/tmp/ # copie local vers distant scp /dossier_local/fichier_local username_distant@nom_du_serveur_ssh_distant:/dossier_distant/
ssh-keygen
Générer une pair de clé publique/privée SSH
Pour bénéficier d’une authentification forte (lire ce post) :
ssh-keygen -o -a 100 -t ed25519
Il peut alors être utile de modifier son fichier ~/.ssh/config
(man ssh_config) pour y spécifier la nouvelle clé par défaut avec la directive:
IdentityFile ~/.ssh/id_ed25519
Format Open SSH
Pour convertir sa clé au format « open ssh » (pour l’ajouter à Github par ex) il suffit d’utiliser la commande:
ssh-keygen -i -f ed25519 > openssh.pub
Modifier la passphrase SSH
Pour modifier ou supprimer la passphrase lié à la clé SSH privée (celle qui est en locale et qui nous sert à s’authentifier sur les serveur distant)
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
Supprimer une clé
il peut arriver que la clé ssh publique du serveur ait changé, dans ce cas il faut la supprimer localement des known_hosts
, et cela peut se faire vi ssh-keygen
:
ssh mondomaine.com -i ~/.ssh/id_rsa "echo toto" # The authenticity of host 'mondomaine.com (xxx.xxx.xxx.xxx)' can't be established. # ECDSA key fingerprint is SHA256:+KLLKjkkjljk23mlkmlk3FF/dsFDSFD. # Are you sure you want to continue connecting (yes/no)? yes # Warning: Permanently added 'mondomaine.com' (ECDSA) to the list of known hosts. # Warning: the ECDSA host key for 'mondomaine.com' differs from the key for the IP address 'xxx.xxx.xxx.xxx' # Offending key for IP in /home/behrouze/.ssh/known_hosts:6 # Are you sure you want to continue connecting (yes/no)? xxx.xxx.xxx.xxx^C ssh-keygen -R xxx.xxx.xxx.xxx
ssh-copy-id
Pour simplifier le scp
de notre clé publique sur une autre machine il existe la commande ssh-copy-id qui va copier notre clé dans le fichier authorized_key
du compte username de la destination spécifiée :
ssh-copy-id -i .ssh/nom_de_ma_cle.pub username@destination
Exécution distant parallélisée
parallel-ssh (Parallel versions of SSH-based tools): regroupe un ensemble de commandes (pssh, pscp, prsync, pnuke, and pslurp) permettant d’exécuter les même commandes sur plusieurs machines distantes.
Fabric (Simple Pythonic remote deployment tool): outil contrôlable via un script python (article sur l’usage puis sur Linuxjournal et un autre sur plus général sur les outils devops)
Pour de la gestion plus lourde avec du déploiement codé, il existe Terraform.
Liens
Renforcer la sécurité de son serveur SSHD Proxyfier SSH avec SSLH ou Squid