Como obter várias janelas físicas para uma sessão ssh?

3

Eu tenho um desktop ubuntu que eu ssh para do meu macbook pro. Freqüentemente, eu me vejo precisando de várias janelas físicas que são colocadas no desktop, talvez para configurar o código lado a lado ou algo assim. Existe uma maneira de conseguir isso sem precisar digitar ssh e digitar minha senha para cada janela física?

Eu não quero usar o ssh passphraseless. Eu não acho que a tela GNU é o que eu quero aqui (que é vários terminais virtuais dentro de um único terminal).

    
por Damonkashu 29.08.2012 / 18:29

3 respostas

4

Sim, o SSHv2 suporta várias sessões na mesma conexão. O OpenSSH suporta isso na forma de "mestre multiplex".

  1. Em ~/.ssh/config , defina o modelo de caminho do soquete:

    Host *
        ControlPath ~/.ssh/S.%l.%r@%h:%p
        ControlMaster auto
    
  2. Ativar conexões multiplexadas:

    • Inicie uma conexão mestre manualmente, adicionando a opção -M (master) a ssh .

      A combinação ssh -fNM pode ser útil para fazer com que o mestre vá instantaneamente para o segundo plano.

      $ ssh -fNM <host>
      
    • Para fazer isso automaticamente (somente o OpenSSH 5.6 e superior), defina ControlPersist no seu ~/.ssh/config :

      Host *
          ControlPersist 10m
      

      Com esta opção, uma conexão mestre será iniciada automaticamente e a opção -M é desnecessária.

  3. Conexões adicionais podem ser abertas simplesmente executando ssh host em novas janelas de terminal. Isso também funciona com sftp , scp e qualquer outra coisa que use SSH.

  4. Quando ControlPersist está em uso, a conexão principal será fechada automaticamente quando não for mais necessária. (No exemplo acima, 10m é dez minutos.)

    Caso contrário, use ssh host -O exit para parar o mestre manualmente. Isso matará todas as conexões para esse host.

Para mais informações, veja ssh (1) (a opção -O ) e ssh_config (5) ( Control* options).

Observação: ao editar .ssh/config , certifique-se de que as seções específicas do host sejam as primeiras e Host * seja a seção última .

    
por 29.08.2012 / 18:49
2

Você provavelmente poderia fazer isso usando ssh -Y . Da página de manual do ssh:

 -Y      Enables trusted X11 forwarding.  Trusted X11 forwardings are not
         subjected to the X11 SECURITY extension controls.

Então, digamos que você faça login na máquina Ubuntu da seguinte forma:

$ ssh -Y user@ubuntu

Você então terá um prompt na máquina remota. Em vez de trabalhar nesse prompt, inicie um emulador de terminal, como gnome-terminal, xterm, aterm, terminator etc etc:

user@ubuntu $ gnome-terminal &

Isso abrirá uma instância do terminal gnome que aparecerá na tela do seu mac. Você pode trabalhar lá e toda vez que quiser um novo terminal rodando gnome-terminal & novamente.

Possíveis problemas:

  1. Dependendo da sua configuração, talvez seja necessário permitir o acesso à sua sessão X (no Mac):

    user@mac $ xhosts +
    

    Você pode desfazer isso por:

    user@mac $ xhosts -
    
  2. Verifique o arquivo de configuração ssh da máquina Ubuntu ( /etc/ssh/sshd_config ) para ter certeza de que esta linha está presente e não comentou:

    X11Forwarding yes
    
  3. Eu acho que isso funciona no OS X. Se não, você pode ter que executar uma sessão X no seu Mac.

por 29.08.2012 / 18:49
0

Uma abordagem simples seria exportar um terminal do seu Ubuntu para o seu Mac.
então tudo que você precisa fazer para outra janela de terminal é algo como xterm & .

    
por 29.08.2012 / 18:48

Tags