Table des matières
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" <username>@<ipaddress>
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 <num_port> "<username>@<ipaddress>"
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 <fichier> <username>@<ipaddressDistant>:<DestinationDirectory>
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