Como ssh para servidores internamente por hostname sem nome de domínio?

8

Eu preciso fazer login em vários servidores no trabalho para realizar meu trabalho. Estou cansado de digitar o FQDN de um servidor para acessar. Estou entrando / saindo via ssh em nossa própria rede privada. Tenho 99% de certeza que está na nossa própria rede privada b / c todos os servidores possuem ip addr 10.x.y.z. Existe uma maneira de ssh em servidores com apenas o nome do host e não o nome do domínio?

Temos servidores em vários países. A maneira como nossos servidores são nomeados é muito longa. É nomeado da seguinte forma:

hostname.country.domainname.com

Estou recebendo a digitação do túnel do carpo ssh [email protected]

... toda vez que eu acesso um dos nossos servidores. Se estou nos EUA e tento acessar outro host nos EUA, posso digitar ssh me@hostname2 e conecto bem. No entanto, se eu estiver nos EUA e tentar conectar-me a um servidor na Inglaterra, não posso digitar ssh [email protected] e se conectar a hostname3 .

A solução que fiz foi configurar um alias no meu arquivo ~ / .ssh / config para alguns dos servidores. No entanto, não acho viável adicionar mais de 1.000 servidores nesse arquivo. Eu já adicionei mais de 20 servidores e meus colegas de trabalho acham que sou maluco, embora eu ache que eles estão loucos por digitar o FQDN ao redor.

Existe uma maneira fácil de configurar algo para que não tenhamos que digitar nosso domainname.com a cada vez?

    
por Classified 22.09.2016 / 02:09

3 respostas

16

Você pode curinga e usar %h em sua configuração

por exemplo

Host *.eng
  Hostname %h.domainname.com

Agora, quando você executar ssh foo.eng , ele tentará se conectar a foo.eng.domainname.com .

Você também pode adicionar outras opções a esta configuração; por exemplo, forçando o nome de usuário

Host *.eng
  Hostname %h.domainname.com
  User me

Agora, quando você executar ssh foo.eng , ele tentará se conectar a foo.eng.domainname.com como o usuário me .

% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known

(bem, obviamente recebo um erro antes que não seja um nome de host válido para mim!)

Agora você só precisa de uma regra por país.

    
por 22.09.2016 / 02:14
9

Se você adicionar

search domainname.com

para /etc/resolv.conf e use hostname.country , ssh (e outros programas de rede, para esse assunto) anexará automaticamente domainname.com para você 1 .

Não creio que adicionar os domínios de país diferentes ao caminho search seja uma boa ideia, pois você pode ter um comportamento inesperado se dois servidores em dois países diferentes compartilharem o mesmo nome de host 2

Acredito que esse método é melhor do que alterar a configuração ssh , pois isso permite que hostname.country seja resolvido, independentemente do programa que você está usando ( telnet , VNC, ...).

Veja resolv.conf(5)

1 Mais precisamente, será anexado domainname.com se ele não puder resolver hostname.country por si mesmo.

2 Nesse cenário, hostname será resolvido para o servidor no país cujo domínio está listado primeiro no caminho search .

    
por 22.09.2016 / 07:27
4

Você pode usar a opção CanonicalDomains na sua configuração ssh.

Adicionar o seguinte ao seu arquivo de configuração ssh fará com que o ssh tente anexar domainname.com a qualquer host que tenha no máximo 1 ponto em seu nome:

CanonicalizeHostname yes
CanonicalDomains domainname.com

Com essa configuração, o ssh foo.eng tentará primeiro foo.eng.domainname.com e retornará para foo.eng se o host não puder ser encontrado. Da mesma forma, ssh github.com tentará primeiro github.com.domainname.com , portanto, se você deseja se conectar ao GitHub, seu servidor DNS não deve retornar registros para hosts não existentes.

O CanonicalizeMaxDots pode ser usado para controlar quantos pontos podem aparecer no nome do host antes de o ssh considerá-lo totalmente qualificado e não anexar domainname.com . O padrão é 1, o que deve ser suficiente para você, dado o esquema que você tem atualmente, mas se você chegar a algo como hostname.city.country , você precisaria aumentá-lo.

    
por 22.09.2016 / 07:12