|
|
![]() ![]() ![]() ![]() |
principes 01/06/2023 bonnes pratiques 15/03/2018 mauvaises pratiques 07/09/2023 passage environnement 23/01/2025 | ||
# le principe est de lancer des commandes sur un unix distant # si il fait tourner un logiciel serveur ssh (ex /usr/sbin/sshd) ssh compte@adresse # ou si l'@ n'est pas disponnible ssh adresse -l compte # ou si le nom d'utilisateur est identique ssh adresse # il est possible de lancer juste une commande par exemple verifier que le serveur est à l'heure ssh adresse date # ssh est configuré pour refuser de connecter à un compte sans mot de passe # pour éviter de saisir le mot de passe de l'utilisateur, il faut générer une paire de clés publique/privée ssh-keygen # en général on ne répond pas à la première question qui determine où ranger les clés # puis il est proposé de saisir un mot de passe pour protéger la clé privée # mise à part sur les serveurs physiquement protégés, IL FAUT METTRE UN MOT DE PASSE # ssh ignore les clés mal protégées # pour vérifier les droits des toutes les étapes du chemin namei -om ~/.ssh # pour préparer l'accès à un compte distant sans son mot de passe cat .ssh/id_*.pub | ssh compte@adresse "cat >> .ssh/authorized_keys" # il est possible de parametrer les connexions en fonction des clés en mettrant en debut de ligne: command="command" ssh-rsa AAAAB3N.... # la commande authprogs est prevue expres pour parametrer cela # si on en a beaucoup à faire : export SSHPASS="mot de passe" # variable en lettres capitales cat .ssh/id_*.pub | sshpass -e ssh compte@adresse "cat >> .ssh/authorized_keys" # pour se connecter sans mots de passe il faut l'enregister pour la durée de la sessions ssh-add # sur un PC perso ça fonctionne tel quel, mais sur une connexion à distance on reçoit le message: ## Could not open a connection to your authentication agent. # il faut lancer l'agent : ssh-agent # cela repond par exemple : SSH_AUTH_SOCK=/tmp/ssh-50R1Th8Z3hMK/agent.16339; export SSH_AUTH_SOCK; SSH_AGENT_PID=16340; export SSH_AGENT_PID; echo Agent pid 16340; # ce sont des commandes à tapper, donc pour que ce soit automatique : eval $(ssh-agent) | ||
# tout cela ne fonctionne pas si les clés ne sont pas protégées chmod go-w $HOME chmod go-rwx $HOME/.ssh # il est tentant de ne pas mettre de mot de passe à sa clé privée # cela peut se justifier entre serveurs protégés physiquement # mais sur un PC perso ou pire sur une clé USB ? # qui copie une clé privée s'assure tous les accès auxquels elle donne droit # heureusement un option permet d'y remedier même après coup # ou de protéger une copie de clé utilisée par ailleurs sans mot de passe ssh-keygen -p # à tout hasard, il est possible de produire la clé publique qui correspond à une clé privée ssh-keygen -y fichier_cle_privee # on peut jouer avec les entrées/sorties, par exmple archiver ou extraire à distante : tar cvz . | ssh toto@serveur cat \> archive.tgz ssh toto@serveur cat archive.tgz | tar xvz # il est possible de lancer des commandes graphiques à distance et récupérer l'affichage ssh -X toto@serveur # mais un administrateur du serveur peux pirater la machine d'où vient la connexion # lors de connexion sur un serveur appartenant à un autre réseau, ssh peut bloques l'affichage graphique # si on fait vraiment confiance au serveur distant ssh -Y toto@serveur | ||
# il est possible de ne pas vérifier la clé d'un serveur # cela est pratique pour les ajouter automatique à la liste .ssh/known_hosts for i in serv1 serv2 ssh -o StrictHostKeyChecking=no -n $i date done # on peut aussi metrre ça dans .ssh/config mais là c'est carrement irresponsable # ne resoud pas le problème # Bad server host key: Invalid key length | ||
# si on veut passer une variable d'anvironement # il faut utiliser les variable locale L_.... # mais elles ont toute un rĂ´le j'utilise LC_PAPER |