Do lado do servidor

Do lado do servidor

sshos clientes (por padrão, pelo menos no Ubuntu 18.04 e FreeBSD 12) sempre verificam se a impressão digital da chave do servidor está no known_hostsarquivo.

Eu tenho um host na LAN que possui inicialização dupla; ambos os sistemas operacionais usam o mesmo IP estático. Eu gostaria de me conectar através sshdeambosdeles, sem encontrar erros.

Obviamente, isso viola as verificações realizadas em known_hosts: se eu aceitar uma impressão digital, ela estará relacionada ao IP do host; quando o sistema operacional é trocado, a impressão digital muda, enquanto o IP é o mesmo, e preciso excluí-lo manualmente known_hostsantes de poder me conectar novamente. Eu gostaria daquela impressão digital,ouo outro, é aceito quando se considera aquela PI.

Tem algumalado do clientesolução para superar esse problema?

Estou usando OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018e OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017.

Observação: não quero "não verificar" a impressão digital do servidor. Só estou me perguntando se é possível relacionar duas impressões digitais alternativas (não apenas uma) ao endereço IP do servidor.

Responder1

Seu problema é que as chaves do host são apenas isso, são uma chave para o host. Na verdade, deveria haver apenas um por host. É claro que existem vários porque existem vários tipos de chaves, mas eu evitaria depender de tipos de chaves para fornecer várias chaves aceitáveis ​​para um único host.

Do lado do servidor

Minha primeira sugestão é que você considere cuidadosamente se realmente deseja fazer isso do lado do cliente. Você poderia tratar esses dois sistemas operacionais como o mesmo host e simplesmente copiar a chave do host de um para o outro.

Se você copiar /etc/ssh/ssh_host*do OpenSSH, poderá usá-los em outros sistemas operacionais. Embora possam precisar de alguma reformatação dependendo do servidor SSH que você executa.


Mas ...

Posso perguntar por que você descartou soluções do lado do servidor? A maneira mais fácil não seria tentar fazer com que ambos os sistemas operacionais usassem a mesma chave de host? – Philip Couling

@PhilipCouling Em parte pela facilidade de uso: um dos sistemas operacionais é o Windows. Em parte, para não transferir chaves de um host para outro, o que às vezes é uma prática desencorajada. Mas o principal motivo é: eu gostaria de obter algum grau de flexibilidade na configuração do cliente ssh, se for possível. – BowPark

Acho que o que você está procurando é uma maneira de tratar os dois sistemas operacionais como hosts diferentes, mesmo que compartilhem um IP e um número de porta.


Do lado do cliente

Talvez a maneira mais confiável seja definir configurações específicas de host para cada sistema operacional. Edite (ou crie) ~/.ssh/configpara adicionar:

Host windows.dualbootbox
    Hostname 192.168.10.20
    UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts

Host ubuntu.dualbootbox
    Hostname 192.168.10.20
    UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts

Você não precisa especificar Hostnamese cada um Hostjá resolve para um IP. Verman ssh_configpara mais opções de configuração.

Com a configuração acima você pode:

ssh [email protected]
ssh [email protected]

Responder2

Muitas maneiras de fazer isso, uma delas é usar StrictHostKeyChecking noao fazer ssh em seus hosts, ele não fará nenhuma entrada emknown_hosts.

ssh -o StrictHostKeyChecking=no <ip>

Ou

ssh -o UserKnownHostsFile=/dev/null <ip>

Ou você pode alterar seu arquivo .ssh/config de acordo com sua necessidade.

informação relacionada