====== SSH ======
Générer paire de clés :
# RSA
ssh-keygen -t rsa -b 4096 -f .ssh/id_ma_cle
# ED25519
ssh-keygen -t ed25519 -f .ssh/id_ma_cle
Éviter la vérification fingerprint de l'hôte lors de la connexion sur un serveur.
ssh -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" @
Les clés privées et publiques peuvent avoir n'importe quel nom (pas forcément le id_rsa par défault). En revanche, il faut qu'elles aient le même nom et que seul le .pub fasse la différence (par exemple key_mulder et key_mulder.pub).
===== Copier sur une clé publique sur un serveur distant =====
Si l'authentification par mot de passe est autorisée :
ssh-copy-id -i ~/.ssh/id_rsa.pub login@ip
Et si le port est différent du port 22 :
ssh-copy-id -i ~/.ssh/id_rsa.pub -p "@"
Si seule l'authentification par clé est autorisée :
ssh login@serveur "echo $(cat ~/.ssh/id_rsa.pub) >> .ssh/authorized_keys"
Importer clé publique dans autre serveur en écrasant empreinte déjà existante : ssh-keygen -f "chemin/de/la/clé" -R ip
===== Transferts de fichiers et répertoires =====
Transférer un fichier vers un autre pc :
- Se connecter en ssh sur l'autre pc
- scp @:
Transférer répertoire entier vers un autre pc :
- Se connecter en ssh sur l'autre pc
- Taper : scp -r (-r pour répertoire) /chemin/en/local login@ip:/repertoire/destination
===== Accès à un hôte distant par forward de port =====
Permet de se connecter à un hôte appartenant situé dans un autre réseau via un autre hôte faisant office de passerelle.
Commande : ssh -L PORT-LOCAL:IP-HOTE-DISTANT:PORT-HÔTE-DISTANT LOGIN@IP-PASSERELLE
L'exemple ci-dessous permet de se connecter sur le port 80 de l'hôte 10.10.1.42 en passant par l'hôte 10.10.10.5 et via le port local 8443.
ssh -L 8443:10.10.1.42:80 pi@10.10.10.5
Après avoir lancé cette commande SSH, ouvrir Firefox et aller sur 127.0.0.1:8443.
===== Problèmes récurrents =====
==== sign_and_send_pubkey: signing failed: agent refused operation ====
Vérifier les droits sur les clés privée et publique. S'ils sont trop élevés, SSH refuse d'établir la connexion. Passer les deux clés en chmod 600.
==== Erreur Too many authentication failures ====
Côté client, tester avec l'option PubkeyAuthentication=no :ssh -o PubkeyAuthentication=no mulder@example.net
==== Filezilla : protocol error en SFTP ====
Si Filezilla sort cette erreur lors d'une connexion en SFTP :
Erreur : FATAL ERROR: Remote side sent disconnect message
Erreur : type 2 (protocol error):
Erreur : "Too many authentication failures"
Lancer Filezilla via cette commande : SSH_AUTH_SOCK=null filezilla &
cf https://blog.programster.org/filezilla-fix-sftp-protocol-connection-error
==== no matching key exchange method found. ====
Il arrive qu'on tombe sur ce type d'erreur : Unable to negotiate with 123.123.123.123 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Cela signifie que le serveur sur lequel on veut se connecter utilise d'autre types de chiffrement et/ou d'échange de clés.
Il faut donc changer les paramètres du client SSH pour ce type de client. Pour cela, éditer le fichier ~/.ssh/config, ajouter un/des hôte(s) et y ajouter les paramètres nécessaires.
Exemple :
Host 93.184.216.34, 123.123.123.123
KexAlgorithms +diffie-hellman-group1-sha1
HostKeyAlgorithms +ssh-rsa
Ciphers +aes128-cbc