informatique:logiciels:ssh
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
informatique:logiciels:ssh [2021/01/11 18:50] – [Unable to negotiate] pteu | informatique:logiciels:ssh [2023/09/08 09:51] – [Connexion forcée par mot de passe] pteu | ||
---|---|---|---|
Line 62: | Line 62: | ||
Dans le cas précédent, | Dans le cas précédent, | ||
+ | =====Afficher la liste des paramètres===== | ||
+ | |||
+ | Ceci permet d' | ||
+ | <code bash> | ||
+ | sshd -T -C user=guest | ||
+ | </ | ||
====== Utilisation du client ====== | ====== Utilisation du client ====== | ||
Line 93: | Line 99: | ||
+ | =====Gérer des clés===== | ||
+ | |||
+ | Pour générer une paire de clés sécurisées utiliser les valeurs par défaut : | ||
+ | <code bash> | ||
+ | $ ssh-keygen | ||
+ | </ | ||
+ | Actuellement (en 2021) il est raisonnable d' | ||
+ | |||
+ | Pour formater une clé publique au format RFC 4716 : | ||
+ | <code bash> | ||
+ | $ ssh-keygen -ef ~/ | ||
+ | ---- BEGIN SSH2 PUBLIC KEY ---- | ||
+ | Comment: " | ||
+ | AAAAB3NzaC1yc2EAAAADAQABAAABAQCzU4exWqu4tsgWIJleq1AJ98cGHswD80cphWYOas | ||
+ | spBoOPgdv | ||
+ | [blabla sur quelques lignes] | ||
+ | 15ukAsdfsdgg3h5f4h6dfh3fj84tK1 | ||
+ | ---- END SSH2 PUBLIC KEY ---- | ||
+ | </ | ||
+ | |||
+ | Alternatives : convertir au format PEM '' | ||
===== Se connecter sans mdp ===== | ===== Se connecter sans mdp ===== | ||
Line 157: | Line 184: | ||
</ | </ | ||
On lance '' | On lance '' | ||
+ | |||
+ | ====ssh-add==== | ||
+ | |||
+ | Cet outil sert à ajouter ou supprimer des identités (clés) au ssh-agent : | ||
+ | * pour lister toutes les identités déjà chargées : '' | ||
+ | * pour ajouter une nouvelle identité : ssh-add ~/ | ||
+ | * pour supprimer une identité : '' | ||
+ | |||
+ | Par défaut le client SSH va présenter toutes les identités qu'il trouvera ; pour désactiver ce comportement (et éviter tous les //failed login// qui en découlent) : | ||
+ | <code bash ~/ | ||
+ | IdentitiesOnly yes | ||
+ | </ | ||
+ | Attention il faudra soit utiliser '' | ||
* pour plus de sécurité on peut restreindre l' | * pour plus de sécurité on peut restreindre l' | ||
Line 241: | Line 281: | ||
Sur le serveur SSH, dans le fichier ''/ | Sur le serveur SSH, dans le fichier ''/ | ||
- | | + | <code bash> |
+ | X11Forwarding yes | ||
+ | </ | ||
Sur le client, qui doit être muni d'un serveur X : | Sur le client, qui doit être muni d'un serveur X : | ||
- | | + | <code bash> |
+ | ssh -X [-C] serveur | ||
+ | </ | ||
-X permet l' | -X permet l' | ||
Line 251: | Line 295: | ||
Pour les postes clients sous Windows, on peut passer par l' | Pour les postes clients sous Windows, on peut passer par l' | ||
Dans le cas de Cygwin/X : on le lance, on lance le serveur X | Dans le cas de Cygwin/X : on le lance, on lance le serveur X | ||
- | | + | <code bash> |
+ | startxwin.sh | ||
+ | </ | ||
Cela lance un xterm (et une icone dans la taskbar). Ensuite on procède comme normalement : | Cela lance un xterm (et une icone dans la taskbar). Ensuite on procède comme normalement : | ||
- | | + | <code bash> |
+ | ssh -X serveur | ||
+ | </ | ||
- | (il parait que ça marche aussi avec putty, en activant le //X11 Forwarding//, | + | ====Après un su/sudo==== |
+ | Le X11 ne passe pas les '' | ||
+ | <code bash> | ||
+ | # afficher le DISPLAY avant le sudo | ||
+ | echo $DISPLAY | ||
+ | | ||
+ | # afficher les xauth et copier la ligne qui correspond à notre DISPLAY (ici le ": | ||
+ | xauth list | ||
+ | [..] | ||
+ | serveur/ | ||
+ | |||
+ | # ajouter l' | ||
+ | sudo -i | ||
+ | xauth add serveur/ | ||
+ | |||
+ | xclock& | ||
+ | </ | ||
+ | =====Exécuter un script local sur le serveur distant===== | ||
+ | |||
+ | Pour cela, on lance la commande bash distante, en précisant le paramètre '' | ||
+ | <code bash> | ||
+ | ssh user@remoteserver 'bash -s' < script.sh | ||
+ | </ | ||
+ | |||
+ | Si le script n'est pas dans un fichier, on peut envoyer les commandes sur plusieurs lignes en usant d'un [[informatique: | ||
+ | <code bash> | ||
+ | ssh user@remoteserver 'bash -s' << EOF | ||
+ | hostname | ||
+ | pwd | ||
+ | EOF | ||
+ | </ | ||
====== Tips ====== | ====== Tips ====== | ||
Line 316: | Line 394: | ||
Lorsqu' | Lorsqu' | ||
- | La même avec le client SSH est : '' | + | La même avec le client SSH est : '' |
=====Saisir un mot de passe via SSH===== | =====Saisir un mot de passe via SSH===== | ||
Line 358: | Line 436: | ||
</ | </ | ||
+ | |||
+ | =====Connexion SSH via webproxy===== | ||
+ | |||
+ | Pour se connecter en SSH à travers un proxy web, disons " | ||
+ | <code bash ~/ | ||
+ | Host ssh-server | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Ainsi on se connectera simplement avec : '' | ||
+ | |||
+ | Depuis Windows il est plus facile d' | ||
=====Connexion SSH par rebond===== | =====Connexion SSH par rebond===== | ||
Line 415: | Line 505: | ||
| | ||
</ | </ | ||
+ | |||
+ | =====Connexion SSH par rebonds via webproxy===== | ||
+ | |||
+ | On mixe les astuces : on veut se connecter à CIBLE via un premier webproxy, puis un bastion SSH : | ||
+ | < | ||
+ | CLIENT ----- WEBPROXY(SOCKS 5) ----- BASTION ----- CIBLE | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | # on défini le mode de connexino à BASTION (via WEBPROXY sur le port 3128) | ||
+ | Host BASTION | ||
+ | Hostname BASTION.FQDN | ||
+ | ProxyCommand /bin/nc -X connect -x WEBPROXY: | ||
+ | # on défini le mode de connexion à CIBLE (via BASTION en passant la commande ProxyCommand) | ||
+ | Host CIBLE | ||
+ | Hostname CIBLE.FQDN | ||
+ | ProxyCommand ssh BASTION -W %h:%p | ||
+ | ProxyJump BASTION | ||
+ | </ | ||
+ | |||
+ | Depuis Windows, je n'ai pas trouvé de solution avec Putty qui ne gère pas '' | ||
=====Unable to negotiate...===== | =====Unable to negotiate...===== | ||
Line 431: | Line 542: | ||
</ | </ | ||
- | ou, plus pérenne, dans le fichier de préférences du client SSH : | + | Ou, plus pérenne, dans le fichier de préférences du client SSH : |
+ | <code bash ~/ | ||
+ | Host upgrayedd | ||
+ | KexAlgorithms +diffie-hellman-group1-sha1 | ||
+ | </ | ||
+ | |||
+ | Dans mon cas j' | ||
+ | <code bash> | ||
+ | ssh admin@upgrayedd | ||
+ | Unable to negotiate with 10.0.2.240 port 22: no matching host key type found. Their offer: ssh-dss | ||
+ | </ | ||
<code bash ~/ | <code bash ~/ | ||
Host upgrayedd | Host upgrayedd | ||
KexAlgorithms +diffie-hellman-group1-sha1 | KexAlgorithms +diffie-hellman-group1-sha1 | ||
- | # dans mon cas je doit aussi ajouter ça : | ||
HostKeyAlgorithms +ssh-dss | HostKeyAlgorithms +ssh-dss | ||
</ | </ | ||
Line 441: | Line 562: | ||
src: https:// | src: https:// | ||
+ | |||
+ | |||
+ | =====key_verify failed===== | ||
+ | |||
+ | Les vieilles croûtes - les vieilles machines - qui utilisent des vieilles implémentations de SSH peuvent bloquer votre client SSH : | ||
+ | <code bash> | ||
+ | ssh_rsa_verify: | ||
+ | key_verify failed for server_host_key | ||
+ | </ | ||
+ | |||
+ | Pour bypasser ce prérequis de sécurité (ce n'est pas conseillé mais on n'a pas toujours le choix), il faut préciser l' | ||
+ | <code bash> | ||
+ | ssh -1 vieille-croute | ||
+ | </ | ||
+ | |||
+ | =====Connexion en arrière-plan===== | ||
+ | |||
+ | Dans certains cas il peut être utile de lancer la connexion SSH en background, ce qui permet au terminal de rendre la main tout en conservant la connexion active. Cela se fait avec l' | ||
+ | <code bash> | ||
+ | ssh -f host xterm | ||
+ | </ | ||
+ | |||
+ | Pour faire une redirection de port, il faut ajouter '' | ||
+ | <code bash> | ||
+ | # sans -N | ||
+ | ssh -f -L 5901: | ||
+ | | ||
+ | |||
+ | ssh -f -N -L 5901: | ||
+ | </ | ||
+ | |||
+ | Et si l'on veut fermer la connexion après utilisation ? On ne peut pas, fallait réfléchir avant. | ||
+ | |||
+ | Bon, en fait, il suffit de killer le process SSH qui écoute sur le port redirigé localement, sur le client : | ||
+ | <code bash> | ||
+ | kill -9 $(ss -lnpt | awk ' $4 ~ /:5901$/ {sub(/ | ||
+ | </ | ||
+ | |||
+ | Mais openssh permet de faire les choses proprement, de (au moins) 2 manières : | ||
+ | - ne pas utiliser '' | ||
+ | - utiliser une connexion SSH en mode " | ||
+ | <code bash> | ||
+ | ssh -f -N -M -S < | ||
+ | # (utilisation de la connexion...) puis fermeture : | ||
+ | ssh -S < | ||
+ | </ | ||
+ | |||
+ | source: [[https:// | ||
+ | |||
+ | |||
+ | =====Connexion forcée par mot de passe===== | ||
+ | |||
+ | Pour forcer l' | ||
+ | |||
+ | On peut l' | ||
+ | |||
+ | <code bash> | ||
+ | ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no < | ||
+ | </ | ||
+ | |||
+ | Ces options peuvent se positionner dans le fichier de conf : **~/ | ||
====== Liens ====== | ====== Liens ====== | ||
[[http:// | [[http:// |
informatique/logiciels/ssh.txt · Last modified: 2024/04/05 06:59 by pteu