web-dev-qa-db-fra.com

Connexion au serveur Ubuntu via SSH en externe

J'ai récemment installé Ubuntu Server 12.04 (Precise Pangolin) et compte l'utiliser principalement comme serveur de fichiers. Je suis complètement nouveau sur Linux, la courbe d’apprentissage est donc assez longue. Hier, j'ai pu configurer PuTTY sur une machine Windows 7 à l'aide d'une paire de clés SSH afin de pouvoir administrer Ubuntu Server à partir de mon bureau. Cela fonctionne bien à condition que les deux machines sont sur le même réseau.

Dans le cas de mon ordinateur portable ( MacBook Air ), il se peut que ce ne soit pas toujours sur le même réseau. Est-il possible de se connecter au serveur Ubuntu à partir de mon ordinateur portable via SSH lorsqu'il se trouve sur un autre réseau?

J'ai installé le démon avahi de sorte que le nom d'hôte du serveur soit diffusé sur le réseau local et j'ai configuré le routeur pour qu'il attribue toujours la même adresse IP au serveur. En dehors de cela, la seule chose que j'ai installée sur le serveur est OpenSSH où j'ai désactivé l'authentification par mot de passe afin que vous puissiez vous connecter uniquement à l'aide d'une paire de clés.

Je pensais que je pourrais faire quelque chose comme ça depuis le terminal de mon ordinateur portable:

ssh my.external.ip.address [email protected]

Quand j'essaie cette commande, j'obtiens l'erreur:

ssh: se connecter à l'hôte my.external.ip.address port 22: opération expirée

J'ai aussi essayé

ssh my.external.ip.address [email protected]

et je reçois le même message d'erreur qu'avant. Cela devrait donc vous donner une idée de ce que j'essaie de faire, mais est-ce possible, et si c'est le cas, comment puis-je le faire?

En supposant que je puisse établir une connexion externe via ssh à partir de mon ordinateur portable, il est possible que mon fournisseur de services Internet modifie mon adresse IP externe, ce qui romprait la connexion externe. J'aimerais pouvoir établir une connexion robuste, c'est-à-dire que si mon fournisseur de services Internet change l'adresse IP externe, je serais toujours en mesure de me connecter à distance au serveur sans avoir à connaître la nouvelle adresse IP externe.

24
Aesir

Tout d’abord, la commande correcte est: ssh [email protected]

Et le routeur doit être configuré pour transférer le port SSH 22 à l'adresse IP locale de votre serveur.

Pour un débogage ultérieur:

1) Vérifiez que le port 22 (SSH) est ouvert sur votre serveur et sur le routeur (transfert de port).

2) Vérifiez que le serveur SSH est en cours d'exécution sur votre serveur

3) Utilisez ping, ssh -v lors de la connexion et examinez /var/log/auth.log pour déboguer tout autre problème de connexion.

1) Sur votre routeur: suivez les instructions spécifiques du routeur

Sur votre serveur: Sudo ufw status (sauf si vous utilisez un autre utilitaire de configuration de pare-feu) ou Sudo iptables -L (méthode générale, mais sortie complexe)

Pour ouvrir le port 22: Sudo ufw allow 22

cf https://help.ubuntu.com/12.04/serverguide/firewall.html

2) Vérifiez qu’il est installé: dpkg -l openssh-server

Vérifiez qu'il est en cours d'exécution: service ssh status ou ps aux | grep sshd

3) Sur le client connecté:

Sur le serveur:

  • Sudo less /var/log/auth.log

Vous pouvez également consulter les journaux du routeur si nécessaire.

Voici un scanner de port en ligne: https://www.grc.com/x/ne.dll?bh0bkyd2

Je pense que vous pouvez utiliser des outils tels que nmap ou autre, mais je ne les connais pas encore très bien.

Faire face à une adresse IP externe changeante:

1) Obtenez un compte dynDNS ou similaire: http://dyn.com/dns/

Listes des fournisseurs DNS dynamiques:

2) Une autre solution consiste à configurer un travail crontab, qui vous envoie régulièrement votre adresse IP externe par courrier ou est intégré à un service de stockage en ligne tel que Dropbox.

Voici un script utilisé par un de mes amis:

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

Transfert de port de routeur:

1) Tout d’abord, déterminez l’adresse IP locale de votre routeur en lançant:

ip route | grep default

C'est généralement quelque chose comme 192.168.x.x.

Moyens alternatifs et autres solutions de système d'exploitation:

2) À partir de tout ordinateur connecté localement au routeur, accédez à l’IP précédemment trouvée, c’est-à-dire via http://192.168.1.1 par exemple. Cela devrait faire apparaître l'interface de configuration du routeur.

3) Les étapes suivantes varient en fonction de votre routeur. Voici comment cela se fait sur un routeur avec OpenWRT par exemple:

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/

23
KIAaze

Par défaut, Ubuntu (Desktop), SSH n'est pas installé.

Vous pouvez l'installer à l'aide de la commande suivante dans Terminal:

Sudo apt-get install openssh-server

Il convient d'installer et de démarrer le service immédiatement.

3
kenorb