Accueil Logiciels
routeur4g.fr est financé par ses lecteurs. Quand vous achetez en passant par les liens du site, nous pouvons toucher une commission d’affiliation.

[RESOLU] reverse SSH configuration

thierryRthierryR Membre Messages: 36
Modifié (mars 2020) dans Logiciels
Bonjour. J'ai un petit souci de configuration en reverse SSH. Je vous joins un dessin. J'espère qu'il sera explicite. La connexion ne fonctionne pas en reverse. Je me mélange un peu les pinceaux. (C'est ma 1ere)
Message edité par ludovick on

Réponses

  • dupratpierre11dupratpierre11 Membre Messages: 59
    Modifié (février 2020)
    bonjour Thierry,

    Dur de répondre avec les infos fournies...
    Pourquoi veux tu faire du "reverse ssh" ?
    tu n'as pas possibilité de configurer du "port forwarding" sur la BOX-Fibre ?
    • Attention chez certain opérateur (Free par exemple) :
            Sur le cœur de réseau 4g  les PDN gateways n'allouent pas aux équipements mobiles (ton routeur 4g)  d'adresse IP publique (redoutable sur Internet). Tu ne pourras donc pas initier de conversation IP (depuis ton rasberry derrière la box-fibre) vers ta machine "PC thierry"  (qui est derrière ta box 4G).

    Si c'est ton cas de figure, tu seras obligé de configurer de la redirection de port sur ta box-fibre pour que ton rasberry soit accessible en ssh depuis Internet (est donc ne plus faire de "reverse ssh")...

    Message edité par ludovick on
  • dupratpierre11dupratpierre11 Membre Messages: 59
    Modifié (février 2020)

    Ci-après, un complément d’information essayant d’expliquer pourquoi ta construction réseau actuelle ne peut fonctionner (si ta Box-4G n'a pas d'@IP publique sur sa patte WAN) :

    Sur le cœur de réseau 4G, la fonction de NAT de type NAPT (suivant la terminologie RFC 2663 :  le NAT présent sur nos box Internet en somme) est soit portée par la passerelle PGW ou soit par un équipement en aval (c.à.d. plus près du réseau public) : un CGN (carrier Grade NAT)

    Cet équipement Nattant (PGW ou CGN), portant ton adresse IP publique sur son interface publique, lorsqu’il va recevoir le paquet IP que lui adresse ton rasberry (paquet qui a bien sûr au préalable été source-natté par ta box-fibre à la traversé de celle-ci), ne sera pas quoi faire de ce paquet.

    Il aurait fallu pour qu’il en soit autrement, qu’une règle de NAT unidirectionnelle de type 1 pour 1 avec éventuellement translation de port (l’équivalent du port forwarding de nos box) soit spécifiquement implémentée pour toi sur l’équipement opérateur (ce qui n’est pas le cas bien sûr !)

    Conclusion : tout paquet IP initiant un nouvel échange et envoyé par ton rasberry à destination de ton réseau (celui qui est derrière ta box 4G) sera stoppé par cet équipement Nattant.






  • thierryRthierryR Membre Messages: 36
    Bonjour et merci de vos indications. Je vais essayer d'en dire plus. (Je ne suis pas informaticien) L'IP externe de ma box 4G est aujourd'hui 37.171.84.94%.  Cette adresse n'est pas public. Pour contourner ce problème il y a 2 solutions. Soit faire un VPN, soit faire du reverse SSH. Étant plus à l'aise dans le SSH j'ai tenté la 2e solution. Du simple SSH (en jaune dans la diapo4) fonctionne parfaitement. Je partais du principe que si j'ouvre une liaison dans un sens, on peut l'utiliser dans l'autre. Là vous me mettez le doute... Serais je dans l'erreur ? Pour en arriver là je me suis servi d'un tuto d'ici. Ce tuto utilise des IP qui ne sont pas celles indiquées sur les illustrations.J'ai donc pleins d'hésitations, mais j'aimerais quand même essayer.

    https://routeur4g.fr/discussions/discussion/1882/tuto-acceder-a-son-lan-derriere-un-routeur-4g-depuis-lexterieur-avec-ssh

    Ce que j'ai fait au niveau fonctionnement:

    Le tout commence dans le crontab au boot:

    @reboot    root    export AUTOSSH_POLL=30; /usr/lib/autossh/autossh -M 20000 -C -N -f -n -T -p 1957 -R \*:1922:192.168.8.57:22 revssh@sauvegarde:1957
    Là je ne sais pas si la communication est établie. Comment la vérifier ?

    Si je refais une 2e liaison SSH vers le "raspi thierry" sur le port 1957,  est ce que je ne vais pas faire disjoncter ma 1ere connexion? Dans ce schéma, je demande au "PC isabelle" de se connecter sur le "raspi thierry" sur le port 1922. Normalement, je devrais passer le tunnel, mais encore une fois: Comment vérifier ?

  • oga83oga83 Membre Messages: 1121
    Modifié (février 2020)
    @dupratpierre11 C'est certainement la raison pour laquelle il veut faire du reverse-ssh
    @thierryR Tu as déjà lu ce tuto, mais tu n'as pas répondu à cette question. Difficile de t'aider sans plus de précisions...
    [EDIT] Nos posts ont été faits quasiment en même temps et je n'avais pas vu le tien...
    Message edité par oga83 on
  • oga83oga83 Membre Messages: 1121
    Modifié (février 2020)
    Tu as bien compris le principe. L'idée est d'effectuer une connexion sortante ssh et de créer un tunnel 'reverse' pour pouvoir effectuer des connexions entrantes (et contourner la restriction du réseau privé).
    Ta commande crontab effectue une connexion ssh vers le serveur 'sauvegarde' et crée un tunnel (sur le port 1922) vers ton serveur local (port 22).
    Comment le vérifier ?
    - Vérifie d'abord que le serveur ssh local fonctionne bien avec ton user revssh avec "ssh revssh@serveurlocal"
    - Si tu fais un "ps -ef | grep ssh", tu dois trouver ta commande ssh (lancée par autossh)
    - Si tu fais un "nmap -sT -p 1922 sauvegarde", il doit te dire que le port est ouvert.
    - Si tu fais un "ssh -p 1922 sauvegarde", tu dois être capable de te connecter en ssh au serveur local (celui où tu as configuré autossh) : le port 1922 est routé vers le port 22 du serveur local
    Supprime le :1957 à la fin de ta commande crontab. Le port est déjà indiqué avec l'option -p.
  • oga83oga83 Membre Messages: 1121
    Par ailleurs, il est fortement recommandé de configurer le serveur ssh pour qu'il n'accepte que les connexions par clef privée. Il y a plein de tutos sur le net. En résumé :
    - créer une clef sur le client : ssh-keygen -t rsa
    - copier la clef publique sur le serveur dans authorized_keys
    - ajuster sshd_config sur le serveur avec "RSAAuthentication yes", "PubkeyAuthentication yes" et "StrictModes yes"






  • thierryRthierryR Membre Messages: 36
    Merci oga83. Je traîne depuis longtemps dans les liaisons SSH et je limite, les user ( AllowUser)  puis je fonctionne uniquement par clé. Toutes les clés fonctionnent. Je vais me servir de tes indications pour faire des vérifications. Je reviens.
  • thierryRthierryR Membre Messages: 36
    1) J'ai corrigé le crontab comme indiqué.
    2)
    ssh revssh@sauvegarde -p1957<br>revssh@sauvegarde: Permission denied (publickey).
    Serait ce du au fait que revssh ne peut pas se loguer ( Modif du passwd) ? pourtant une clé lui a été fournie. Elle est dans son /home, mais du fait de sa configuration, il me semble qu'il n'accède à aucun /home/


  • thierryRthierryR Membre Messages: 36
    Je crois avoir une bonne nouvelle
    &nbsp;sudo nmap -sT -p 1922 sauvegarde<br>Starting Nmap 7.70 ( https://nmap.org ) at 2020-02-21 14:09 CET<br>Nmap scan report for sauvegarde (93.9.196.72)<br>Host is up (0.062s latency).<br><br>PORT&nbsp;&nbsp;&nbsp;&nbsp; STATE&nbsp;&nbsp;&nbsp; SERVICE<br>1922/tcp filtered tapestry



  • thierryRthierryR Membre Messages: 36
    Et ça doit être là que ça coince
    &nbsp;ssh -p 1922 sauvegarde<br>ssh: Could not resolve hostname sauvegarde: No address associated with hostname<br>


  • oga83oga83 Membre Messages: 1121
    Modifié (février 2020)
    thierryR a dit :
    ssh revssh@sauvegarde -p1957<br>revssh@sauvegarde: Permission denied (publickey).
    Pour la clef, le mieux est d'ajouter l'option -i dans la ligne autossh du crontab (du style "-i /home/user/.ssh/clef.privee"). Comme ça, tu sais exactement quelle clef il va chercher.

    thierryR a dit :
    Et ça doit être là que ça coince
    &nbsp;ssh -p 1922 sauvegarde<br>ssh: Could not resolve hostname sauvegarde: No address associated with hostname<br>
    Pour la résolution du nom, soit tu utilises un nom dns, soit, si tu es en local, une ligne dans /etc/hosts, soit directement l'adresse ip. Pour essayer, essaye directement avec l'adresse ip.

    thierryR a dit :
    Je crois avoir une bonne nouvelle
    &nbsp;sudo nmap -sT -p 1922 sauvegarde<br>Starting Nmap 7.70 ( https://nmap.org ) at 2020-02-21 14:09 CET<br>Nmap scan report for sauvegarde (93.9.196.72)<br>Host is up (0.062s latency).<br><br>PORT&nbsp;&nbsp;&nbsp;&nbsp; STATE&nbsp;&nbsp;&nbsp; SERVICE<br>1922/tcp filtered tapestry
    Pas vraiment une bonne nouvelle... le port devrait être en "open", pas "filtered" :
    # nmap -sT -p 22 127.0.0.1<br>Starting Nmap 6.47 ( http://nmap.org ) at 2020-02-21 17:13 CET<br>Nmap scan report for localhost (127.0.0.1)<br>Host is up (0.0027s latency).<br>PORT&nbsp;&nbsp; STATE SERVICE<br>22/tcp open&nbsp; ssh<br>





  • thierryRthierryR Membre Messages: 36
    A force de creuser, je vais trouver du pétrole. Voici en détail ce que j'ai fait.
    Depuis "raspi isabelle"
    <div>autossh -M 20000 -C -N -f -n -T -R \*:1922:192.168.8.56:22 revssh@sauvegarde -p1957<br></div>
    J'ai vérifié la commande:
    ps -ef | grep ssh<br>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 348&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:43 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 /usr/sbin/sshd -D<br>pi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 507&nbsp;&nbsp; 466&nbsp; 0 14:44 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 /usr/bin/ssh-agent x-session-manager<br>pi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 553&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:44 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 /usr/bin/ssh-agent -s<br>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 848&nbsp;&nbsp; 348&nbsp; 0 14:45 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 sshd: thierry [priv]<br>thierry&nbsp;&nbsp;&nbsp; 850&nbsp;&nbsp; 848&nbsp; 0 14:45 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 sshd: thierry@pts/0<br>thierry&nbsp;&nbsp; 1211&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 17:23 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 /usr/lib/autossh/autossh -M 20000 -C -N&nbsp;&nbsp;&nbsp; -n -T -R *:1922:192.168.8.56:22 revssh@sauvegarde -p1957<br>thierry&nbsp;&nbsp; 1240&nbsp;&nbsp; 852&nbsp; 0 17:29 pts/0&nbsp;&nbsp;&nbsp; 00:00:00 grep --color=auto ssh<br>
    Puis je suis allé sur "PC isabelle"
    nmap -sT -p 1922 192.168.1.57<br>Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-21 17:30 CET<br>Nmap scan report for sauvegarde (192.168.1.57)<br>Host is up (0.00078s latency).<br><br>PORT&nbsp;&nbsp;&nbsp;&nbsp; STATE SERVICE<br>1922/tcp open&nbsp; tapestry<br><br>Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
    Apparemment tout semble bon jusque là. Alors je me suis lancé du PC isabelle

    ssh -p 1922 sauvegarde<br>Linux raspi-thierry 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>Last login: Fri Feb 21 17:24:27 2020 from 192.168.1.205<br>isabelle@raspi-thierry:~ $ 
    Raté, je n'ai pas passé le tunnel.
    Serait ce du au fait que j'ai ouvert le port 1922 dans sshd_config ?



  • dupratpierre11dupratpierre11 Membre Messages: 59
    Modifié (février 2020)

     

    Je n’ai jamais pratiqué l’option –R de SSH, mais je me lance qd même dans quelques explications  :) Sommes-nous d’accord avec celles-ci ? Vos remarques et corrections sont les biens venues.

    @ip RASPI-isa = 192.168.8.57 (et pas .56 comme sur ton schéma…)

    Non ?

    @ip RASPI-thierry = 192.168.1.57

    autossh -M 20000 -C -N -f -n -T -p 1957 –R \*:1922:192.168.8.57:22  revssh@sauvegarde 

    Cette commande crée une connexion SSH sur la machine « rapi-thierry » sur le port 22. (« sauvegarde » est résolu en l’adresse IP publique fixe de la box-fibre). La box fibre réalise du « port forwarding » pour le trafic venant du WAN comme cela :

    @ip public de la box fibre:1957 -> 192.168.1.57:22  

    Cette connexion SSH va par la suite servir de tunnel (SSH) pour encapsuler une autre connexion TCP (initié, celle-là, depuis le site derrière la box-fibre).

    Ainsi toutes connections TCP, d’un hôte du réseau derrière la box-fibre, sur le port 1922 de « raspi-thierry» est forwardé au travers du tunnel ssh, monté préalablement, jusqu’à l’hôte 192.168.8.57 sur le port 22.

    Tant que le tunnel reste UP et en se situant sur le site derrière la box fibre, pour se connecter en TCP sur le "raspi isa" (192.168.8.57:22) il suffit de se connecter au port 1957 du rasberry local au site (le rapi-thierry)

    et bien sur un démon SSH est à l’écoute sur le port 22 de "raspi isa"

    Ainsi en étant sur le "Raspi-Thierry" pour ouvrir un shell distant sur le "Raspi-isa" il suffit de lancer la commande :

    ssh -p 1922 192.168.1.57ssh -p 1922 localhost ou bien  


    on est d'accord ?

    PS : ton serveur local pourrait dans l'absolu être  n'importe que serveur sur le site derrière la box 4G. Mais dans ton cas de figure tu as choisi serveur local = "raspi isa"

    Finalement ton  besoin est donc bien de pouvoir ouvrir un shell distant vers "raspi isa" depuis  "raspi thierry" ou bien depuis "PC isabelle"?


    Message edité par dupratpierre11 on
  • oga83oga83 Membre Messages: 1121

     Finalement ton  besoin est donc bien de pouvoir ouvrir un shell distant vers "raspi isa" depuis  "raspi thierry" ?

    La finalité est d'ouvrir des ports accessibles de l'extérieur via un serveur tiers public.
    On peut s'en servir pour ouvrir un shell mais c'est juste un cas particulier.
    Ici, ssh est principalement utilisé pour créer des reverse-tunnels (c'est à dire un tunnel extérieur->intérieur qui est initiée de l'intérieur).
    Voir le tuto sur reverse-ssh.
    Pour une utilisation en partage de port sans shell, il est généralement conseillé de paramétrer l'utilisateur utilisé en nologin, ou encore mieux, en rssh (cela permet de faire du scp, rsync, sftp, ... sans shell).



  • oga83oga83 Membre Messages: 1121
    Modifié (février 2020)
    thierryR a dit :

    Serait ce du au fait que j'ai ouvert le port 1922 dans sshd_config ?
    Tu as certainement répondu toi même à ta question :)
    Un paquet qui arrive sur le port 1922 ne peut aller qu'à un seul endroit : sshd ou ton tunnel.
    Si le port 1922 est pris par sshd, ton reverse tunnel ne peut pas être créé.
    Tu devrais avoir un warning si tu lances "ssh -R" pour créer le tunnel à la main (au lieu de crontab).
    Un petit schéma serait le bienvenu, car mélanger les noms ("raspi-xxx"), hostname ("sauvegarde") et adresse ip n'est pas facile à suivre
  • oga83oga83 Membre Messages: 1121
    Tu as bien compris que pour que tes reverse-tunnels fonctionnent de l'extérieur, il faut que le serveur utilisé en relais soit accessible de l'extérieur ?
    Comme "Serveur externe" sur ce schéma :


  • thierryRthierryR Membre Messages: 36

     

    Je n’ai jamais pratiqué l’option –R de SSH, mais je me lance qd même dans quelques explications  :) Sommes-nous d’accord avec celles-ci ? Vos remarques et corrections sont les biens venues.

    @ip RASPI-isa = 192.168.8.57 (et pas .56 comme sur ton schéma…)

    Non ?  La bonne

    @ip RASPI-thierry = 192.168.1.57

    autossh -M 20000 -C -N -f -n -T -p 1957 –R \*:1922:192.168.8.57:22  revssh@sauvegarde 

    Cette commande crée une connexion SSH sur la machine « rapi-thierry » sur le port 22. (« sauvegarde » est résolu en l’adresse IP publique fixe de la box-fibre). La box fibre réalise du « port forwarding » pour le trafic venant du WAN comme cela :

    @ip public de la box fibre:1957 -> 192.168.1.57:22  

    Cette connexion SSH va par la suite servir de tunnel (SSH) pour encapsuler une autre connexion TCP (initié, celle-là, depuis le site derrière la box-fibre).

    Ainsi toutes connections TCP, d’un hôte du réseau derrière la box-fibre, sur le port 1922 de « raspi-thierry» est forwardé au travers du tunnel ssh, monté préalablement, jusqu’à l’hôte 192.168.8.57 sur le port 22.

    Tant que le tunnel reste UP et en se situant sur le site derrière la box fibre, pour se connecter en TCP sur le "raspi isa" (192.168.8.57:22) il suffit de se connecter au port 1957 du rasberry local au site (le rapi-thierry)

    et bien sur un démon SSH est à l’écoute sur le port 22 de "raspi isa"

    Ainsi en étant sur le "Raspi-Thierry" pour ouvrir un shell distant sur le "Raspi-isa" il suffit de lancer la commande :

    ssh -p 1922 192.168.1.57ssh -p 1922 localhost ou bien  


    on est d'accord ?

    PS : ton serveur local pourrait dans l'absolu être  n'importe que serveur sur le site derrière la box 4G. Mais dans ton cas de figure tu as choisi serveur local = "raspi isa"

    Finalement ton  besoin est donc bien de pouvoir ouvrir un shell distant vers "raspi isa" depuis  "raspi thierry" ou bien depuis "PC isabelle"?


    Bonjour Pierre. Je vois que tu es quelqu'un de pointu. J'espère que tu me pardonnera mon inexpérience, compensée par ma curiosité....
    Je te confirme quelques paramètres.

    @ip RASPI-isa = 192.168.8.56
    @ip RASPI-thierry = 192.168.1.57
    /usr/lib/autossh/autossh -M 20000 -C -N    -n -T -R *:1922:192.168.8.56:22 revssh@sauvegarde -p1957
    @ip public de la box fibre:1957 -> 192.168.1.57:22

    Ainsi en étant sur le "Raspi-Thierry" pour ouvrir un shell distant sur le "Raspi-isa" il suffit de lancer la commande :

    ssh -p 1922 192.168.1.57ssh -p 1922 localhost ou bien  
    OK en théorie. Dans la pratique ça coince, et je trouve pas l'erreur. Comme c'est compliqué à expliquer j'ai fait un dessin.
    La même commande depuis PC isabelle serait
    ssh isabelle@192.168.1.57 -p1922 
    On est d'accord ?
    Pour @oga83, je retire le port 1922 de sshd.
    Sur RASPI-thierry
    ssh -p 1922 localhost<br>ssh: connect to host localhost port 1922: Connection refused






  • oga83oga83 Membre Messages: 1121
    Ton schéma est assez clair.
    Ta commande reverse-ssh semble correcte : tu crée un tunnel entre raspi-thierry:1922 et Raspi-Isa:22
    Le fait que la connexion sur sauvegarde à partir du PC isabelle ne passe pas le tunnel montrait bien que le sshd sur Raspi-Isa interceptait le port. Si tu l'as supprimé du sshd_config, ça devrait maintenant marcher.

    Pour trouver où ça coince, utilise netstat sur raspi-thierry pour voir qui ouvre le port 1922.
    Vérifie également que la redirection de port sur la box fibre est correcte (1957 -> raspi-thierry:1922, c'est à dire le port sshd de raspi_thierry).
    As-tu essayer de lancer le "ssh -R ..." à la main depuis Raspi-Isa pour vérifier que le tunnel est créé ?

    Juste un détail mais qui n'explique pas le non-fonctionnement : tu peux simplifier ta commande autossh avec -R \*:127.0.0.1:22 puisque tu pointes vers localhost (127.0.0.1 <=> 192.168.8.56 sur Raspi-Isa).



  • thierryRthierryR Membre Messages: 36
    Modifié (février 2020)
    Je suis obligé d'arrêter pour ce soir. Mon cerveau est en train de s'endormir. Bonne nuit.
    Message edité par ludovick on
  • thierryRthierryR Membre Messages: 36
    Modifié (février 2020)
    Bonjour.
    J'établis une 1ere connexion
    ssh -XC thierry@sauvegarde -p1957<br>Linux raspi-thierry 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>Last login: Fri Feb 21 23:41:52 2020 from 37.170.23.104
    Jusque là tout va bien.

    J'établis le tunnel qui ne fonctionne pas en effet.
    <div>sudo ssh -R \*:1922:localhost:22 revssh@sauvegarde -p1957<br>revssh@sauvegarde's password: <br>Permission denied, please try again.<br>revssh@sauvegarde's password: <br>^c<br></div>
    En même temps ma connexion précédente disjoncte
    Connection to sauvegarde closed by remote host.<br>Connection to sauvegarde closed.

    Ca casse l'entrée sur la box fibre. On ne peut plus se reconnecter:
    sudo ssh&nbsp; revssh@sauvegarde -p1957<br>ssh: connect to host sauvegarde port 1957: Connection refused<br>
    ssh -XC thierry@sauvegarde -p1957<br>ssh: connect to host sauvegarde port 1957: Connection refused

    Message edité par ludovick on
  • oga83oga83 Membre Messages: 1121
    Modifié (février 2020)
    Ton utilisateur revssh n'a vraisemblablement pas la permission de se connecter à "sauvegarde" en ssh puisque tu n'arrives pas à ouvrir de session (alors que ça marche avec l'utilisateur thierry).
    Essaye simplement un "ssh revssh@sauvegarde".
    Si ça ne marche pas :
    - Soit revssh est en nologin ou rssh dans /etc/passwd (ce qu'il est conseillé de faire au final). Dans ce cas, il faut utiliser l'option "-n" dans la commande ssh. Sinon, ssh essaye de lancer un shell mais comme il n'a pas les permissions, cela échoue.
    - Soit tu as une restriction AllowUsers dans sshd_config (par défaut, tous les utilisateurs peuvent se connecter en ssh).
    - Vérifie si /var/log/auth.log donne plus d'info

    Ensuite, si la connexion ssh avec revssh fonctionne mais que le reverse-tunnel ne marche toujours pas, il faut vérifier que revssh a bien les permissions pour forwarder les ports dans un tunnel.
    Pour cela, je rajouterai la permission de manière explicite à ton utilisateur revssh dans le sshd_config de "sauvegarde" :
    <div>Match user revssh<br>&nbsp; AllowTcpForwarding yes<br></div><div></div>
    Quand le tunnel marchera correctement, pour plus de sécurité, tu pourras également enfermer revssh dans une bulle chroot en ajoutant une commande ChrootDirectory dans la section "Match user" ci-dessus

  • thierryRthierryR Membre Messages: 36
    Voici quelques résultats.
    Le user revssh est paramétré en rssh comme dans l'exemple du tuto.
    Dans paswwd:
    revssh:x:1003:1003::/home/revssh:/bin/rssh
    J'ai donc essayé avec l'option -n
    ssh -n revssh@sauvegarde -p1957<br>Pseudo-terminal will not be allocated because stdin is not a terminal.<br>revssh@sauvegarde's password: <br>Permission denied, please try again.<br>revssh@sauvegarde's password: 
    Il n'y a rien dans les logs car la connexion n'est pas établie, mais la console est explicite à elle seule.
    Sur le raspi-thierry le sshd_config mentionne
    #AllowAgentForwarding yes<br>AllowTcpForwarding yes<br>GatewayPorts yes<br>X11Forwarding yes<br>AllowUsers thierry isabelle revssh<br>
    Ne faudrait-il redonné le bash à rssh ou directement utiliser le user "isabelle" pour faire le rssh ?





  • oga83oga83 Membre Messages: 1121
    thierryR a dit :
    ssh -n revssh@sauvegarde -p1957<br>Pseudo-terminal will not be allocated because stdin is not a terminal.<br>revssh@sauvegarde's password: <br>Permission denied, please try again.<br>
    Tu es sûr du mot de passe ? Essaye de le réinitialiser et de le taper en clair dans la console pour vérifier qu'il n'y a pas de pb de clavier.
    Sur raspi-thierry, vérifie que ssh fonctionne bien avec l'utilisateur revssh : ssh -n -vvv revssh@127.0.0.1
    thierryR a dit :
    Il n'y a rien dans les logs car la connexion n'est pas établie, mais la console est explicite à elle seule.
    La connexion est établie puisqu'il te demande le password mais elle échoue. Tu devrais donc avoir quelque chose dans auth.log
    Es-tu sûr que tu arrives bien sur raspi-thierry ? Pour définir le nom "sauvegarde", tu as utilisé l'adresse publique de ta box fibre dans /etc/host de la machine sur laquelle tu tentes ssh ?
    Ajoute -vvv la commande ssh pour avoir plus de détail. Si tu postes le résultat, enlève les infos sensibles comme l'ip publique de sauvegarde.
    thierryR a dit :
    Ne faudrait-il redonné le bash à rssh ou directement utiliser le user "isabelle" pour faire le rssh ?
    Tu peux essayer ça temporairement, mais au final, je te conseille d'utiliser rssh.


  • thierryRthierryR Membre Messages: 36
    Je fais des essais:
    J'ai remis le bash à rssh dans passwd
    revssh:x:1003:1003::/home/revssh:/bin/bash<br>
    Un 1er essai nous montre que la connexion ne se fait pas, malgré le changement dans passwd:
    sudo ssh -n revssh@sauvegarde -p1957<br>Pseudo-terminal will not be allocated because stdin is not a terminal.<br>Linux raspi-thierry 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>thierry@raspi-isabelle:~ $
    Alors j'ai retiré l'option -n
    &nbsp;sudo ssh revssh@sauvegarde -p1957<br>Linux raspi-thierry 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>revssh@raspi-thierry:~ $
    Passage réussi. La clé  a fonctionné. Tout est OK dans la liaison.
    J'ai déconnecté le client puis j'ai réessayé avec l'option -n
    thierry@raspi-isabelle:~ $ sudo ssh -n revssh@sauvegarde -p1957<br>Pseudo-terminal will not be allocated because stdin is not a terminal.<br>Linux raspi-thierry 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>thierry@raspi-isabelle:~ $ 
    J'ai encore le problème avec stdin ??? Il y a bien un souci de ce côté là, mais je ne suis pas assez compétent.

    Autre essai:
    sudo ssh -R \*:1922:192.168.8.56:22 revssh@sauvegarde -p1957<br>Linux raspi-thierry 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>Last login: Sun Feb 23 18:40:34 2020 from 37.167.27.184<br>revssh@raspi-thierry:~ $ 
    Passage réussi. Je test dans l'autre sens c'est à dire depuis raspi-thierry
    ssh -p 1922 localhost<br>Linux raspi-isabelle 4.19.93+ #1290 Fri Jan 10 16:34:37 GMT 2020 armv6l<br><br>The programs included with the Debian GNU/Linux system are free software;<br>the exact distribution terms for each program are described in the<br>individual files in /usr/share/doc/*/copyright.<br><br>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br>permitted by applicable law.<br>Last login: Sun Feb 23 19:10:46 2020 from 192.168.8.56<br>isabelle@raspi-isabelle:
    Le REVERSE FONCTIONNE.
    J'essaie de remettre le rssh à revssh dans passwd
    sudo ssh -R \*:1922:192.168.8.56:22 revssh@sauvegarde -p1957<br>revssh@sauvegarde's password: <br>Permission denied, please try again.<br>revssh@sauvegarde's password: <br>^c
    Impossible de créer la connexion. Je ne suis plus conforme au tuto don je me suis inspiré. Là, je ne pige plus comment le tuto a été réalisé. Mais qu'est ce qu'il me manque ?






  • thierryRthierryR Membre Messages: 36
    Modifié (février 2020)
    Arf; je trouve un autre problème. Dans le crontab il y a cette ligne
    @reboot&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; export AUTOSSH_POLL=30; /usr/lib/autossh/autossh -M 20000 -C -N -f -n -T -R \*:1922:192.168.8.56:22 revssh@sauvegarde -p1957

    thierry@raspi-isabelle:~ $ sudo export AUTOSSH_POLL=30;<br>sudo: export&nbsp;: commande introuvable
    Je pense que ça expliquerait pourquoi la commande ne démarre pas au boot.
    thierry@raspi-isabelle:~ $ sudo apt-get install export<br>Lecture des listes de paquets... Fait<br>Construction de l'arbre des dépendances&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Lecture des informations d'état... Fait<br>E: Impossible de trouver le paquet export
    Puis il y a un truc que je ne comprends pas. Faut-il ouvrir un port 20000 ? et où ?



  • oga83oga83 Membre Messages: 1121
    Arf; je trouve un autre problème. Dans le crontab il y a cette ligne
    @reboot&nbsp;&nbsp;&nbsp; <b>root&nbsp;&nbsp;&nbsp; </b>export AUTOSSH_POLL=30; /usr/lib/autossh/autossh -M 20000 -C -N -f -n -T -R \*:1922:192.168.8.56:22 revssh@sauvegarde -p1957
    Enlève 'root' qui n'a rien à faire sur cette ligne.
    'export' est une commande buitin du shell.
    Mais ce n'est pas ça qui pose un problème puisque tu n'arrives pas à effectuer la connexion en manuel...
    Pour le port 20000, un "man autossh" te donnera les explications sur l'option "-M". Et non, tu n'as pas à ouvrir ce port sur ton routeur.
    Je ne suis plus conforme au tuto don je me suis inspiré. Là, je ne pige plus comment le tuto a été réalisé.
    Pourquoi "plus conforme" ? Parce que tu as enlevé le "-n" ?
    Il est logique d'utiliser "-n" avec rssh et de ne pas l'utiliser avec un shell.
    Ta configuration rssh par défaut n'est peut-être pas identique à celle du tuto. En lisant tes derniers messages (ça fonctionne sans rssh), il est clair qu'il y a un problème de ce côté.
    Un tuto comme celui-ci est rarement transposable sans modifications car tu n'as pas forcément la même distro, le même plan d'adressage, pas les mêmes ports ouverts, la même config rssh, ...
    Ce tuto expose la méthode globale : faire du reverse-ssh pour contourner la limitation sur les connexions entrantes des réseaux privés en 4g. A chacun de le personnaliser.
    Tu as fais le plus dur et tu devrais y arriver :)

    oga83 a dit :
    Ajoute -vvv la commande ssh pour avoir plus de détail. Si tu postes le résultat, enlève les infos sensibles comme l'ip publique de sauvegarde.
    Je n'ai rien vu à ce sujet. Tu as essayé de voir si tu avais plus de détails avec cette option ?
  • thierryRthierryR Membre Messages: 36
    Modifié (février 2020)
    Je corrige un peu: La connexion se fait bien en manuel sous condition;  mais pas en automatique. Je me suis peut-être mal exprimé. La ligne du crontab ne fonctionne pas à cause de "export".

    Par rapport au tuto:
    1 ) Si sur le serveur, je change les paramètres de revssh pour en faire un user comme les autres: Possibilité de le logguer... alors:
    sudo autossh -M 20000 -C -N -f&nbsp; -T -R \*:1922:192.168.8.56:22 revssh@sauvegarde -p1957
    fonctionne et le reverse aussi. 
    2) Effectivement j'ai du enlever l'interrupteur -n pour la raison que tu viens de m'expliquer. (Ça y est j'ai enfin compris)
    3) Le "root" dans le crontab et repris directement sur le tuto.

    Ces 2 premières raisons proviennent peut-être du fait que l'essai manuel se fait en console bash. Si on ajoute une méthode "dépannage, mise au point" ce serait pas mal de l'indiquer.

    Je note qu'il me faut faire fonctionner la commande "export" pour avoir une commande au boot convenable. De ce fait je pourrais remettre en place les commandes du tuto (passwd et -n).
    Dés que ça marche, je reviens faire un rapport ici puis j’essaierai de mettre en place un "client reverse" en sftp sur partition chrootée.


  • thierryRthierryR Membre Messages: 36
    Modifié (février 2020)
    En conclusion, je peux dire que c'est extraordinaire. On arrive à se reconnecter comme avant mais avec une box 4G La pire difficulté est résolue par le reverse ssh. Effectivement j'ai des différences avec le tuto donné en exemple, mais il aide beaucoup. Merci à oga83 et dupratpierre11.
  • ludovickludovick Membre Messages: 8188
    le sujet est-il résolu ?
  • thierryRthierryR Membre Messages: 36
    Oui
Cette discussion a été fermée.