Como configuro uma sessão xrdp que reutiliza uma sessão existente?

57

Eu tenho tentado configurar um servidor de terminal RDP com precisão usando o xrdp e estou tendo problemas significativos para obter uma configuração funcional. Quando um usuário faz logon, preciso que ele se conecte à sessão existente desse usuário, se ela existir, caso contrário, inicie uma nova sessão e qualquer sessão iniciada deverá iniciar o LXDE. Que alterações na configuração padrão eu preciso fazer para que isso funcione?

nloewen
fonte
Na minha configuração do XRDP (exceto que eu estou executando o Unity em sessões da área de trabalho e o Unity2D em sessões remotas), o login como usuário captura automaticamente as sessões antigas. Cada usuário está recebendo uma nova sessão toda vez que se conecta?
agc93 31/05
A melhor explicação / solução que eu encontrei na internet podem ser encontradas neste local c-nergy.be/blog/?p=2879 Dê-lhe uma tentativa Espero que esta informação ajuda
gyest

Respostas:

46

Eu tive esse mesmo problema e encontrei uma solução fácil. Inicialmente, instalei o xrdp usando o procedimento padrão:

apt-get install xrdp

Depois disso, é tudo sobre o seu arquivo xrdp.ini, que está localizado aqui:

/etc/xrdp/xrdp.ini

Para abrir e editar o arquivo de configuração do xrdp, use:

sudo nano /etc/xrdp/xrdp.ini

por padrão, o primeiro script de manipulação de sessão xrdp se parece com isso:

[xrdp1]
name=sesman-vnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

A linha importante é que port=-1isso faz com que o xrdp sempre procure uma porta livre para conectar. Se você definir uma porta fixa aqui, o xrdp sempre retornará e se conectará à mesma sessão. Eu mudei o meu para que fique assim:

[xrdp1]
name=customsessionname
lib=libvnc.so
username=myusername
password=ask
ip=127.0.0.1
port=5912

É isso, eu acho que você poderia se safar mudando apenas port=-1para port=5912. Meu xrdp sempre se reconecta à sessão existente sempre usando a mesma porta.

jeffery_the_wind
fonte
2
Essa solução funciona bem para mim, mas devo salientar que qualquer pessoa que se conecte à mesma máquina obterá a mesma sessão, mesmo que alguém tenha feito login nessa sessão.
VeeTheSecond
7
isso só funciona se já houver uma sessão existente. Pela primeira vez em, não há sessão para que ele não consegue se conectar à porta 5912.
stu
4
tem o mesmo problema .. parece que, por padrão, tenta abrir uma conexão usando o 5911port (você pode perceber quando o xrpd está se conectando). Então mudei de port = -1 para port = ask5911. Desta forma, 5911 é usado por padrão, mas você pode alterar essa porta quando você entra usuário / senha ao se conectar (por isso não há necessidade de reconfigurar nada em caso de erros ..)
Maxym
1
Esse comportamento depende estritamente da implementação do servidor vnc. No centos, estou usando o tigervnc, que sempre se junta à sessão existente ou cria uma com a configuração port = -1. No entanto, no ubuntu, o padrão é tightvncserver, que não tem o mesmo comportamento. Basta jogar com implementações vnc, se houver.
Denys S.
1
A porta padrão é 5910, consulte askubuntu.com/a/527975/592751
Pedi T.
16

Eu gostaria de melhorar uma resposta existente. A resposta mais votada foi editar o xrdp.iniarquivo para alterar a porta para um valor fixo no lugar do -1curinga para encontrar uma porta aberta.

Eu tentei isso, mas recebi um erro ao conectar pela primeira vez, e acabei voltando ao -1valor. A frustração rapidamente se manifestou, com o problema de não continuar, então olhei para o arquivo ini novamente.

O que funcionou para mim e foi realmente apenas algo que me interessou foi o seguinte:

Edite o /etc/xrdp/xrdp.ini

Abaixo de [xrdp1]onde port=-1eu notei o nome do usuário e a senha foram configurados para ASK. Se você definir, port=askvocê terá a opção no prompt de login com nome de usuário e senha para escolher uma porta.

