Obtendo um servidor desktop remoto em execução no Ubuntu 14.04

2

OK - aqui está algo que eu já trabalhei várias vezes no passado - um servidor X habilitado para XDMCP que serve sessões agradáveis e brilhantes, incluindo um manipulador de login.

O que eu tenho:

  • Uma máquina Ubuntu virtual rodando em ESXi - eu quero que esta máquina seja como um Windows Terminal Server.
  • Uma configuração VNC funcionando via x11vnc - tudo bem se você tiver uma sessão de execução, mas não se quiser fazer login e criar uma nova sessão. Também - bastante confuso em uma caixa multiusuário
  • Diversas experiências com lightdm e gdm , tentando colocar a funcionalidade XDMCP em funcionamento. A edição de /etc/lightdm/lightdm.conf e /etc/gdm/* está funcionando até certo ponto. Eu posso obter o gerenciador de login executando via lightdm, mas uma vez logado, o usuário é deixado pendurado sem sessão para brincar.

Em lightdm (que é onde estou agora), meu lightdm.conf tem isso:

[SeatDefaults]
allow-guest=false
[XDMCPServer]
enabled=true
port=177

Há algumas coisas aqui que eu acho que não estou conseguindo - é aqui que eu gostaria de algumas super respostas:

  • O XDMCP ainda vive (via SSH ou não), embora seja meio antigo e cinza. Existe algo novo (como um novo protocolo) que eu não sei sobre o que deveria estar usando em seu lugar?

  • A base de usuários para esse tipo de coisa está diminuindo e devo estar empregando uma estratégia diferente? Eu realmente não quero porque eu gosto de servidores de terminal.

E - esta é obviamente a resposta que estou realmente procurando:

  • Alguém pode me indicar os pontos exatos nos arquivos de configuração gdm ou lightdm que precisam ser alterados em uma edição do Ubuntu 14.04.2 Desktop (64 bits) completamente padrão?

Eu sei que existem projetos como o LTSP, mas isso não é o que eu quero, já que eu não quero que meus clientes iniciem em uma configuração do Ubuntu ou algo assim - eles só precisam ser capazes de logar como se eles estavam usando a Área de Trabalho Remota para iniciar uma sessão do Windows. Eu estou realmente me sentindo muito desanimado neste momento - eu tive este trabalho super suave há dez anos, mas agora uma solução de trabalho me escapa completamente.

    
por MrMajestyk 24.04.2015 / 13:40

1 resposta

2

OK - então eu descobri finalmente. Como o @gnur sugere, xrdp é a coisa a ser usada, mas não está pronta para uso. Parece que o XRDP que vem com o Ubuntu é antigo (ish), então:

  • O XRDP deve ser criado a partir da origem. Obtenha a fonte aqui e siga o manual muito legal aqui para colocar as coisas em ordem de funcionamento razoável. Sem isso, a reconexão de sessão não funciona, o que é um pouco problemático.

Eu fiz alguns extras para colocar as coisas em forma:

  • O XRDP não funciona como outras X coisas que fazem com xmodmap , portanto, se o teclado não estiver funcionando como você deseja em uma sessão XRDP, será necessário:
    • Faça logon em uma sessão de console real (ou seja, não via XRDP, mas talvez pelo console do ESXi ou fisicamente) e adapte as coisas ao layout do teclado nessa sessão. Experimente setxkbmap -model pc104 -layout <your-layout> ( dk no meu caso)
    • Em seguida, despeje o layout de trabalho em um arquivo .ini que o XRDP pode carregar. Faça isso: xrdp-genkeymap mymap.ini
    • Descubra o que realmente nomear o arquivo, olhando /var/log/xrdp.log e procurando por algo como local keymap file for 0x0406 found . Em seguida, nomeie seu arquivo /etc/xrdp/km-0406.ini . Isso demorou um pouco para descobrir.
  • Modifique seu /etc/xrdp/xrdp.ini para ter uma descrição de sessão assim: %código% As partes principais são [xrdp1] name=sesman-Xvnc lib=libvnc.so username=ask password=ask ip=127.0.0.1 port=-1 delay_ms=2000 e lib - sem o atraso, não tenho desktop após o login em uma sessão XRDP. Parece que a sessão subjacente do VNC demora um pouco para ficar pronta e, se as conexões forem tentadas cedo demais, você não recebe nada.
  • Coloque algo sensato no seu arquivo delay_ms . Eu tenho ~/.xsession , mas que veio com outra esquisitice - conclusão de tabulação em janelas de terminal não funcionou. Aparentemente, o XFCE usa a tecla tab para troca de janela. Para corrigir isso, você precisa editar (talvez também haja uma coisa da GUI) xfce4-session e aplicar a correção descrita aqui .

É isso! Com esta execução, eu tenho um ótimo substituto para o XDMCP que permite aos usuários tratarem as sessões do Ubuntu como fazem as sessões do Windows. Assim como eu queria: -)

EDITAR tendo usado isso há algum tempo, descobri que a solução é viável, mas não tão estável. De tempos em tempos, a reconexão da sessão não funcionará e os usuários serão deixados em um estado limbo, incapazes de efetuar logon. Reiniciar os serviços corrige isso, mas não se sustenta.

Então - eu procurei mais por uma solução de trabalho - e encontrei uma! Meu novo melhor amigo é o x2go , que é um servidor X autônomo com um pacote de cliente especial que vem em vários tipos de sistema operacional .

EDIT 2: OK - então ainda mais sobre isso. Descobri que, embora o X2go seja bastante interessante, o cliente Windows possui um capricho que praticamente o impede de trabalhar com logins SSH baseados em chave, por isso tive de ativar logins regulares do PW para o host da minha área de trabalho. Não é o ideal, mas isso não muda o fato de que o X2go funciona muito bem em todos os outros aspectos.

EDIT 3: Scarygliders tem um script muito legal neste momento que obtém, compila e instala tudo o que é necessário para uma configuração brilhante de sessão RDP. Eu praticamente elimino a necessidade das outras coisas que encontrei. Obtenha os scripts aqui por clonagem. Em seguida, execute ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml . Agora eu tenho um host de desktop que atende cinco usuários, todos fazendo desenvolvimento em Python e tal. Muito bom.

    
por 29.04.2015 / 09:07