Existe uma maneira de visualizar (e controlar) uma área de trabalho remota através do SSH? Não terei acesso físico à máquina host remota.
Existe uma maneira de visualizar (e controlar) uma área de trabalho remota através do SSH? Não terei acesso físico à máquina host remota.
Respostas:
Isso pode ser alcançado com o servidor vino vnc & remmina (ambos são padrão no ubuntu; caso contrário, não o instale executando sudo apt-get install remmina). Em seguida, execute os seguintes comandos do computador local no prompt do terminal:
ssh -Y gman@remote. Use encaminhamento X11 confiável, caso contrário, não funcionará
vino-preferences. Ele abrirá as preferências do vino.

Clique também configure network automatically to accept connection. Mas não digite nenhuma senha, sua base64 codificada . Depois clique em fechar. Então corra:
sudo -s
export DISPLAY=:0.0
xhost +
/usr/lib/vino/vino-server &
Ele iniciará o servidor vino.
Logout do servidor:
xhost -
Press CTRL+C twice
exit
exit
Em seguida, abra o remmina . Escolha vncsob protocolo.
Na basicguia, coloque o endereço do servidor em servercampo.
Na guia ssh, clique em enable ssh tunnel. Abaixo ssh authentication, poderia ser passwordou public key:

Clique em salvar. E, em seguida, clique duas vezes no nome da conexão (área de trabalho inicial, como mostrado na figura) para começar a navegar na área de trabalho remota.
x11vncé um servidor VNC simples e você não precisará mexer nas configurações do Gnome ou nos 500 firewalls; basta instalar x11vncem todos os seus computadores (com fantoches ou o que você estiver usando para controle de massa).
Em seguida, no computador local, execute:
ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"
Obviamente, troque user@hostpelo nome de usuário e nome do host / IP do computador remoto.
E, em seguida, use um cliente VNC de sua escolha para se conectar localhost:5900. O comando SSH inicia um servidor vnc no computador remoto e, em seguida, faz o túnel dessa porta através do SSH. Você não precisa abrir nenhuma porta (desde que já possa SSH).
Se seus computadores tiverem configurações engraçadas de exibição, é melhor deixar o -display :0segmento no comando SSH. x11vnctentará automaticamente encontrar a exibição correta.
Fonte: askubuntu
vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(no Debian / Ubuntu o visualizador é do tightvnc) ou vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(no Red Hat / Fedora o visualizador é do tigervnc), onde o nível de qualidade no Debian e no Redhat é entre 0 e 9, onde 9 é melhor, mas precisa de conexão rápida.
vncviewerpara conexão lenta. Eu, pessoalmente, provavelmente vou definir QualityLevel=4 or 5porque 0 qualitylevel(o que é 256 colors, eu acho) é muito chato para mim.
-auth guesse executá-lo como root. Muito útil, obrigado!
Supondo que você já tenha configurado um OpenSSH Serverem sua máquina host, primeiro você deve ativar o controle da área de trabalho em sua máquina host. Se você pode habilitar o controle da área de trabalho em sua máquina host localmente, vá para 1a. Se você deve primeiro ativar o controle da área de trabalho em sua máquina host remotamente, vá para 1b.
Em seguida, crie um perfil de Cliente de Área de Trabalho Remota em sua máquina cliente para conectar-se à máquina host através de um túnel SSH e, finalmente, exibir e controlar a área de trabalho da máquina host através de um túnel SSH.
Faça o seguinte na máquina host:
vino-preferences
vino-preferences também em Dash sob Desktop Sharing
Allow other users to view your desktopAllow other users to control your desktopRequire the user to enter this passwordFaça o seguinte na máquina cliente, substituindo 123.123.12.3pelo endereço IP da máquina host:
ssh -Y 123.123.12.3
vino-preferences
vino-preferences também em Dash sob Desktop Sharing
Allow other users to view your desktopAllow other users to control your desktopRequire the user to enter this passwordFaça o seguinte na máquina cliente:
remmina
Remmina Remote Desktop ClientCtrl+ Nou Conexão> Novo

ServerSSHseparador
Enable SSH TunnelSSH Authentication <username>modo eNa máquina cliente, quando solicitado <username>, digite a senha para criar o túnel SSH. Quando for solicitada a senha do VNC, digite a senha que você inseriu anteriormente na máquina host.
Se for bem-sucedido nesta etapa, agora você deve visualizar e controlar a área de trabalho da máquina host a partir da máquina cliente através de um túnel SSH.
Consegui definir uma nova instalação do Ubuntu 16.04 a partir de uma conexão ssh remota com o seguinte script:
#! / bin / bash exportar DISPLAY =: 0 leia -e -p "Senha do VNC: senha" -i "ubuntu" dconf write / org / gnome / desktop / acesso remoto / ativado true dconf write / org / gnome / desktop / acesso remoto / ativado por prompt false dconf write / org / gnome / desktop / acesso remoto / métodos de autenticação "['vnc']" dconf write / org / gnome / desktop / acesso remoto / criptografia requerida false dconf write / org / gnome / desktop / acesso remoto / vnc-password \ "\ '$ (eco -n $ senha | base64) \' \" dconf dump / org / gnome / desktop / acesso remoto / serviço sudo lightdm restart
A citação é importante para qualquer uma das configurações de string (marcações simples entre aspas). Para que o dconf possa escrevê-lo, é necessário acessar o XWindows, e é por isso que a parte DISPLAY de exportação é necessária. Eu acho que você ainda precisa estar logado na área de trabalho na máquina Ubuntu real para se conectar ao VNC depois disso. O comando dump está lá apenas para confirmar que todas as configurações foram mantidas, você realmente não precisa disso.
Opcionalmente, convém fazer isso se quiser manter a exibição sempre ativa:
dconf write / org / gnome / desktop / screensaver / ativado por bloqueio false dconf write / org / gnome / desktop / protetor de tela / ubuntu-lock-on-suspend false dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
Xnestcom o X11 forwording para iniciar remotamente uma sessão e encaminhá-la para o computador atual. (Eu faço isso de tempos em tempos com minha pi) página de manualEu uso Xnestassim:
Xnest :1 -ac &DISPLAY=:1 . /etc/X11/XsessionComo iniciar o servidor Vino remotamente sem encaminhar o X (somente linha de comando)
Faça logon no computador remoto como o usuário que compartilhará sua área de trabalho e encaminhará a porta 5900 para a mesma porta no host local. Com o PuTTY, o redirecionamento é definido em Conexão / SSH / Túneis. Com uma linha de comando, use:
ssh -L 5900:localhost:5900 user@remote-computer
Instale vino-serverse ainda não estiver instalado. Por exemplo:
sudo apt install vino
Ative o compartilhamento da área de trabalho (correspondendo ao número de exibição na 1ª e na 2ª linhas):
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
Inicie um visualizador VNC e conecte-se ao localhostendereço do servidor VNC.
No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
com base na resposta @Khurshid Alam, apresento o seguinte snippet:
ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost
É um comando que não requer nenhuma interação
Ele cria o túnel SSH com encaminhamento de porta, inicia de x11vncmaneira razoavelmente segura e inicia e conecta o visualizador VNC
Requer x11vnc no host de destino, mas nenhuma configuração adicional
No PC do servidor.
No PC cliente (de onde você deseja controlar a interface do usuário do servidor).
Armadilhas.