Forum Linux.débutant connection ssh depuis internet avec dyndns.org

Posté par (page perso) .
Tags : aucun
0
3
fév.
2008
Bonjour,
débutant sous GNU/Linux (depuis à peine plus de 6 mois) j'ai réussi à "convaincre" des membres de ma famille de l'utilité des logiciels/formats Libres et j'ai donc installé une distrib' sur leur ordi en dual-boot. Le "problème" est que je dois administrer cette machine (mise à jour essentiellement) et comme je suis distant de ce pc d'environ 250km j'ai tout de suite pensé à une solution à base de ssh et dyndns (pc derriere une box avec ip dynamique).
Pour la mise en place j'ai suivi ce tuto[1] et ça à fonctionné à merveille, tant que j'étais connecté au réseau local! car depuis chez moi je n'est plus accès à cet ordi.
lorsque je tente :
loran@pc64:~$ ssh root@xxxxxx.dyndns.org
j'ai en retour:
ssh: connect to host xxxxxx.dyndns.org port 22: Connection refused
j'ai donc fais ouvrir le port 22 et l'ai attribué à l'ip fixe de la bécane en question (type 192.168.1.42) mais cela ne me débloque pas la situation. Puis j'ai vérifié iptables à l'aide de la commande:
loran@ordi.fixe:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

ce qui est étonnant c'est que je n'ai pas ce problème de port 22 en local.
En espérant que vous pourrez m'apporter de l'aide.
Cordialement,
Laurent

[1]http://www.andesi.org/index.php?node=135

