Como atribuir um hostname ao túnel SSH

13

estou usando %código% para estabelecer um túnel do meu MacBook para o meu servidor dedicado no meu provedor de hospedagem. Isso funciona bem. Agora quero acessar vários sites de administração no servidor remoto (uma página de status do MongoDB, uma página do RabbitMQ, etc., todos em portas diferentes). Todos eles estão vinculados a 127.0.0.1 na máquina remota. Como posso ajustar esse comando ssh para

  • atribuir um nome ao túnel e usar, e. "my.tunnel.name" no meu navegador
  • para poder definir a porta remota no meu navegador; Gostaria de me conectar a my.tun.name:port, para poder chamar os diferentes sites

Isso é possível com o ssh? Eu li as man pages e pesquisei por dois dias agora, mas parece que não funciona.

- editar 2012-06-01 23: 36 - Graças às respostas fornecidas e comentários, o encaminhamento de porta funciona agora usando

ssh [email protected] -g -L 4321:localhost:28017

Eu posso configurá-lo como um proxy no meu navegador e o navegador tratará qualquer solicitação para localhost: anyport como se fosse feita no servidor remoto. Usar um nome agora não é necessário, pois o navegador é apenas para sites de servidores remotos.

    
por brains_at_work 06.01.2012 / 21:44

3 respostas

11

O que você descreve não é possível. Mas ainda há boas notícias:

O que é possível, no entanto, é estabelecer uma conexão dinâmica com o servidor SSH. Isto irá abrir uma porta no seu computador local para o qual você pode apontar a configuração de proxy do seu navegador e permitir que você use o túnel como um servidor proxy. Mas você tem que digitar um nome de host / ip e porta no navegador como se o navegador estivesse rodando na máquina em que o servidor SSH está ligado.

O comando se parece com isto: ssh [email protected] -D 1234
Em seguida, aponte o proxy do seu navegador para localhost:1234 .

Portanto, se você fizer um túnel para o Servidor A e quiser se conectar ao servidor B, digite em seu navegador qualquer endereço que digitar em um Navegador em execução no Servidor A. Se um navegador em execução no servidor A não puder se conectar ao Servidor B (se o processo no Servidor B apenas escuta em 127.0.0.1) então você ainda não pôde se conectar. Parece que você tem apenas um servidor, mas eu queria ter certeza de que isso estava claro.

Se você tiver apenas um servidor, você faz o tunelamento com a conexão dinâmica, defina seu proxy. Você poderá então digitar "localhost: 1234" (por exemplo) no navegador e ele se conectará ao serviço em execução no servidor remoto na porta 1234.

Nota Securit: Nunca, nunca, nunca configure um servidor onde o root possa fazer o SSH! Falha de segurança grave. Crie uma conta de usuário normal (que permite su ou sudo) e SSH como esse usuário.

    
por 06.01.2012 / 21:47
20

Você pode atribuir um nome usando o fato de seu adaptador de loopback responder basicamente a qualquer endereço na rede 127.0.0.0/8.

Então, em vez de ligar à porta 4321, você poderia ligar para 127.1.2.3:4321. Em seguida, simplesmente configure uma entrada de host que mapeie um nome para o endereço de loopback que você usou para que foo.bar mapeie para 127.1.2.3 .

Na minha configuração SSH em minha estação de trabalho administrativa eu tenho muitos túneis configurados para que eles se conectem a algum endereço no intervalo de loopback, e eu tenho entradas no meu arquivo host para abrir muitos túneis em paralelo usando a mesma porta e distinguir entre eles através do nome.

Então, se você se conectar assim

ssh [email protected] -g -L 127.1.2.3:4321:localhost:28017

E seu arquivo de hosts tem uma linha como essa.

127.1.2.3 my.tunnel.name

Então você deve conseguir se conectar ao my.tun.name:4321 da sua máquina local.

Se você tiver mais espaço de endereço IP na rede, seu cliente ssh poderá conectar um endereço secundário à sua interface Ethernet e usar um de seus IPs reais e, em seguida, configurar entradas no seu DNS se quiser outros sistemas. para poder usar seu túnel SSH.

A opção -L -L [bind_address:]port:host:hostport permitirá que você use qualquer endereço IP válido no sistema local para vincular. Você precisa incluir também a opção -g se quiser que outros hosts possam se conectar através do seu túnel ssh.

    
por 06.01.2012 / 21:50
5

Crie um encaminhamento dinâmico de porta em nível de aplicativo (basicamente, proxy de socks) com o seu túnel SSH e, em seguida, aponte seus aplicativos por este. Para criar um túnel dinâmico, conecte-se da seguinte forma:

ssh [email protected] -D 127.0.0.1:31337

Em seguida, configure seu aplicativo para usar isso como um proxy SOCKSv5.

Se você quiser um nome de host associado a isso, basta adicionar /etc/hosts entradas que apontam para 127.0.0.1, mas uma maneira mais bonita pode ser adicionar 127.0.0.2 para o primeiro túnel, e uma entrada de host para este, 127.0.0.3 para o segundo túnel e uma entrada de host separada para este, etc. Se você adicionar aliases para 127.0.0.1, às vezes, esse alias aparecerá em outras pesquisas de comandos de localhost que podem ser confusas!

Para usá-lo suavemente em um navegador, você pode usar um addon de proxy. Como exemplo, sou a favor do navegador da Web Chrome e, para esse, uso um complemento chamado Proxy Switchy! . Você pode fazer o download aqui: link

Na configuração deste addon eu posso definir vários proxies separados, e então ligar expressões regulares de hosts / URLs para usar certos proxies, assim sempre serei corretamente redirecionado através dos túneis certos sem ter que alternar manualmente. Por favor, deixe-me saber se você precisa de mais esclarecimentos sobre qualquer uma das etapas!

    
por 06.01.2012 / 22:13