Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
sysadmin:tips:ssh [2010/10/22 15:41]
james créée
sysadmin:tips:ssh [2017/10/27 17:53] (Version actuelle)
james ajout fix fermeture connexion ssh systemd halt/reboot
Ligne 1: Ligne 1:
 +{{tag>​SSH verification clef forward port keepalive}}
 ====== SSH ====== ====== SSH ======
  
Ligne 5: Ligne 6:
 ==== Dire a SSH ne ne pas vérifier la clef de l'hote localhost ​ ==== ==== Dire a SSH ne ne pas vérifier la clef de l'hote localhost ​ ====
  
-Si comme moi vous êtes friands de tunnels SSH et/ou que vous changez fréquemment de machine en utilisant le même homedir (NFS par exemple), SSH se plains ​que la clef a changé, ce qui vous oblige a la supprimer du fichier ~/​.ssh/​known_hosts.\\ La solution est de rajouter dans votre configuration SSH //​NoHostAuthenticationForLocalhost yes// +Si comme moi vous êtes friands de tunnels SSH et/ou que vous changez fréquemment de machine en utilisant le même homedir (NFS par exemple), SSH se plaint ​que la clef a changé, ce qui vous oblige a la supprimer du fichier ~/​.ssh/​known_hosts.\\ La solution est de rajouter dans votre configuration SSH //​NoHostAuthenticationForLocalhost yes// 
-<​code>​echo "​NoHostAuthenticationForLocalhost yes">>​ ~/​.ssh/​config</​code><​note>​Cela diminue bien sur la sécurité concernant l'​accès aux machines accédées par "ssh localhost"​ : machines locales et machines accédées via tunnel</​note>​+<​code>​echo "​NoHostAuthenticationForLocalhost yes">>​ ~/​.ssh/​config</​code><​note ​important>Cela diminue bien sur la sécurité concernant l'​accès aux machines accédées par "ssh localhost"​ : machines locales et machines accédées via tunnel</​note
 + 
 +==== Dire a SSH ne se connecter malgré que la clef ne soit pas celle qu'on attend ​ ==== 
 + 
 +<note warning>​Attention,​ n'​utilisez ceci (surtout couplé a une authentification par mot de passe) uniquement si vous êtes **certains** que vous communiquez avec la bonne machine</​note>​ 
 + 
 +Il peut etre utile, par exemple lorsqu'​on démarre une machine sur un liveCD pour s'y connecter en SSH de completement désactiver temporairement la vérification de clef : la clef connue ne correspond alors pas a la clef habituelle de la machine. Pour ce faire, on peut utiliser la comande suivante pour se connecter : 
 +<​code>​ssh -o UserKnownHostsFile=/​dev/​null -o StrictHostKeyChecking=no utilisateur@machine.mondomaine.com</​code>​ 
 + 
 +Comme toujours avec SSH il est possible d'​activer ces options par machine dans le fichier ~/​.ssh/​config,​ en y ajoutant par exemple :<​code>​ 
 +Host machine 
 +Hostname machine.mondomaine.com 
 +User utilisateur 
 +HostKeyAlias machine 
 +StrictHostKeyChecking no 
 +UserKnownHostsFile ​     /dev/null 
 +</code>
  
 ==== Eviter les deconnexions automatiques en simulant de l'​activité reseau ==== ==== Eviter les deconnexions automatiques en simulant de l'​activité reseau ====
Ligne 15: Ligne 32:
  
 Vous pouvez ajouter cette directive en global ou seulement pour un hôte/​groupe d'​hôte donné. Vous pouvez ajouter cette directive en global ou seulement pour un hôte/​groupe d'​hôte donné.
 +
 +==== Ajouter a la volée un forward de port ====
 +
 +Il est possible avec SSH d'​ajouter a la volée un nouveau foward de port (ou d'en supprimer un) sans avoir a ouvrir une nouvelle connexion.
 +Pour se faire SSH fournit un //Escape Character// qui permet d'​effectuer des actions sur la connexion en cours. Par défaut ce caractère est ~ , mais vous pouvez en spécifier un autre via la directive //​EscapeChar//​ dans votre configuration.
 +
 +Il existe plusieurs actions possibles en utilisant ce caractère spécial.
 +Par exemple :
 +^Caracteres tapés ^ action|
 +|~.| Termine la connexion SSH en cours (utile pour récupérer votre terminal local si vous avez eu une déconnexion réseau brutale)|
 +|~?| Affiche la liste des actions possibles avec leur usage |
 +|~#| Liste les forward de port actuels|
 +|~C| Ouvre un shell interne au SSH pour vous permettre de gérer les forward de port à la volée |
 +
 +
 +C'est donc cette derniere directive qui va nous être utile ici :<​code>​ssh>​ help
 +Commands:
 +      -L[bind_address:​]port:​host:​hostport ​   Request local forward
 +      -R[bind_address:​]port:​host:​hostport ​   Request remote forward
 +      -D[bind_address:​]port ​                 Request dynamic forward
 +      -KR[bind_address:​]port ​                ​Cancel remote forward
 +</​code>​
 +
 +Pour ajouter un forward de port, il faut donc utiliser ~C , puis taper au prompt ssh> :<​code>​
 +-L 8080:​localhost:​8080</​code>​
 +
 +Cette syntaxe est donc la même que si vous aviez spécifié ce forward sur la ligne de commande. Appuyer ensuite sur entrée pour quitter ce shell.
 +
 +
 +Vous devriez donc avoir a l'​écran quelque chose de similaire à :<​code>​
 +ssh> -L 4242:​localhost:​4242
 +Forwarding port.</​code>​
 +
 +<note important>​Attention,​ il faut que le caractère d'​échappement soit tapé au **début** d'une ligne, le plus simple pour en être sûr est donc d'​appuyer avant sur la touche entrée, ce qui nous donne donc par exemple "​Entree",​ "Alt Gr+2", "​Shift+?"​ pour afficher l'​aide.</​note>​
 +
 +
 +===== serveur SSH =====
 +{{tag>​SSH halt reboot connexion hang systemd jessie}}
 +
 +==== sshd et systemd sont dans un bateau ====
 +Suite au passage plus ou moins volontaire a systemd, par exemple en mettant a jour votre Debian en stretch, il arrive souvent que lorsqu'​on fait un halt/reboot de machine, le SSH ne rende pas la main avant que ca tranche inexorablement.
 +
 +
 +Pour fermer la sessions SSH proprement automatiquement :
 +en gros systemd essaye de tout fermer le plus rapidement possible, et dans son infinie précipitation il coupe d'​abord le réseau avant de penser à fermer ce qui l'​utilisait : par exemple les sessions SSH qui ne pourront donc plus se fermer correctement ... sans réseau.
 +
 +Du coup pour avoir une fermeture correcte de tout le bousin, il faut que systemd-logind soit tenu au courant (via dbus) que la session SSH doit etre fermée.
 +
 +En un mot il faut donc installer //​libpam-systemd//​ et //dbus// , ce qui peut se faire grâce a la commande suivante :<​code>#​ apt-get install libpam-systemd dbus</​code>​
 +
  
  
sysadmin/tips/ssh.1287754917.txt.gz · Dernière modification: 2010/10/22 15:41 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0