User Tools

Site Tools


informatique:logiciels:ssh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:ssh [2024/09/19 19:59] – [Notification sur Signal d'un login SSH] pteuinformatique:logiciels:ssh [2024/11/26 09:10] (current) – [SSH Keepalive] pteu
Line 421: Line 421:
 =====Connexion SSH via webproxy===== =====Connexion SSH via webproxy=====
  
-Pour se connecter en SSH à travers un proxy web, disons "proxy.corp" port "80" pour l'exemple, il faut ajouter l'option **ProxyCommand** à la commande de connexion : ''ssh -o "ProxyCommand=nc -X connect -x proxy.corp:80 %h %p" ssh-user@ssh-server''. Pour ne pas se fatiguer à le préciser à chaque fois, on peut l'ajouter à son ssh config :+Pour se connecter en SSH à travers un proxy web, disons "proxy.corp" port "80" pour l'exemple, il faut utiliser l'option **ProxyCommand** : ''ssh -o "ProxyCommand=nc -X connect -x proxy.corp:80 %h %p" ssh-user@ssh-server''. Pour ne pas se fatiguer à le préciser à chaque fois, on peut l'ajouter à son ssh config :
 <code bash ~/.ssh/config> <code bash ~/.ssh/config>
 Host ssh-server Host ssh-server
Line 430: Line 430:
  
 Depuis Windows il est plus facile d'utiliser le petit [[informatique:logiciels:putty|Putty]], en renseignant le menu Connection/Proxy (remplir le Proxy hostname et Port), il fera le taf tout seul. Depuis Windows il est plus facile d'utiliser le petit [[informatique:logiciels:putty|Putty]], en renseignant le menu Connection/Proxy (remplir le Proxy hostname et Port), il fera le taf tout seul.
 +
 +<WRAP center round important 80%>
 +Certaines versions de netcat (nc) ne possèdent pas l'option **-X** et provoquent l'erreur : ''/bin/nc: invalid option <nowiki>--</nowiki> 'X' ''
 +C'est le cas sous CentOS/Rocky Linux par exemple. On peut le contourner avec d'autres options :
 +<code bash>
 +ProxyCommand nc --proxy-type http --proxy proxy.corp:80 %h %p
 +</code>
 +</WRAP>
 +
  
 =====Connexion SSH par rebond===== =====Connexion SSH par rebond=====
Line 631: Line 640:
  
 Pour recevoir une notification lorsqu'un utilisateur se log en SSH sur un serveur, [[https://aussedatlo.me/posts/14-ssh-signal-notifications|voici un article]] qui décrit la mise en place de : Pour recevoir une notification lorsqu'un utilisateur se log en SSH sur un serveur, [[https://aussedatlo.me/posts/14-ssh-signal-notifications|voici un article]] qui décrit la mise en place de :
-  * une ligne de configuration dans pam.d pour catcher l'événement login+  * une ligne de configuration dans **pam.d** pour catcher l'événement login
   * un script générant le message de notification et l'appel REST vers...   * un script générant le message de notification et l'appel REST vers...
-  * un conteneur docker : bbernhard/signal-cli-rest-api servant de passerelle vers signal via ne API REST +  * un conteneur docker : [[https://github.com/bbernhard/signal-cli-rest-api|bbernhard/signal-cli-rest-api]] servant de passerelle vers Signal via une API REST 
-Ce dernier nécessite l’appairage avec un compte Signal existant+Ce dernier nécessite l’appairage avec un compte Signal existant.
  
-NB : j'ai rencontré des erreurs avec la version signal-cli-rest-api:latest actuelle de l'image docker, aussi [[https://github.com/bbernhard/signal-cli-rest-api/issues/564|sur recommandation de l'auteur bbernhard]] j'ai utilisé la version 0.167-dev,qui génère une erreur mais envoie quand même le message ! En personnalisant également le réseau du conteneur, ça donne ce compose :+NB : j'ai rencontré des erreurs avec la version **signal-cli-rest-api:latest** actuelle (17/09/2024) de l'image docker, aussi [[https://github.com/bbernhard/signal-cli-rest-api/issues/564|sur recommandation de l'auteur bbernhard]] j'ai utilisé la version **0.167-dev**, qui génère une erreur mais envoie quand même le message ! En personnalisant également le réseau du conteneur, ça donne ce compose :
 <code yaml docker-compose.yml> <code yaml docker-compose.yml>
 version: "3" version: "3"
Line 647: Line 656:
       - br-sig       - br-sig
     environment:     environment:
-      - MODE=native #supported modes: json-rpc, native, normal+      - MODE=native #supported modes: json-rpc, native, normal (by speed order)
     ports:     ports:
       - "8081:8080" #map docker port 8081 to host port 8080.       - "8081:8080" #map docker port 8081 to host port 8080.
Line 661: Line 670:
 <code bash /root/login.sh> <code bash /root/login.sh>
 #!/bin/sh #!/bin/sh
-# adapté de : https://aussedatlo.me/posts/14-ssh-signal-notifications 
 # envoyer une notif signal lors d'un login # envoyer une notif signal lors d'un login
 NUMBER="+336xxxxxxxx" NUMBER="+336xxxxxxxx"
 URL=http://localhost:8081 URL=http://localhost:8081
-MESSAGE="New device connexion on $(date +"%d/%m/%Y %H:%M:%S")\nUser: ${PAM_USER} ; Ip: ${PAM_RHOST}"+MESSAGE="New connexion by ${PAM_USER} on $(hostname -s)\nDate: $(date +"%d/%m/%Y %H:%M:%S")Ip: ${PAM_RHOST}"
  
 if [ "$PAM_TYPE" != "close_session" ]; then if [ "$PAM_TYPE" != "close_session" ]; then
Line 673: Line 681:
 </code> </code>
  
-Et ce "hook" (ajouter le ligne à la fin du fichier :+Et ce "hook" (ajouter le ligne à la fin du fichier **/etc/pam.d/sshd**) :
 <code bash /etc/pam.d/sshd> <code bash /etc/pam.d/sshd>
 session optional pam_exec.so seteuid /root/login.sh session optional pam_exec.so seteuid /root/login.sh
 +</code>
 +
 +=====SSH Keepalive=====
 +
 +Afin d'éviter les coupures de connexion SSH, il est possible de définir des "keepalive", des messages vides envoyés à intervalles réguliers dans le but de détecter une coupure de connexion mais aussi d'éviter à celle-ci de tomber en timeout pour inactivité. On peut définir l'intervalle d'envoi de ces messages (AliveInterval) ainsi que le nombre de message que l'on peut perdre avant de considérer que la connexion est tombée (AliveCountMax).
 +
 +Cela peut se configurer côté client, dans le fichier **~/.ssh/config** pour une portée discrète (uniquement la connexion vers le serveur "serveur-ssh" ou dans le fichier **/etc/ssh/ssh_config** pour une portée globale (cela affectera toutes les connexions SSH) :
 +<code bash ~/.ssh/config>
 +Host serveur-ssh
 +   ServerAliveInterval 300
 +   ServerAliveCountMax 2
 +</code>
 +
 +Comme d'hab les paramètres peuvent aussi se définir au moment de la commande SSH avec l'option ''-o'' :
 +<code bash>
 +ssh -o ServerAliveInterval=300 -o ServerAliveCountMax=2 serveur-ssh   
 +</code>
 +
 +Côté serveur, cela se définit dans le fichier **/etc/ssh/sshd_config** ; c'est assez ressemblant, et cela affectera tous les clients :
 +<code bash /etc/ssh/sshd_config>
 +ClientAliveInterval 300
 +ClientAliveCountMax 2
 </code> </code>
 ====== Liens ====== ====== Liens ======
  
 [[http://people.via.ecp.fr/~alexis/formation-linux/export-display.html|formation Linux]] [[http://people.via.ecp.fr/~alexis/formation-linux/export-display.html|formation Linux]]
informatique/logiciels/ssh.1726775944.txt.gz · Last modified: 2024/09/19 19:59 by pteu