como ssh -Y e, em seguida, su - <outro usuário> e ainda encaminhar aplicativos X para sua máquina local

13

É fácil o suficiente para 'buscar' (ou seja, desenhar localmente) um aplicativo Linux executando remotamente: se eu for ssh -Ypara a máquina remota e executar um aplicativo, esse aplicativo certamente aparecerá o suficiente na área de trabalho local.

Se, no entanto, enquanto estiver na máquina remota, for supara um usuário diferente, não posso encaminhar o aplicativo X para a minha máquina local. Diz wrong authentication.

Não tenho certeza de como lidar com este caso. O echo $DISPLAYainda está correta (definido pelo primeiro ssh -Ylogon), mas o cookie de sessão é provavelmente apenas definido para o usuário inicial que fez logon ssh.

Como superar essa dificuldade e encaminhar outros aplicativos X executados por usuários diferentes?

A razão pela qual não estou ssh'ing diretamente é porque não quero que esse usuário seja acessível através do ssh (é o usuário "virtualbox", que é obviamente um alvo fácil para os bots que tentam ssh nesse servidor) ...

nass
fonte

Respostas:

12

Quando você se conecta a uma máquina de remoção via ssh com o encaminhamento X11 ativado, o ssh no servidor cria um .Xauthorityarquivo no diretório inicial do usuário. Como o ssh escuta o X11 em um soquete TCP, qualquer pessoa pode se conectar. Como qualquer pessoa pode se conectar, precisamos de uma maneira de impedir que qualquer pessoa use seu monitor. Isso é feito com esse .Xauthorityarquivo. O arquivo contém um "cookie" que é apresentado ao servidor X11 que verifica se o cliente deve ter permissão para se conectar.

Ignorando todos os detalhes, se você copiar esse .Xauthorityarquivo para o diretório inicial do usuário de destino (e atribuir a ele a propriedade), poderá conectar-se.

Patrick
fonte
Vale a pena notar que, mesmo depois de fazer isso, a variável DISPLAY precisa ser definida corretamente após a troca de usuários. Isso pode ser um problema ao usar 'sudo', o que pode filtrar o ambiente.
22616 Chris Arguin
8
  1. ssh -Y para a máquina remota como você.
  2. Uma vez lá, digite xauth list. Uma lista de itens MAGIC-COOKIE é exibida. Sua sessão de login provavelmente é a parte inferior da lista. (Verifique isso consultando o nome do host e o código do número UNIX e comparando-o com o nome do host do qual você fez shell e seu host local atual: ## DISPLAY variável env.)
  3. Alterne usuários.
  4. Digite xauth add+ toda a linha MAGIC-COOKIE de cima.
  5. Os gráficos devem aparecer agora. Teste com um rápido xlogo.
Randy
fonte
2
não "+" no xauth add. Por exemplo, apenas xauth adicionar ubuntu / unix: 10 MIT-MAGIC-COOKIE-1 6b49de7c34409d5ac69beab31d12ec94
Tuntable
1
USER="otherusername" && MAGIC_COOKIE=`xauth list | tail -n1` && su -c "xauth add $MAGIC_COOKIE" $USER && su - $USER
precisa saber é o seguinte
3

Gosto da resposta de Randy, mas não funcionou muito para mim.

Aqui está o que eu tenho para trabalhar:

  1. ssh -Y as user1
  2. xauth list | grep `uname -n`
  3. Mudar para usuário2
  4. unset XAUTHORITY
  5. xauth generate :0 .
  6. xauth add :0 . <KEY-FROM-STEP-2>

Observe os dois períodos nas etapas 5 e 6.

Se eu apenas seguir a resposta de Randy, a XAUTHORITYvariável do usuário2 ainda está apontando para o .Xauthorityarquivo do usuário1 . E sua sintaxe da tecla + não funcionou.

Jon Daley
fonte
2

Esta não é uma resposta, por isso, se você encontrar uma, obviamente isso é preferível.

Caso contrário, e esta é a causa raiz do seu enigma:

A razão pela qual não estou ssh'ing diretamente é porque não quero que esse usuário seja acessível através do ssh (é o usuário "virtualbox", que é obviamente um alvo fácil para os bots que tentam ssh nesse servidor) ...

Não me parece um grande raciocínio. "O que os bots visam" ao WRT, um sshd bem configurado é em grande parte irrelevante. Eles circularão pela porta 22 em todo o lugar? Aparentemente sim. Isso significa que eles realmente têm uma chance de sucesso?

Tente pesquisar no Google uma história sobre alguém que teve um bot anônimo aleatório invadido com sucesso pelo sshd. Tenho certeza de que deve ter acontecido com alguém em algum lugar (e, é claro, você talvez nunca saiba), mas não consigo encontrar nenhum relatório sobre isso. Seria interessante ler qual era a configuração usada.

O SSH é muito seguro quando usado corretamente. Caso contrário, o comércio pela Internet não seria viável. Então, por que esses bots se incomodam? Por "usado corretamente", quero dizer, principalmente, com pares de chaves públicas / privadas obrigatórias. Se você fizer isso e estiver confiante de que sua chave privada está segura (e você deveria estar), confie no sshd.

Acho que a razão de todas as "tentativas de invasão" acontecerem é que há um grande número de usuários que não fazem coisas como fazer perguntas sobre U&L;) e não lêem páginas de manual e usam somente a proteção por senha, que é como deixar o seu cartão ATM em uma máquina em algum lugar com uma placa dizendo "Adivinhe!".

No entanto, se você pensar em sua chave privada como seu cartão ATM - como algo fisicamente protegido por você (o que é essencialmente), então o alvo se tornará muito mais etéreo. Tudo o que esses robôs podem fazer é provar que sim, realmente levaria milhares de máquinas milhares de anos trabalhando juntos para forçar uma chave bruta de 2048 bits.

Se você está cansado de ler relatórios de tentativas de invasão, altere sua porta. Eu vi pessoas aqui cocô-cocô isso como "segurança pela obscuridade", no entanto, um sshd devidamente protegido na porta 22 não será menos seguro na porta 57, mas não será incomodado aleatoriamente. É claro que todos os seus inimigos drones poderiam apenas varrer o IP inteiro - mas você sabe o que? Eles não. Eu presumo que isso ocorre porque o que eles estão procurando é alguém executando um sistema que nem sequer olhou /etc/ssh/sshd_config, muito menos se educou e o ajustou.

Cachinhos Dourados
fonte
Eu concordo com tudo o que você diz. mas sempre sou insanamente insegura (não é isso que eles ensinam em muitas situações depois que você se queima?). Para ser sincero, o pc no qual estou tentando fazer logon está sendo um firewall (sem acesso externo). O ssh está em uma porta alta, tem uma senha difícil, mas ainda não consigo deixar de sentir que "virtualbox" é um nome público. aquele que alguém em algum lugar pode optar por incorporar em um código bot. As chaves SSH são uma solução maravilhosa, especialmente se usadas com proteção por senha. Mas eu teria que estar carregando uma distro linux leve no usb para usá-las.
Nass