====== 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