Devo permitir a chave do host desconhecido ao usar o SFTP?

5

Eu mudei de FTP com TLS para SFTP e agora aparece uma caixa de diálogo quando tento conectar dizendo Unknown Host Key para www.example.com. Em seguida, apresenta duas opções Negar e Permitir.

O que isto significa? Devo selecionar Permitir ou Negar?

1,21 gigawatts
fonte
Quando uma vez você aceitou a chave permanentemente, e algum dia você se conectou e uma caixa de diálogo aparece dizendo "a chave mudou e é diferente da chave armazenada local!" - então você deve se preocupar e ser cuidadoso.
Daniel W.
@DanFromGermany direito. Estou usando o Cyberduck e aparece a pergunta toda vez que me conecto para fazer o upload ou atualizar o diretório. Há uma opção para [] Sempre aceitar e é aí que eu me pergunto se eu selecionar essa opção será que vai me dizer quando mudou. Pelo que você está dizendo eu posso escolher sempre aceitar e ele me dirá se ele muda do valor armazenado.
1,21 gigawatts
1
Normalmente existem 3 opções: 1. Armazene permanentemente e avise quando mudar 2. Use apenas uma vez 3. Cancelar. Não existe uma opção "aceitar sempre, mesmo se mudar", porque isso contesta toda a lógica por trás da autenticação de chave pública, seria muito inseguro. Então, sim, ele mostrará um grande aviso quando a chave pública armazenada e a chave pública do Servidor não corresponderem mais.
Daniel W.

Respostas:

9

O SFTP é baseado no SSH; os hosts aos quais você se conecta, assim como com o ssh, fornecerão uma chave exclusiva que permite identificá-los. Se você aceitar a chave, a qualquer momento no futuro, você se conectará ao mesmo host, a chave fornecida será verificada em relação àquela fornecida pela primeira vez (que é armazenada em $ HOME / .ssh / known-hosts) e se os dois corresponderem você não será perguntado novamente; Se, em vez disso, as duas chaves não corresponderem, você será avisado de um possível ataque (um ataque Man In The Middle, MTIM).

Então é basicamente um recurso de segurança. O SSH é baseado no TOFU (Trust On First Use). O que significa que você terá que aceitar a chave após verificar com o sysadmin que a chave apresentada é de fato deles, e então prosseguir para estabelecer a comunicação.

EDITAR:

Como verificar se estamos recebendo a chave certa, sem perguntar um sysadmin (possivelmente inexistente)? Quando você se conecta a um servidor SSH / SFTP pela primeira vez, é apresentado algo como o seguinte:

    $ ssh me@remote
      The authenticity of host '[remote]:22 ([192.168.1.72]:22)' can't be established.
      ECDSA key fingerprint is b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84.
      Are you sure you want to continue connecting (yes/no)? 

Anote o tipo de impressão digital (ECDSA, acima) e a impressão digital em si, b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84acima. Agora vá para o servidor (fisicamente ou, no caso de um VPS, para o console) e, sem necessidade sudo su, vá para / etc / ssh. Você verá que existem muitos .pubarquivos; um é ssh_host_ecdsa_key.pub (o tipo de impressão digital que nos foi apresentado). Agora, emita este comando:

   $ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub

Sua saída deve corresponder à impressão digital que você ofereceu acima. Em caso afirmativo, você pode aceitar a impressão digital da chave na sessão ssh e prosseguir para o ssh no servidor.

Não há necessidade de importar nada do servidor: o ssh cuidará disso para você.

MariusMatutiae
fonte
Obrigado pela excelente explicação. Então, se eu estou me conectando à minha empresa de hospedagem, deve haver um local onde eu possa encontrar essa chave? Então eu baixá-lo em meu diretório de hosts conhecidos?
1,21 gigawatts
1
@ 1.21gigawatts Por favor, veja minha edição.
MariusMatutiae
1

Esta é uma versão editada do meu guia Onde obtenho a impressão digital da chave de host SSH para autorizar o servidor?


Você deve obter uma impressão digital da chave de host SSH junto com suas credenciais do administrador do servidor. Conhecer a impressão digital da chave do host e, assim, poder verificá-la é parte integrante da proteção de uma conexão SSH. Impede ataques man-in-the-middle .

No mundo real, a maioria dos administradores não fornece a impressão digital da chave do host.

Se a ordem para obter a melhor segurança possível, você precisa se conectar ao servidor usando a maneira mais segura disponível. Tome todas as precauções possíveis para garantir a segurança de sua máquina local e uma linha para o servidor. Por exemplo, se você precisar obter a chave do host para verificar a conexão com o servidor de um site externo (por exemplo, de casa ou um cliente), mas tiver acesso físico ao site do servidor, conecte-se ao site do servidor (por exemplo, seu local de trabalho) .

Você também pode perguntar a qualquer pessoa com acesso físico ao servidor (idealmente, o administrador). A chave do host é apenas uma e, portanto, o mesmo para todos os usuários. Observe também que a impressão digital da chave do host é gerada apenas a partir de uma parte de chave pública da chave do host. Portanto, não é secreto e pode ser enviado com segurança através de canais de comunicação não criptografados (mas confiáveis).

Um caso especial é obter a chave do host de um servidor, que você é um administrador de si mesmo, mas não tem uma linha segura direta para se conectar. Isso é comum para servidores virtuais ou servidores em uma nuvem. Nesse caso, um provedor de servidor deve ter uma solução específica. Por exemplo, um servidor especializado na mesma rede privada do seu servidor, com chaves de host conhecidas publicamente. Você pode se conectar a este servidor especializado e, a partir dele, conectar-se com segurança ao seu servidor (por exemplo, usando o terminal SSH). À medida que você se conecta à rede privada, pode confiar com segurança em qualquer chave do host. Uma vez conectado ao seu servidor, adquira sua chave de host. Com isso, você pode finalmente conectar-se diretamente, mas com segurança, através de uma rede pública. Como alternativa, o provedor do servidor pode fornecer a chave do host por meio de alguma interface administrativa.

Por exemplo, veja meus guias para:

Martin Prikryl
fonte