
Preciso fazer login em vários servidores no trabalho para realizar meu trabalho. Estou ficando cansado de digitar o FQDN de um servidor para acessar. Estou fazendo login/logout via ssh em nossa rede privada. Tenho 99% de certeza de que está em nossa própria rede privada, porque todos os servidores têm endereço IP 10.xyz. Existe uma maneira de fazer ssh em servidores apenas com o nome do host e não com o nome do domínio?
Temos servidores em vários países. A forma como nossos servidores são nomeados é muito longa. É nomeado da seguinte forma:
hostname.country.domainname.com
Estou digitando túnel do carpo
ssh [email protected]
... toda vez que acesso um de nossos servidores. Se eu estiver nos EUA e tentar acessar outro host nos EUA, basta digitar ssh me@hostname2
e conectar-me corretamente. No entanto, se estou nos EUA e tento me conectar a um servidor na Inglaterra, não consigo digitar e me conectar ao arquivo .ssh [email protected]
hostname3
A solução alternativa que fiz foi configurar um alias em meu arquivo ~/.ssh/config para alguns dos servidores. No entanto, não acho viável adicionar mais de 1.000 servidores a esse arquivo. Já adicionei mais de 20 servidores e meus colegas de trabalho acham que sou louco, embora eu ache que eles são loucos por digitar o FQDN quando estão andando por aí.
Existe uma maneira fácil de configurar algo para que não precisemos digitar nosso nome de domínio.com todas as vezes?
Responder1
Você pode usar curinga e usar %h
em sua configuração
por exemplo
Host *.eng
Hostname %h.domainname.com
Agora, quando você fizer ssh foo.eng
isso, tentará se conectar ao 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ê fizer ssh foo.eng
isso, tentará se conectar foo.eng.domainname.com
como 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 de não ser um nome de host válido para mim!)
Então agora você só precisa de uma regra por país.
Responder2
Você pode usar a CanonicalDomains
opção na sua configuração do 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 esta configuração, ssh foo.eng
primeiro tentará foo.eng.domainname.com
e retornará foo.eng
se o host não puder ser encontrado. Da mesma forma, ssh github.com
primeiro tentaremos github.com.domainname.com
, portanto, se você quiser se conectar ao GitHub, seu servidor DNS não deverá retornar registros para hosts não existentes.
O CanonicalizeMaxDots
pode ser usado para controlar quantos pontos podem aparecer no nome do host antes que o ssh o considere totalmente qualificado e não anexe 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 assim, hostname.city.country
precisará aumentá-lo.
Responder3
Se você adicionar
search domainname.com
to /etc/resolv.conf
, e use hostname.country
, ssh
(e outros programas de rede, nesse caso) serão anexados automaticamente domainname.com
para você 1 .
Não acho que adicionar domínios de países diferentes ao seu search
caminho seja uma boa ideia, porque você poderá obter um comportamento inesperado se dois servidores em dois países diferentes compartilharem o mesmo nome de host 2
Acredito que este método seja melhor do que alterar a ssh
configuração porque permite hostname.country
resolver independente do programa que você está usando ( telnet
, VNC,...).
1 Mais precisamente, ele será anexado domainname.com
se não conseguir resolver hostname.country
sozinho.
2 Nesse cenário, hostname
será resolvido para o servidor no país cujo domínio está listado primeiro no search
caminho.