
ssh
os 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_hosts
arquivo.
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 ssh
deambosdeles, 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_hosts
antes 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 2018
e 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/config
para 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 Hostname
se cada um Host
já resolve para um IP. Verman ssh_config
para 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 no
ao 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.