Experimente vários sufixos de host ao conectar via SSH

0

Ao se conectar a um host via SSH, eu gostaria de poder simplesmente digitar ssh hostname para se conectar.

No entanto, a configuração que temos atualmente significa que devo digitar um sufixo bastante longo para conectar, semelhante a hostname.hosts.companyname.com .

É possível configurar o SSH para percorrer vários nomes de host antes de desistir de uma conexão sem adicioná-los ao meu arquivo hosts? Por exemplo. se eu digitar ssh hostname , gostaria que o SSH:

  1. Tentativa de SSH para hostname , se isso falhar após um curto tempo limite:
  2. Tentativa de SSH para hostname.hosts.companyname.com , se isso falhar após um curto tempo limite:
  3. Tentativa de SSH para hostname.companyname.com , e se isso falhar, deve imprimir o erro.

No entanto, temos > 1000 hosts e prefiro não adicionar um alias a tudo. Eu preferiria que isso fosse um comportamento padrão.

O acima é um pequeno exemplo. Eu preferiria a capacidade de adicionar algo no intervalo de 30 domínios potenciais a esta lista, e é por isso que resolv.conf search não é uma opção (pois é limitado a 6 domínios).

    
por Connor Bell 17.12.2017 / 23:35

2 respostas

2

Atualize seu DNS /etc/resolv.conf de acordo com estas duas etapas:

  1. Pode haver uma linha domain ou search . Se houver, substitua domain por search no arquivo e continue na próxima etapa.
  2. Anexe hosts.companyname.com companyname.com à lista de pesquisa. Se não houver uma diretiva search (ou domain ), crie uma com esses dois valores.

Exemplo de resultado

nameserver 192.168.1.254
nameserver 192.168.2.254
search hosts.companyname.com companyname.com

Isso permitirá que nomes não qualificados sejam resolvidos por /etc/hosts e DNS de acordo com seus critérios.

    
por 18.12.2017 / 01:32
1

Existem pelo menos duas opções:

arquivo de configuração

Você gera um arquivo ~/.ssh/config com os aliases:

Host hostname
    HostName hostname.hosts.companyname.com

Supondo que os nomes de host corretos são estáticos. Claro, isso é de alguma forma semelhante a mudar o arquivo /etc/hosts .

função da shell

Você define uma função do shell para o nome do comando ssh ou algo que você precisa chamar explicitamente como ssh-hosts .

ssh () {
        hostname="$1"
        test -z "$hostname" && return 128

        for suffix in "" .hosts.companyname.com .companyname.com ; do
                test_hostname="$hostname$suffix"
                if [ -n "$(ssh-keyscan "$test_hostname" 2>/dev/null)"; then
                        ssh "$test_hostname"
                        return $?
                fi
        done
}

Naturalmente, você também pode usar essa abordagem para gerar o arquivo config . Se você não tiver uma lista de todos os nomes de host, poderá usar a função shell para adicionar novos blocos Host ao arquivo config e verificar o arquivo antes de executar ssh-keyscan .

    
por 17.12.2017 / 23:56

Tags