Em vez de instalar pacotes adicionais, achei a solução mais fácil definir a opção ask, conecte a PRIMEIRA sessão (se ainda não tiver uma em execução) na porta -1 no login com nome de usuário e senha.
Após desconectar a sessão, para retomar uma sessão existente, sempre faça login na porta padrão: 5910 e você continuará a sessão existente até reiniciar o computador remoto ou encerrar a sessão ao fazer logoff.

Para resumir:

  • Edite o xrdp.iniarquivo
  • conjunto port = ask
  • conectar-se a partir da máquina remota e, no login, se você não tiver uma sessão existente, especifique a porta -1
  • Para retomar uma sessão, digite o padrão de 5910
QuestionReality
fonte
Trabalhou para mim. Embora eu não me lembre do 5910 daqui para frente.
Vesanto
7
Consegui alterar com êxito a entrada para: [xrdp1]. . . port = ask5910 Isso padroniza a porta para 5910, para que você não precise se lembrar como a Vesanto disse (eu também nunca me lembraria dela, Vesanto!), mas também oferece a opção de alterá-la se você deseja gerar uma nova sessão da área de trabalho por exemplo, porta 5911. Testei isso no Ubuntu 16.04.
hoekma
2
^ Essa é a melhor solução que encontrei também.
Nacht - Restabelece Monica
Em um Rpi3 recém-inicializado, iniciei uma nova sessão com a porta -1 e entrei com um computador diferente e usei a porta 5910 - ela pegou a mesma sessão. Quando você move coisas em um computador, pode ver isso acontecer no outro.
precisa saber é o seguinte
Se você fizer isso novamente, mas fornecer um número de porta -1, será exibida uma nova sessão.
precisa saber é o seguinte
7

Eu odeio ser o cara que apenas solta um link, mas segui o guia aqui e funcionou muito bem. Agora posso entrar em uma sessão RDP a partir dos hosts Linux e Windows e reconectar-me à minha sessão antiga, se já tiver feito login antes. Este é o melhor guia para a instalação que encontrei. Infelizmente, a instalação padrão do pacote causa muito mais problemas do que fazê-lo da fonte.

O autor desse link também criou uma ferramenta automática para instalá-lo e configurá-lo, mas eu não tentei, portanto, tenha cuidado.

Espero que ajude você.

agc93
fonte
Obrigado por fornecer o link. Isso implica que nenhum pacote deb de trabalho existe para o xrdp?
Janeiro
Eu vi um há algum tempo, mas ele não funcionou corretamente com as versões mais recentes do Ubuntu. Tanto quanto sei, não existe um pacote .deb funcionando para o XRDP nas versões do Ubuntu após a versão 10.04. Feliz por provar que está errado, é claro, pois esse método é decepcionantemente irritante.
12132 Agc93
veja a minha solução que é super automático roteiro para ubuntu 12 64 bitshttp://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855
Eu acho que o que faz sentido para essa pergunta é criar seu próprio .xsessionarquivo no diretório home. Por exemplo, se você usar gnome-desktop, executarecho gnome-session >> ~/.xsession
artificerpi
4

O problema é que o xrdp nem sempre se conecta à mesma porta. Caso contrário, e você esqueceu o número da porta, você pode entrar em uma sessão ssh e descobrir o número

netstat -tulpn | grep vnc

e você terá algo como o seguinte

tcp        0      0 127.0.0.1:5911          0.0.0.0:*               LISTEN      5365/Xvnc

e então você sabe que 5911 foi a porta à qual você se conectou.

YH Wu
fonte
2

na tela de logon com a caixa xrdp, quando você se conectar à área de trabalho remota, deve haver uma caixa suspensa; a partir daqui, escolha "vnc-any" e insira o endereço IP do computador e a senha, mas deixe a porta na qual é, isso deve ajudar :)

Dewi Jones
fonte
Parece o mais fácil e funciona para mim. Ótimo. Nenhuma instalação complicada, compilação etc.
josef
1

1. Modifique o xrdp.ini:

sudo vi /etc/xrdp/xrdp.ini

2. Altere a configuração da porta port=ask-1na sua regra de conexão:

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=ask-1

Reinicie o serviço xrdp

sudo service xrdp restart

Você deverá ver a figura a seguir ao fazer login na área de trabalho remota. insira a descrição da imagem aqui

