web-dev-qa-db-fra.com

SSH du réseau externe refusé

J'ai installé open-ssh-server sur mon ordinateur personnel (sous Lubuntu 12.04.1) afin de pouvoir s'y connecter à partir de l'école. Voici comment j'ai configuré le fichier sshd_config:

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
#Port 22
Port 2222
# 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
HostKey /etc/ssh/ssh_Host_ecdsa_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
LogLevel VERBOSE

# Authentication:
LoginGraceTime 120
PermitRootLogin no
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 no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

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

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

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

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#specify which accounts can use SSH
AllowUsers onlyme

J'ai également configuré la table de redirection de port de mon routeur pour inclure:

  • Ports LAN: 2222-2222
  • Protocole: TCP
  • Adresse IP du réseau local: "Adresse IP" affichée en affichant "informations de connexion" dans le menu contextuel de la barre d'état système
  • Ports distants [facultatif]: n/a
  • Adresse IP distante [facultatif]: n/a

J'ai également essayé diverses autres configurations, en utilisant des DNS primaires et secondaires, ainsi que des ports 2222-2222 distants. J'ai également essayé avec TCP/UDP (en réalité deux règles car mon routeur requiert des règles distinctes pour chaque protocole).

Avec toute configuration de redirection de port de routeur, je peux me connecter avec

ssh -p 2222 -v localhost

Mais quand j'essaie de me connecter depuis l'école en utilisant

ssh -p 2222 onlyme@IP_ADDRESS 

Je reçois un message "No route to host". Même chose lorsque j'utilise l'adresse de diffusion ou l'adresse par défaut/DNS primaire. Lorsque j'utilise le "masque de sous-réseau", SSH se bloque. Cependant, lorsque j'utilise le "DNS secondaire", je reçois un message "Connexion refusée".

: ^ (

Quelqu'un s'il vous plaît aidez-moi à comprendre comment faire ce travail.

3
Hildigerr

J'ai finalement compris ce qui n'allait pas: je ne connaissais rien du protocole TCP/IP. J'utilisais la mauvaise adresse IP. Mon adresse IP étant dynamique, j'ai créé un script pour le vider dans un dossier Dropbox. Je peux donc le récupérer à l’école et me connecter.

#!/usr/bin/Perl -w

use strict;
use LWP::Simple;

open( OFILE, ">/home/username/Dropbox/home.txt" ) || die "opening file $!";
print OFILE get("http://checkip.dyndns.com/");
close( OFILE );
0
Hildigerr

Une fois que vous pouvez vous connecter à la machine depuis votre réseau local, le reste est totalement hors du contrôle d’Ubuntu exécuté sur cette machine. Il est donc probable que le problème se situe quelque part en dehors de votre ordinateur Ubuntu. Les causes possibles peuvent inclure:

  • redirection de port mal configurée sur votre routeur. Notez que l'adresse IP interne de votre machine peut changer lorsque vous la redémarrez, en particulier si vous avez plusieurs périphériques sur votre réseau local. Cela peut dépendre des adresses de commande demandées au DHCP du routeur. Vous pouvez utiliser la commande ifconfig dans la console pour voir votre adresse IP.

  • vous utilisez une adresse IP incorrecte lorsque vous essayez de vous connecter de l'extérieur (en fait, le message "Aucune route vers l'hôte" le suggère fortement). Google "quel est mon ip" pour trouver l'un des nombreux sites qui vous indiqueront votre adresse IP externe actuelle. Notez que votre IP externe peut changer si vous redémarrez le routeur.

  • En tant que "mesure de sécurité", certains fournisseurs bloquent les connexions entrantes vers les ports de leurs clients - soit tous les ports, soit une plage de ports connus. Il se peut que le panneau de configuration du fournisseur de services Internet contienne des paramètres ou que vous deviez les appeler pour le savoir.

Donc, la façon de résoudre le problème serait:

  • assurez-vous que vous pouvez vous connecter à partir du réseau local
  • assurez-vous que vous avez correctement configuré la redirection de port sur le routeur en utilisant l'adresse IP interne correcte de votre machine
  • déterminer votre adresse IP externe
  • assurez-vous que vous pouvez envoyer une requête ping à cette adresse IP, utilisez traceroute pour voir où les paquets sont bloqués
  • essayez éventuellement de configurer le transfert pour certains services "plus faciles", tels que HTTP en premier pour exclure les problèmes d'authentification, etc.

(De plus, je ne sais pas pourquoi vous parlez de contenu DNS - tout se fait via des adresses IP claires, le DNS n’a absolument rien à voir avec cela)

3
Sergey

En lisant vos commentaires, je pense qu’une partie du problème est que vous utilisez une mauvaise adresse IP. DNS est l'annuaire Internet, pas votre adresse IP externe. Allez sur Google.com et tapez "ip" dans la recherche. Google vous indiquera votre adresse IP externe.

Allez également dans une bibliothèque et utilisez l’un de leurs ordinateurs, téléchargez le client Portable PuTTY HERE (Exécutez le programme d’installation et choisissez le bureau comme emplacement d’installation, il extraira les fichiers dans un dossier (il suffit d’exécuter PuttyPortable.exe), puis utilisez-le pour essayer de vous connecter à votre PC domestique. Assurez-vous de le supprimer après l'avoir fait, car la plupart des bibliothèques ne l'aiment pas lorsque vous téléchargez des programmes sur leur PC (mais elles ne vérifient pas quand même).

Il existe également des clients SSH en ligne qui vous accorderont une session gratuite de 5 minutes afin que vous puissiez essayer celles du PC à la maison. Bien que vous souhaitiez peut-être modifier votre mot de passe temporairement avant de le tenter pour des raisons de sécurité.

1
japzone