Existe-t-il un moyen d'afficher (et de contrôler) un bureau à distance via SSH ? Je n'aurai pas d'accès physique à la machine hôte distante.
Réponses
Trop de publicités?Méthode 1 :
Ceci peut être réalisé avec vino vnc server & remmina (les deux sont livrés par défaut avec ubuntu ; sinon installez-les en exécutant sudo apt-get install remmina
). Exécutez ensuite les commandes suivantes à partir de l'ordinateur local dans l'invite du terminal :
-
ssh -Y gman@remote
. Utilisez la redirection X11 de confiance, sinon cela ne fonctionnera pas. -
vino-preferences
. Il ouvrira les préférences en matière de vin. -
Cliquez également
configure network automatically to accept connection
. Mais n'entrez pas de mot de passe, il est encodé en base64. . Cliquez ensuite sur fermer. Puis exécutez :sudo -s export DISPLAY=:0.0 xhost + /usr/lib/vino/vino-server &
Cela va démarrer le serveur vino.
-
Déconnexion du serveur :
xhost - Press CTRL+C twice exit exit
-
Ensuite, ouvrez remmina . Choisissez
vnc
sous protocole.Sous
basic
l'adresse du serveur dans l'ongletserver
champ.Dans l'onglet ssh, cliquez sur
enable ssh tunnel
. Sousssh authentication
il pourrait êtrepassword
opublic key
:Cliquez sur enregistrer. Puis double-cliquez sur le nom de la connexion (home-desktop comme indiqué dans l'image) pour commencer à naviguer sur le bureau distant.
Méthode 2 :
x11vnc
est un simple serveur VNC et vous n'aurez pas à vous embêter avec les paramètres de Gnome ou 500 pare-feu, il suffit d'installer x11vnc
sur tous vos ordinateurs (avec Puppet ou ce que vous utilisez pour le contrôle de masse).
Puis, à partir de votre ordinateur local, exécutez :
ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"
Évidemment, il faut échanger user@host
pour le nom d'utilisateur et le nom d'hôte/IP de l'ordinateur distant.
Puis utilisez un client VNC de votre choix pour vous connecter à localhost:5900
. La commande SSH démarre un serveur vnc sur l'ordinateur distant, puis établit un tunnel vers ce port par SSH. Vous n'avez pas besoin d'ouvrir de ports (tant que vous pouvez déjà utiliser SSH).
Si vos ordinateurs ont des paramètres d'affichage bizarres, vous feriez mieux de laisser de côté l'option -display :0
dans la commande SSH. x11vnc
essaiera alors automatiquement de trouver le bon affichage.
Source : askubuntu
Aperçu de la solution
En supposant que vous avez déjà configuré un OpenSSH Server
sur votre machine hôte, vous devez d'abord activer le contrôle des bureaux sur votre machine hôte. Si vous pouvez d'abord activer localement le contrôle des ordinateurs sur votre machine hôte, passez à la section 1a. Si vous devez d'abord activer le contrôle des ordinateurs sur votre machine hôte à distance, passez à la section 1b.
Créez ensuite un profil Client Bureau à distance sur votre ordinateur client afin de vous connecter à l'ordinateur hôte par le biais d'un tunnel SSH et, finalement, de visualiser et de contrôler le bureau de l'ordinateur hôte par le biais d'un tunnel SSH.
1a. Activation locale du contrôle à distance de la machine hôte
Effectuez les opérations suivantes sur la machine hôte :
vino-preferences
-
vino-preferences
également dans Dash sousDesktop Sharing
- Tic-tac
Allow other users to view your desktop
- Tic-tac
Allow other users to control your desktop
- Tic-tac
Require the user to enter this password
- Entrez une phrase de passe difficile à deviner
- Fermer
1b. Activer le contrôle à distance de la machine hôte
Effectuez les opérations suivantes sur la machine cliente, en remplaçant 123.123.12.3
avec l'adresse IP de votre machine hôte :
ssh -Y 123.123.12.3
-
-Y, Active le transfert de confiance X11. Les transferts X11 de confiance ne sont pas soumis aux contrôles de l'extension X11 SECURITY.
vino-preferences
-
vino-preferences
également dans Dash sousDesktop Sharing
- Tic-tac
Allow other users to view your desktop
- Tic-tac
Allow other users to control your desktop
- Tic-tac
Require the user to enter this password
- Entrez une phrase de passe difficile à deviner
- Fermer
Créez un profil client Remote Desktop sur votre machine cliente
Effectuez les opérations suivantes sur la machine cliente :
remmina
- remmina également dans Dash sous
Remmina Remote Desktop Client
Ctrl + N ou Connexion > Nouveau
- Saisissez votre adresse IP [123.123.12.3] à l'endroit indiqué.
Server
- Passez à la
SSH
onglet
- Tic-tac
Enable SSH Tunnel
- Dirigez votre client de bureau vers votre port SSH non standard.
- Définissez votre
SSH Authentication
<username>
et le mode - Connectez-vous à
Visualiser et contrôler la machine hôte
Sur la machine cliente, lorsque l'on demande <username>
Entrez le mot de passe de l'utilisateur pour créer le tunnel SSH. Lorsqu'on vous demande le mot de passe VNC, entrez la phrase de passe que vous avez précédemment entrée dans la machine hôte.
Si cette étape est réussie, vous devriez maintenant pouvoir visualiser et contrôler le bureau de la machine hôte à partir de votre machine cliente via un tunnel SSH.
J'ai pu paramétrer une installation fraîche d'Ubuntu 16.04 à partir d'une connexion ssh distante avec le script suivant :
#!/bin/bash
export DISPLAY=:0
read -e -p "VNC Password: " -i "ubuntu" password
dconf write /org/gnome/desktop/remote-access/enabled true
dconf write /org/gnome/desktop/remote-access/prompt-enabled false
dconf write /org/gnome/desktop/remote-access/authentication-methods "\['vnc'\]"
dconf write /org/gnome/desktop/remote-access/require-encryption false
dconf write /org/gnome/desktop/remote-access/vnc-password \\"\\'$(echo -n $password | base64)\\'\\"
dconf dump /org/gnome/desktop/remote-access/
sudo service lightdm restart
Les guillemets sont importants pour tous les paramètres de la chaîne de caractères (points simples entre guillemets). Pour que dconf soit capable d'écrire, il doit avoir accès à XWindows, c'est pourquoi la partie export DISPLAY est nécessaire. Je pense que vous devez toujours être connecté au bureau de la machine Ubuntu actuelle pour vous connecter avec VNC après cela. La commande dump est juste là pour confirmer que tous les paramètres ont été pris en compte, vous n'en avez pas vraiment besoin.
Cette option est facultative si vous souhaitez que l'écran reste allumé en permanence :
dconf write /org/gnome/desktop/screensaver/lock-enabled false
dconf write /org/gnome/desktop/screensaver/ubuntu-lock-on-suspend false
dconf write /org/gnome/desktop/session/idle-delay "uint32 0"
- Vous pouvez utiliser ssh pour démarrer une session vnc.
- Utilice
Xnest
avec les mots-clés X11 pour démarrer une session à distance et la transmettre à votre ordinateur actuel. (Je fais cela de temps en temps avec mon pi) <a href="http://www.xfree86.org/4.2.0/Xnest.1.html" rel="nofollow">page de manuel</a>
J'utilise Xnest
comme ça :
Xnest :1 -ac &
- puis
DISPLAY=:1 . /etc/X11/Xsession
Comment démarrer le serveur Vino à distance sans redirection X (en ligne de commande uniquement)
Connectez-vous à l'ordinateur distant en tant qu'utilisateur qui partagera son bureau et transférez le port 5900 vers le même port sur localhost. Avec PuTTY, la redirection est définie dans Connexion/SSH/Tunnels. Avec une ligne de commande, utilisez :
ssh -L 5900:localhost:5900 user@remote-computer
Installer vino-server
s'il n'est pas déjà installé. Par exemple :
sudo apt install vino
Activez le partage de bureau (en faisant correspondre le numéro d'affichage sur les 1ère et 2ème lignes) :
echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server
Lancez une visionneuse VNC et connectez-vous à localhost
pour l'adresse du serveur VNC.
- Réponses précédentes
- Plus de réponses