1. No primeiro login, você pode ver este número da porta. Exemplo: 5912: insira a descrição da imagem aqui

Se você esquecer este número da porta, poderá usar o seguinte comando para verificar:

netstat -peant | grep 59 | grep Xvnc

2. Você pode reconectar a última sessão pelo número da porta. insira a descrição da imagem aqui


Ref: http://c-nergy.be/blog/?p=5305

W. Dan
fonte
0

Eu encontrei esse problema em uma máquina Debian. Utilizou o X11RDP-o-Matic para criar pacotes xrdp 0.7. Antes de atualizar para o systemd, a reconexão de sessão xrdp funcionou bem.

Olhando para a árvore do processo, pude ver que as sessões não eram mais filhos de xrdp-sesman. Acabou sendo um problema de permissão ao usar o systemd. O Google encontrou um patch que resolve o problema.

Como você identifica uma reconexão de trabalho? Execute ps axfe observe a árvore de processos xrdp-sesman. X11rdp, xrdp-chansrv, xrdp-sessvctodos deveriam estar funcionando quando criança. Caso contrário, xrdp-sesmannão saberá como se reconectar à sessão.

Aqui está o que parece ao trabalhar:

bom processo de sessão xrdp

h0tw1r3
fonte
0

Aqui está o que eu fiz. Certifique-se de que o tigervnc-server esteja instalado para que possamos usar o Xvnc. Inicie uma sessão VNC com a configuração padrão (na verdade, segui o guia de instalação do Arch Linux para TigerVNC). Em seguida, configure seu Xrdp para usar sempre essa sessão do VNC. Defina também o TigerVNC para iniciar na inicialização ou algo assim. Esta é a única seção VNC no meu arquivo xrdp.ini:

[vnc-any]
name=vnc-any
lib=libvnc.so
ip=localhost
port=5901
username=na
password=YOURPASSWORD
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000
Nevar
fonte
-1

Esse tópico do UbuntuForum parece útil - eu mesmo não testei - no entanto, copiei a solução fornecida aqui para concluir esta resposta.

Configuração do RealVNC

1. Desinstalação do servidor Ubuntu VNC padrão (Vino):

Vá para: Sistema -> Administração -> Gerenciador de Pacotes Synaptic Pesquise o pacote "Vino", Marcar para remoção, Aplicar.

2. Instalação do TightVNC e XRDP:

Enquanto você estiver usando o Synaptic Package Manager, seacrh para o pacote "tightvnc" (tenha cuidado, não " xtightvnc ") e Marque para instalação. Da mesma forma, procure o pacote "xrdp" e marque também para instalação. Aplique. PS: se você quiser, poderá descartar qualquer outro pacote "vnc" que não seja necessário!

3. Configuração do XRDP (opcional)

Abra um terminal e digite os três seguintes comandos:

 cd /etc/xrdp
 cp xrdp.ini xrdp.ini.bak 
 sudo gedit /etc/xrdp/xrdp.ini

Remova as seções Xrdp2-Xrdp6, deixe apenas a seção Xrdp1. Seu xrdp.ini deve ficar assim:

[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1

[xrdp1]
name=RDP_To_TightVNC
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

4. Conectando

Reinicie o sistema e você está pronto para conectar!

Para conectar-se a partir de outra máquina Ubuntu, use: Aplicativos -> Internet -> Terminal Server Client, digite o IP da sua máquina Ubuntu VNC, use RDPv5 ou RDP, clique em Conectar!

Para conectar-se a partir de uma máquina Windows, use: Iniciar -> Executar -> mstsc, digite o IP da sua máquina Ubuntu VNC, clique em Conectar.

Quando conectado, use as credenciais da sua conta de usuário Ubuntu (u / ne p / w) e faça o login remotamente na área de trabalho.

Rahul Virpara
fonte
Você realmente testou isso? Parece que você acabou de copiar e colar o link literalmente. Se você copiar e colar, confirme a fonte na sua resposta.
fossfreedom
@fossfreedom não, eu não testei, mas tentei ajudar. BTW eu já mencionei fonte em this may help you.
Rahul Virpara
Talvez você deva ser mais explícito quanto à sua fonte e à veracidade da resposta. Veja minha edição.
fossfreedom