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

4

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

O que isso significa? Devo selecionar Permitir ou Negar?

    
por 1.21 gigawatts 06.07.2015 / 11:33

2 respostas

8

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).

Portanto, é 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 depois de 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 própria impressão digital, b2:2d:52:1a:40:c2:f9:ca:9a:42:86:76:f4:0b:eb:84 acima. Agora vá para o servidor (fisicamente ou, no caso de um VPS, para o console), e, sem precisar sudo su , vá para / etc / ssh. Você verá que existem muitos arquivos .pub ; 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 oferecida 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ê.

    
por 06.07.2015 / 11:44
1

Esta é uma versão editada do meu guia Onde eu 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 você deseja obter a melhor segurança possível, é necessário 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, a mesma 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 é segredo e pode ser enviado com segurança por 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 ainda 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 se conectar diretamente, ainda que 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 os guias my para:

por 06.07.2015 / 15:03