Ceci est un brouillon:
  • En cours de révision. En cours de test
  • plein de FIXME à voir avec la liste


Accéder visuellement à une machine distante via ssh

Après une installation chez une tierce personne, par exemple chez des amis, clients…, bien souvent il vous faut accéder à leur machine quelques temps après.
Cette page se propose de vous permettre de vous y connecter grâce au visionneur de bureau distant déjà installé Vinagre et, afin de sécuriser cette connexion, d'utiliser le protocole SSH1).

Pour la suite le serveur est la machine distante que l'on cherche à atteindre (le pc de l'ami quoi)
Le client est la machine qui prendra le contrôle (en gros votre pc)

Côté serveur

Pour rappel: Il s'agit ici de la machine que l'on cherche à joindre.

  • Dans un terminal, vérifier que le service est bien actif en saisissant la commande suivante :
    status ssh

    si la réponse est

    ssh start/running, process XXXX

    XXXX est un nombre, c'est que le service est bien opérationnel sinon il faut le démarrer par:

    sudo service ssh start
  • Connaître son adresse IP du réseau local:
    ifconfig | awk '/inet adr/ {print $2}' | grep -v "127.0.0.1"
  • Sur le routeur/box rediriger le port 22 vers le pc.
  • Sur les Freebox V5 et V6 tout se passe dans l'interface de gestion de votre compte.
    • Dans la section Internet sélectionner la partie Configurer le routeur.
    • Vérifier que le mode routeur est bien activé et dans le bas de cette page redirigé le port 22 en TCP vers l'adresse récupérée plus tôt, ici 192.168.0.10:22.
    • Enregistrer ces nouveaux paramètres puis redémarrer la freebox.
  • Sur une BBox, rendez-vous sur http://192.168.1.254 ou http://gestionbbox.lan
    • Allez dans la rubrique de gauche "Configuration du routeur"
    • Puis dans l'onglet horizontal "NAT/PAT"
    • Ensuite entrez le nom d'utilisateur et le Mot de Passe (par défaut : utilisateur : "admin" mot de passe : "admin")
    • Dans les champs suivants vous allez mettre:
      • Nom de la règle : ce que vous voulez
      • Protocole : TCP
      • Port / Plages de ports : cous laissé port
      • Port(s) source : 22
      • @ IP de destination ou nom de l'ordinateur : l'adresse ip récupérée plus tôt, ici 192.168.0.10
      • Port(s) de destination : 22
    • Enfin cliqué sur Validé
  • Connaitre son adresse IP hors réseau local, c'est à dire votre adresse public visible sur le net, en se rendant par exemple sur monip.org ou en saisissant dans un terminal la commande suivante:
    wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1
  • Désactiver les effets graphiques. Par exemple, sur l'environnement Gnome il s'agira de Système → Préférences → Apparences → Onglet "Effets" → cocher "Aucun".
    FIXME Toujours utile ? Sous Natty cette option ne semble plus possible, comment faire si c'est toujours nécessaire ? (Pas encore cherché dans le forum)
  • Si besoin, modifier avec les droits d'administration la configuration du fichier /etc/ssh/sshd_config. Pour en savoir plus, se reporter à la section sécurité, mais cette étape peut être réalisée ultérieurement par la personne qui prendra la main à distance.

Côté Client

Rien tout est installé (un café si vous voulez :-)).

Depuis la machine cliente (votre pc), saisissez dans un terminal la commande suivante:

ssh -L 5900:localhost:5901 <Login>@<Adresse-ip> -p <Port>

Où:

  • <Login> est le nom de l'utilisateur sur l'ordinateur distant.
  • <Adresse-ip> est l'adresse "internet" du serveur.
  • <Port> est le port indiqué à rediriger dans l'interface de gestion soit 22 par défaut. Pour plus d'information sur cette valeur, reportez-vous plus bas).
