Outils pour utilisateurs

Outils du site


doc:formations:hebergement:serveur:vnc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
doc:formations:hebergement:serveur:vnc [2024/02/19 17:32] – [Serveur Proxy] jeremiedoc:formations:hebergement:serveur:vnc [2024/07/24 09:40] (Version actuelle) – [Sécurisation par tunnel SSH] jeremie
Ligne 16: Ligne 16:
  
  
-==== Serveur Proxy ====+==== Serveur VNC====
  
-Il peut être très intéressant d'utiliser un proxy VPN afin de connecter entre eux des clients/serveurs VNC de façon précise et sécurisée.+=== Serveur X déjà lancé (session utilisateur ouverte) ===
  
-Par exemple [[[[doc:formations:hebergement:service:wireguard|avec wireguard]] et le pare-feu UFWpour permettre au client VPN 10.0.0.222 d'accéder au contrôle de 10.0.0.111 via son serveur VNC, vous ajouterez cette règle:+Si le serveur X est déjà lancé sur la machine distanteon peut l'emprunter simplement avec:
  
-  ufw route allow in on rwin out on rwin from 10.0.0.222 to 10.0.0.111 port 5900+  sudo apt install tigervnc-scraping-server 
 +  vncpasswd  # pour définir le mot de passe d'acces à l'interface 
 +  x0vncserver -display "$DISPLAY" -rfbauth .vnc/passwd
  
-Le minimum de règles pour gérer l'ensemble sera très réduit (ports 22 pour le SSH et 51820 pour wireguard lui-même); +Nb: ''$DISPLAY'' vaut généralement '':0''
-   +
-<code> +
-# ufw status numbered +
-     To                       Action      From +
-     --                       ------      ---- +
-[ 1] 51820                    ALLOW IN    Anywhere                   +
-[ 2] 22                       ALLOW IN    Anywhere                   +
-[ 3] 10.0.0.111 5900 on rwin  ALLOW FWD   10.0.0.222 on rwin    +
-</code>+
  
-==== Serveur VNC====+:!: si vous voulez donner un accès distant risqué, utilisez par exemple
  
-Si le serveur X est déjà lancé sur la machine distante, on peut l'emprunter simplement avec:+  X0tigervnc -display :0 -localhost=0 -desktop :0 -rfbport 5900 -PasswordFile ~/.vnc/passwd &
  
-  sudo apt install tigervnc-scraping-server +=== Serveur X non lancé (aucune session utilisateur ouverte) ===
-  vncpasswd  # pour définir le mot de passe d'acces à l'interface +
-  x0vncserver -display $DISPLAY -rfbauth .vnc/passwd   # $DISPLAY vaut généralement :0 +
  
-Sinon il faut créer un serveur X, par exemple avec:+Il faut créer un serveur X, par exemple avec:
  
   sudo apt install x11vnc xvfb fluxbox  # uniquement si vous n'avez pas déjà X installé   sudo apt install x11vnc xvfb fluxbox  # uniquement si vous n'avez pas déjà X installé
-  sudo apt install tigervnc-standalone-server tigervnc-xorg-extension+  sudo apt install tigervnc-standalone-server tigervnc-xorg-extension tigervnc-tools
   vncpasswd  # pour définir le mot de passe d'acces à l'interface   vncpasswd  # pour définir le mot de passe d'acces à l'interface
   vncserver -depth 24 -geometry 1400x1050   vncserver -depth 24 -geometry 1400x1050
Ligne 52: Ligne 43:
   # Le ''geometry'' optionnel spécifie la taille de l'écran virtuel   # Le ''geometry'' optionnel spécifie la taille de l'écran virtuel
  
 +=== Diagnostic et fermeture ===
  
-Nb: Utilisez ''ss -ant'' pour lister les services ouverts. Pour arrêter le service VNC il faut avoir identifié la bonne session X avec: +Nb: Utilisez ''ss -ant'' pour lister les services ouverts. 
-  vnclist + 
-  vncserver -kill :1+Pour arrêter le service VNC il faut avoir identifié la bonne session X avec: 
 +  vncserver -list     # ou bien x0vncserver -list 
 +  vncserver -kill :1  # ou bien x0vncserver -kill :1
  
 :!: le service vnc restera ouvert tant qu'il n'est pas tué ! :!: le service vnc restera ouvert tant qu'il n'est pas tué !
Ligne 61: Ligne 55:
  
  
-=== Client VNC ===+==== Client VNC ====
  
 Du coté cient, on a seulement besoin du "viewer": Du coté cient, on a seulement besoin du "viewer":
Ligne 67: Ligne 61:
   sudo apt install tigervnc-viewer   sudo apt install tigervnc-viewer
  
-TigerVNC ne sécurise pas ses communications et n'écoute qu'en local sur le serveur par défaut. Une solution simple est d'utiliser un tunnel ssh entre le poste et le serveur qui va router un port local vers le port VNC sur le serveur (spécifiez le bon "user@host"):+:!: TigerVNC ne sécurise pas ses communications et n'écoute qu'en local sur le serveur par défaut.
  
-  ssh vnc@ssh root@tiger.modomaine.com -L 5901:127.0.0.1:5901+ 
 +=== Sécurisation par tunnel SSH === 
 + 
 +Une solution simple est d'utiliser un tunnel ssh entre le poste et le serveur qui va router un port local vers le port VNC sur le serveur (spécifiez le bon "user@host"): 
 + 
 +  ssh -f vns@remoteserver -L 5901:127.0.0.1:5901   # options: -N -4
  
 Si l'on termine cette commande, le tunnel sera refermé. Voyez [[doc:formations:hebergement:serveur:ssh#ssh_tunnels|la page associée]] pour plus d'option et de robustesse associée aux tunnels. Utilisez ''ss -ant'' pour valider la présence du tunnel. Si l'on termine cette commande, le tunnel sera refermé. Voyez [[doc:formations:hebergement:serveur:ssh#ssh_tunnels|la page associée]] pour plus d'option et de robustesse associée aux tunnels. Utilisez ''ss -ant'' pour valider la présence du tunnel.
Ligne 79: Ligne 78:
 Il faut passer à l'application //TigerVNC Client// l'adresse ''127.0.0.1:5901'' et donner le mot de passe saisi lors du ''vncpasswd'' sur le serveur (attention, ce n'est pas le mot de passe de l'utilisateur unix ''vnc''). Il faut passer à l'application //TigerVNC Client// l'adresse ''127.0.0.1:5901'' et donner le mot de passe saisi lors du ''vncpasswd'' sur le serveur (attention, ce n'est pas le mot de passe de l'utilisateur unix ''vnc'').
  
 +=== Sécurisation par VPN ===
  
-Installation du serveur et de l'utilisateur associé:+Il très intéressant d'utiliser un serveur tiers qui fera office de proxy pour connecter entre eux des clients/serveurs VNC de façon précise et sécurisée. C'est utile aussi lorsque le poste cible n'a pas de serveur SSH ou n'a aucune raison de laisser le client s'y connecter (meme en tunnel).
  
 +Par exemple [[[[doc:formations:hebergement:service:wireguard|avec le VPN wireguard]] et le pare-feu UFW, le client VPN 10.0.0.222 pourra contrôler le 10.0.0.111 via son serveur VNC seulement si vous l'avez autorisé avec la règle:
 +
 +  ufw route allow in on rwin out on rwin from 10.0.0.222 to 10.0.0.111 port 5900
 +
 +Le minimum de règles pour gérer l'ensemble sera très réduit (ports 22 pour le SSH et 51820 pour wireguard lui-même);
 +  
 +<code>
 +# ufw status numbered
 +     To                       Action      From
 +     --                       ------      ----
 +[ 1] 51820                    ALLOW IN    Anywhere                  
 +[ 2] 22                       ALLOW IN    Anywhere                  
 +[ 3] 10.0.0.111 5900 on rwin  ALLOW FWD   10.0.0.222 on rwin   
 +</code>
 +
 +L'accès depuis 10.0.0.222 se fera donc avec ''vncviewer 10.0.0.111''
  
 ====== Divers ====== ====== Divers ======
Ligne 92: Ligne 108:
 Sur son PC dans un premier shell: Sur son PC dans un premier shell:
  
-  ssh remoteuser@remoter.server.com -L 5901:127.0.0.1:5901 'x0vncserver -fg -display :1 -rfbauth .vnc/passwd'+Lancer le serveur VNC sur le display '':1'': 
 + 
 +  me@client:~ $ REMOTE=remoteuser@remoter.server.com 
 +  me@client:~ $ # Si vous ne l'avez pas déjà fait: 'ssh $REMOTE' puis 'vncpasswd'
 + 
 +Lancer le service sur le serveur en même temps que le tunnel SSH sur le poste local: 
 + 
 +  me@client:~ $ ssh $REMOTE -L 5901:127.0.0.1:5901 'vncserver -depth 24 -geometry 1400x1050 :1' 
 + 
 +Lancer le client VNC local sur le tunnel local: 
 + 
 +  me@client:~ $ vncviewer 127.0.0.1:5901 
 + 
 +Terminer le serveur distant:
  
-Et dans un second shell, lancer alors ''vncviewer''+  me@client:~ $ ssh $REMOTE vncserver -kill :1
  
doc/formations/hebergement/serveur/vnc.1708363952.txt.gz · Dernière modification : 2024/02/19 17:32 de jeremie