NB: j'ai trouvé des réponses sur le web mais mon niveau actuel ne m'a pas permis de comprendre la manip à réaliser :/
  • # NAT ou port forwarding

    Posté par . Évalué à 3.

    d'apres ce que tu dis le reseau local est en 192.168.X.Y

    cela laisse donc supposé qu'il y a un routeur (une box) entre le PC et internet.

    du coup, quand tu fais ton ssh depuis l'exterieur tu essaie de te connecter sur le port 22 de la box, et pas sur le PC

    il faut donc regler un "port forwarding" en francais "redirection de port"
    pour renvoyer le port 22 de la box vers l'IP du PC:port 22.

    suivant les box cela se fait par l'interface web de la box (livebox ou certains routeurs) ou par l'interface web du fournisseur (freebox)
  • # TCP ou UDP

    Posté par (page perso) . Évalué à 1.

    Bonsoir,
    sur les photos que tu as mis, on voit que tu as mis 2 fois le port 22 en tcp ET en udp, je me demande si ce n'est pas a cuse de cela.

    http://fr.wikipedia.org/wiki/TCP/IP

    SSH port TCP 22

    essaye de juste le mettre le port 22 juste en TCP et pas en UDP.
    • [^] # Re: TCP ou UDP

      Posté par (page perso) . Évalué à 1.

      je viens de retirer "les UDP" mais j'obtiens le même message d'erreur:
      loran@pc64:~$ ssh root@xxx.dyndns.org
      ssh: connect to host xxx.dyndns.org port 22: Connection refused

      :/

      ça c'est fait ....

      • [^] # Re: TCP ou UDP

        Posté par . Évalué à 1.

        les reglages semblent bon
        tu es sur que le serveur ssh a bien demarré sur le poste en question ?

        le web (port 80) fonctionne-t-il correctement ?
        • [^] # Re: TCP ou UDP

          Posté par . Évalué à 1.

          autre hypothese en te relisant.

          quand tu ping ton adresse dyndns, cela correspond-t-il à l'adresse IP de la connexion web en cours d'usage ?
          • [^] # Re: TCP ou UDP

            Posté par (page perso) . Évalué à 1.

            je ne sais pas trop comment tester ce port. je l'ai ouvert en prévision d'une administration avec webmin mais j'avoue préferer openssh (pour ce que j'en fais :D).
            j'ai installer le paquet nmap mais je n'ai pas encore bien sais la façon de m'en servir.

            si je fais:
            loran@pc64:~$ host xxx.dyndns.org
            j'ai bien le retour
            xxx.dyndns.org A 90.49.xx.xx
            et si je "ping" l'adresse dyndns.org ou l'ip j'ai bien
            64 bytes from ANantes-258-1-103-62.w90-49.abo.wanadoo.fr (90.49.xx.xx): icmp_seq=10 ttl=254 time=0.700 ms

            --- xxx.dyndns.org ping statistics ---
            10 packets transmitted, 10 received, 0% packet loss, time 9001ms
            rtt min/avg/max/mdev = 0.472/0.909/1.654/0.385 ms

            :/

            ça c'est fait ....

            • [^] # Ça marche ?!

              Posté par . Évalué à 1.

              Salut,

              Apparemment tes problèmes sont résolus : de chez moi j'accède parfaitement à ton serveur SSH, au moins jusqu'à l'invite me demandant un mot de passe.

              Est-ce que tu as changé quelque chose ?
              • [^] # Re: Ça marche ?!

                Posté par . Évalué à 2.

                si c'est bien cela, alors peut-être que le pb de connexion vient de l'ordinateur chez toi, si par exemple tu avais utilisé cette adresse dns avec une autre machine, il peut avoir gardé des paramètres qui ne correspondent pas dans ton ~/.ssh/known_hosts . Tu peux essayer de renommer temporairement ce fichier (ou l'effacer s'il n'y a rien d'important pour toi dedans). Mais cela serait un peu étonnant car normalement le message d'erreur est différent dans ce cas, sauf qu'une fois j'ai déjà eu ce genre de pb pour se connecter avec putty sur une machine linux.

                Tu peux egalement demander aux gens de ta famille de visiter une page genre http://www.mon-ip.com/ , de te donner l'adresse ip temporaire attribuée à leur boite, et essaye de te connecter directement sur cette adresse pour voir.

                Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

                • [^] # Re: Ça marche ?!

                  Posté par . Évalué à 2.

                  encore une chose, webmin n'est pas par défaut sur le port 80, mais sur le port 10000

                  Si mon collègue plus haut a dit qu'il avait pu tester l'adresse, je présume que c'était écrit en clair et qu'un modérateur à caché l'adresse complète ?

                  Quoi qu'il en soit, pour ouvrir avec iptable un port de façon temporaire (jusqu'au redémarrage de la machine) il faut faire :

                  /sbin/iptables -A public -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

                  Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

                  • [^] # Re: Ça marche ?!

                    Posté par . Évalué à 2.

                    Salut,

                    En réponse à farvardin, je précise que je n'avais pas l'adresse IP, mais que celle-ci était indiquée dans les logs fournies par Laurent (bon, l'adresse IP elle-même était en partie masquée, mais il y avait le nom obtenu par reverse DNS...)
                    Comme il s'agit d'une adresse IP dynamique, je ne pense pas faire courir de risque à Laurent en indiquant mes sources ;-)
                    En tout cas hier soir, le serveur SSH était bien accessible et j'ai bien eu l'invite me demandant un mot de passe (aussi bien en utilisateur lambda qu'en root). Je précise que je n'ai pas rentré de mot de passe et que, de part mes essais, Laurent peut désormais connaître mon adresse IP : comme pirate on fait mieux.

                    A+
                    JJD
                    • [^] # Re: Ça marche ?!

                      Posté par . Évalué à 2.

                      ah oui pas bête. Sauf si entre temps (c'est à dire entre le moment où il a posté ce commentaire et ton test, soit une vingtaine de minutes), les gens de sa famille on redémarré la machine et l'adresse ip a été assignée à un autre linuxien.
                      Je l'accorde, la chance que cela soit ça est très très faible ;)

                      Ce qui pourrait bien correspondre à ce que j'avais évoqué, que le bloquage ne vienne pas du serveur, mais du client. J'avais eu cela une fois et en effaçant le fichier known_hosts cela m'avait permis de me connecter. D'ailleurs la question est de savoir dans ces cas-là comment faire cette manipulation proprement, sans effacer ce fichier comme un gros bourrin, si on veut juste supprimer / modifier une adresse ip en particulier ?

                      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

                      • [^] # Re: Ça marche ?!

                        Posté par . Évalué à 2.

                        Pour supprimer une adresse en particulier du fichier known_hosts, on peut éditer ce fichier et supprimer la (ou les) lignes qui référencent le serveur, mais cette méthode n'est pas toujours possible car ssh peut hasher les noms des serveurs (directive HashKnownHosts) et que cela est activé par défaut sur certaines distributions (au moins sous Debian).

                        LA bonne méthode est d'utiliser ssh_keygen pour cela :
                        $ ssh_keygen -R <nom ou IP du serveur>
                        et l'entrée correspondant au serveur est supprimée. Ensuite, il faudra accepter de nouveau le certificat à la connexion suivante.

                        Avec putty, je ne sais pas comment faire, mais il doit il y avoir soit un fichier de config, soit des entrées dans la base de registre...

                        JJD
                        • [^] # Re: Ça marche ?!

                          Posté par (page perso) . Évalué à 1.

                          Comportement vraiment lourd si il en est puisque du coup la complétion des noms d'hôte dans le bash_completion ne marche plus après avec les commandes scp et compagnie...
                          • [^] # Re: Ça marche ?!

                            Posté par . Évalué à 1.

                            tu rajoutes :
                            HashKnownHosts no
                            dans ~/.ssh/config et c'est reparti !
        • [^] # Re: TCP ou UDP

          Posté par (page perso) . Évalué à 1.

          oui ssh est bien actif sur le pc car si, sur le reseau local, on fait un :
          ssh loran@192.168.1.42
          alors la connection se fait bien
          :/

          ça c'est fait ....

  • # /etc/ssh/sshd_config

    Posté par (page perso) . Évalué à 1.

    si ce la peut servir, voici le contenu du fichier /etc/ssh/sshd_config

    # Package generated configuration file
    # See the sshd(8) manpage for details

    # What ports, IPs and protocols we listen for
    Port 22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes

    # Lifetime and size of ephemeral version 1 server key
    KeyRegenerationInterval 3600
    ServerKeyBits 768

    # Logging
    SyslogFacility AUTH
    LogLevel INFO

    # Authentication:
    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes

    RSAAuthentication yes
    PubkeyAuthentication yes
    #AuthorizedKeysFile %h/.ssh/authorized_keys

    # Don't read the user's ~/.rhosts and ~/.shosts files
    IgnoreRhosts yes
    # For this to work you will also need host keys in /etc/ssh_known_hosts
    RhostsRSAAuthentication no
    # similar for protocol version 2
    HostbasedAuthentication no
    # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
    #IgnoreUserKnownHosts yes

    # To enable empty passwords, change to yes (NOT RECOMMENDED)
    PermitEmptyPasswords no

    # Change to yes to enable challenge-response passwords (beware issues with
    # some PAM modules and threads)
    ChallengeResponseAuthentication no

    # Change to no to disable tunnelled clear text passwords
    #PasswordAuthentication yes

    # Kerberos options
    #KerberosAuthentication no
    #KerberosGetAFSToken no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes

    # GSSAPI options
    #GSSAPIAuthentication no
    #GSSAPICleanupCredentials yes

    X11Forwarding yes
    X11DisplayOffset 10
    PrintMotd no
    PrintLastLog yes
    TCPKeepAlive yes
    #UseLogin no

    #MaxStartups 10:30:60
    #Banner /etc/issue.net

    # Allow client to pass locale environment variables
    AcceptEnv LANG LC_*

    Subsystem sftp /usr/lib/openssh/sftp-server

    UsePAM yes

    ça c'est fait ....

    • [^] # Connexion root

      Posté par (page perso) . Évalué à 2.

      Dans mes manières de faire tout à fait personnelles, je met :

      LoginGraceTime 40
      PermitRootLogin no
      AllowUsers utilisateurssh


      Et puis je crée utilisateurssh
      #adduser utilisateurssh

      Ca évite qu'on vienne chatouiller le compte root.

      Et fail2ban ne fait pas de mal non plus :-)
  • # Liste de test

    Posté par (page perso) . Évalué à 2.

    Je reposte car mon commentaire n'est pas pris en compte.
    Si il est affiché deux fois, quelqu'un peu me dire comment en supprimer un ?


    Il faut d'abord t'assurer que c'est la bonne adresse IP.
    A partir du logement de ta famille vas sur http://www.mon-ip.fr ou demande au routeur ce qu'il en pense, puis fais un #host xxxxxx.dyndns.org depuis une machine extérieure.
    Tu devrais avoir la même IP dans les deux cas. Si ce n'est pas le cas, tu as un soucis de dns.


    Ensuite un test avec netcat :
    - redirige le port 12345 (au pif) vers l'ordinateur de ta famille
    - sur l'ordinateur de ta famille, lance #nc -l -p 12345 (netcat en écoute, le -l est un L minuscule)
    - sur un ordinateur en dehors du logement, lance #nc xxxxxx.dyndns.org 12345
    - tu devrais pouvoir alors taper du texte qui s'affiche sur l'ordinateur de ta famille
    Si ça ne fonctionne pas, tu as un problème, vivi :-)


    Au vu de tes copies d'écran, j'ai l'impression que c'est une SAGEM (c'est marqué sous le modem). Il me semble que le port 22 est d'office bloqué.

    Il faudrait que tu diriges un autre port (par exemple le 23, ou le 2222) vers l'ordinateur cible. Donc port 2222 extérieur vers port 22 intérieur.
    Puis #ssh -p 2222 root@xxxxxx.dyndns.org

    Mais... avec le SAGEM l'interface web ne permet pas de le faire. Il faut le faire via ssh. Et depuis le réseau interne. Je ne me souviens plus de la manipulation.

    Autres solutions si c'est le port 22 qui est bloqué :
    - demande au SAGEM de ne pas accepté ssh, je ne sais pas si c'est possible
    - lancer sshd sur l'ordinateur de ta famille avec le port 2222 (/etc/ssh/sshd.conf)
    - utilise un redirecteur de port pour que le port 2222 aille sur le 22 (moyen bof)

    Dernière solution si ça ne fonctionne pas :
    revenir ici en pestant :-)
    • [^] # Re: Liste de test

      Posté par . Évalué à 1.

      par defaut le serveur ssh refuse les connexions en root donc tez directement ssh login_utilisateur@adresse .

      bonne chance
  • # [resolu]

    Posté par (page perso) . Évalué à 2.

    voila je reviens aux nouvelles pour vous remercier de votre aide si rapide & précieuse :)

    le problème est résolu et ce je ne sais pas graçe à quel manip' :?
    sûrement la redirection du port 22 vers la machine en question mais je n'en suis pas sur.
    Ceci étant je peux y accéder en local sur 192.168.1.42 et en distant (Internet) par xxxxx.dyndns.org.

    ça c'est fait ....

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.