L'option -L 5900:localhost:5901 est facultative. C'est elle qui permet d'accéder au serveur graphique distant en passant par ssh. Si vous comptez utiliser uniquement le terminal, vous pouvez retirer cette partie

Par exemple, pour vous connecter à la machine distante dont le nom d'utilisateur de la session est "ami", l'adresse public sur le net est 123.45.67.890 et dont le port redirigé est 22, saisissez

ssh -L 5900:localhost:5901 ami@123.45.67.890 -p 22

Vous devriez avoir une demande de confirmation la première fois pour valider votre connexion au serveur, puis le mot de passe du compte distant (donc le mot de passe du compte utilisateur sur la machine serveur) doit vous être demandé.
Vous êtes maintenant sur le serveur, c'est à dire la machine distante.

Vous avez donc accès à la machine distante, le problème c'est que la personne qui se trouve devant physiquement (votre ami, client…) ne voit pas forcément ce que vous faites, ou vous n'êtes pas très à l'aise avec la ligne de commande.
Pour rappel, vous avez laissez ouvert le terminal précédemment connecté.

Retour visuel de la ligne de commande

Sur le serveur, demander à l'utilisateur distant d'ouvrir un screen avec le nom de son choix.
Par exemple, pour une session screen nommé ami, il saisira dans un terminal la commande suivante:

screen -S ami

et de votre côté entrez dans le terminal connecté par

screen -x ami

Ce que vous saisirez sera maintenant affiché en parallèle sur le terminal distant (donc sous les yeux de votre ami, client…).

Retour graphique de l'environnement

FIXME toute la partie à reprendre pour simplifier.

Si vous souhaitez accéder graphiquement au serveur, vérifier sur celui-ci que vino-server est bien dans les applications au démarrage donc bien actif:

ps aux | grep vino-server

si vous avez pour seule réponse un retour au prompt c'est qu'il vous faut le démarrer par

/usr/lib/vino/vino-server &

FIXME –sm-disable?
puis de votre côté entrer

vinagre localhost:1

Une demande d'autorisation doit apparaitre sur l'écran serveur qu'il faut donc faire valider par la personne devant l'ordinateur distant.

Vous devriez être maintenant sur le pc distant et la personne qui se trouve devant physiquement (votre client, ami…) doit voir toutes vos actions.

Si la connexion ne semble pas se réaliser, demander à l'utilisateur distant de vérifier dans les paramètres accessibles depuis le menu Système → Préférences → Bureau à distance, ou en saisisant dans un terminal
vino-preferences

que les cases suivantes sont bien cochées:

  • Autoriser d'autres utilisateurs à voir votre bureau
  • Autoriser d'autres utilisateurs à contrôler votre bureau.
FIXME à revérifier car test bizarre pour gconftool en local-VM
Vous pouvez vous même modifier les préferences de vino-server et lancer ce dernier s'il n'était pas actif. Il s'agira de:
  • saisir en ligne de commande
    gconftool -2 -s -t bool /desktop/gnome/remote_access/enabled true
    gconftool -2 -s -t bool /desktop/gnome/remote_access/prompt_enabled false

    ou atteindre "vino-preferences" en ajoutant l' option -X au moment de se connecter avec ssh (cette option n'est pas toujours acceptée selon la configuration du serveur ssh)

  • lancer le serveur
    DISPLAY=:0.0 /usr/lib/vino/vino-server --sm-disable &

    FIXME DISPLAY obligé???

Vous pouvez également activer vino-server et modifier ses préférences (par gconftool-2 ou utiliser ssh avec l'option -X pour tenter de lancer vino-preferences

FIXME remettre une note sur les effets graphique ? déplacer pré-requis à ce sujet ici?

Côté client, pour quitter votre accès à distance, quittez vinagre et les terminaux ouverts.
Côté serveur, vous pouvez arrêter le serveur ssh par

sudo service ssh stop

et vino-server par

sudo killall vino-server

FIXME Pas mieux ?
Quitter également les différents terminaux si vous avez utilisé screen.

Afin de sécuriser un peu plus cette communication, il existe différentes possibilités dont:

Les ports

FIXME explication de préférence de l'un par rapport à l'autre.
Afin de sécuriser un peu plus, il est possible de changer de politique quant au port 22 attribué par défaut, souvent attaqué en premier.
Vous pouvez en effet choisir de

  • Rediriger un autre port que le 22 entrant dans votre routeur/box.
    Il s'agit de le définir sur votre routeur/box comme expliqué plus avant mais en redirigeant non plus le port 22 mais un nouveau numéro au choix et ce toujours vers le port 22 de la machine serveur.
  • Rediriger le port 22 entrant dans votre routeur/box du routeur vers un port autre que le 22 de la machine serveur.
    En plus de la redirection à définir sur votre routeur/box comme expliqué plus avant, il s'agira également de modifier avec les droits d'administration le port dans le fichier /etc/ssh/sshd_config.
  • Rediriger un autre port que le 22 entrant dans votre routeur/box vers un autre port que le 22 de la machine serveur.

Les ports habituellement usités sont visibles dans le fichier /etc/services. Choisissez en donc un qui n'y apparait.

Par exemple si vous souhaitez utiliser le port 2653 (FIXME à priori pas de souci), vous pourrez vérifier si cette valeur n'est pas déjà couramment utilisée en saisissant dans un terminal la commande suivante:
grep -w 2653 /etc/services

Si vous avez un retour au prompt pour seul réponse, c'est que vous pouvez utiliser ce port.
Si vous faites l'essai avec la valeur 22, vous constaterez qu'il s'agit du port attribué à SSH

Exemple

Vous souhaitez rediriger le port 2653 entrant dans votre routeur/box vers le port 2654 de la machine 192.168.0.10 dont l'adresse public est 123.45.67.890 et le nom de session est "ami"

  • Depuis l'interface de votre routeur/box rediriger en FIXME TCP?UDP? le port 2653 vers 192.168.0.10:2654
  • Sur le serveur ouvrez avec les droits d'administration le fichier /etc/ssh/sshd_config pour modifier la ligne de définition du port comme suit:
    Port 2654
  • Redémarrer le serveur ssh:
    sudo service ssh restart
  • Sur la machine cliente, connectez-vous grâce à
    ssh ami@123.45.67.890 -p 2653

Ne pas démarrer le serveur SSH

Si vous ne souhaitez pas que le service ssh soit activé à chaque démarrage, deux options:

  1. modifier avec les droits d'administration le fichier /etc/init/ssh.conf et commenter (ajouter un # au début de) la ligne start on filesystem.
  2. renommer le fichier /etc/init/ssh.conf pour qu'il ne soit pas vu par le système. Par exemple dans un terminal, saisissez la commande suivante:
    sudo mv /etc/init/ssh.conf{,.nostart}

Pour reprendre la main les prochaine fois, il faudra donc demander à l'utilisateur distant de démarrer ssh tel qu'indiqué dans les pré-requis.

Ne pas démarrer le serveur VNC

Vino-server peut faire partie des applications démarrées à l'ouverture de session. Ne s'agissant pas ici d'un service, vous pouvez modifier ce comportement depuis votre gestionnaire de session, par exemple depuis le menu Système → Préférences → Applications au démarrage sur Gnome.
Si vous souhaitez alors avoir un retour graphique de sa machine, vous penserez donc à demander à l'utilisateur disant de le démarrer tel qu'expliqué dans cette section.
FIXME pas possible de le démarrer à distance avec DISPLAY=0.0 par exemple ?

Duo clé publique / clé privés

Vous pouvez utiliser une sécurité accrue en utilisant SSH et le système de clés distantes.
FIXME:si clé ok sinon passphrase possible (pour cybercafé par exemple)?


Contributeurs: fabux


1)
Secure SHell
  • utilisateurs/fabux/vnc_via_ssh.txt
  • Dernière modification: Le 11/09/2022, 13:14
  • par moths-art