É mais conveniente fazer login no SSH usando uma senha, porque as chaves SSH precisam ser armazenadas em cada computador [fechado]

2

Eu não quero dizer que seja uma questão opinativa, estou apenas tentando ver se estou perdendo alguma coisa aqui:

Parece que é usado um nome de usuário e uma senha para usar o SSH porque o nome de usuário e a senha podem ser digitados em qualquer computador, enquanto uma chave privada precisa ser armazenada em todos os computadores que você usa para SSH.

Portanto, se você quiser ter a capacidade de usar o SSH em um servidor de qualquer computador, deverá usar o nome de usuário e a senha.

Esta premissa é correta?

    
por Startec 08.04.2015 / 03:20

5 respostas

9

Não, porque se o SSH não encontrar uma chave válida, ela retornará à senha de qualquer maneira. Portanto, você não perde nada por ter as chaves configuradas para suas máquinas principais.

    
por 08.04.2015 / 03:38
8

whereas a private key needs to be stored on every computer you use for SSH.

Esta não é uma maneira correta de usar o SSH. Copiar a chave privada entre computadores é um ponto fraco que pode / deve ser evitado. A maneira correta é gerar um par de chaves em cada computador e adicionar todas as chaves públicas ao arquivo de chaves autorizadas. Você pode copiar uma nova chave pública para outro computador que você já tenha acesso, e usar o ssh para atualizar o arquivo de chaves autorizado com a nova chave pública.

Therefore if you want the ability to SSH into a server from any computer you should stick with username and password.

Isso é verdade, mas sua segurança será ruim porque você está partindo da premissa de que deseja acessar sua conta de "qualquer computador" (que pode ter um rootkit, keylogger e / ou ssh falso instalado).

    
por 08.04.2015 / 04:55
4

I am just trying to see if I am missing something here

Algo que você pode levar em conta é que, normalmente, como administrador de sistema, você terá sua própria estação de trabalho e, nesta estação de trabalho, terá seu perfil de usuário com sua identidade (ou seja, sua chave privada). E, se você estiver usando várias estações de trabalho, idealmente, os arquivos do ambiente do usuário serão replicados. Além disso, se por algum motivo você não puder estar na frente de sua estação de trabalho, você SSH sua estação de trabalho com suas credenciais e, a partir daí, você vai ssh o servidor que você deseja se conectar.

It seems like using a username and password to use the SSH because the username and password can be typed in from any computer whereas a private key needs to be stored on every computer you use for SSH.

Se você conseguir lembrar as senhas de todos os seus servidores, suas senhas serão ruins. Se você precisar acessar um documento onde as senhas são armazenadas para lembrá-las, você também poderá recuperar sua chave privada.

    
por 08.04.2015 / 09:20
1

Usar a autenticação de senha nos seus sistemas é uma prática ruim por vários motivos:

  • Como Atsby disse, ser capaz de se conectar de qualquer computador também permite que qualquer computador possa se conectar aos seus sistemas, mesmo que comprometidos. Manter-se fiel às máquinas confiáveis é do seu interesse.

  • Com a autenticação por senha ativada, um invasor remoto sempre pode ignorar a autenticação de chave pública e efetuar login com sua senha. Agora você está 100% vulnerável se uma de suas máquinas estiver comprometida com um keylogger.

  • Além disso, se você encorajar o comportamento de fazer login a partir de máquinas remotas aleatórias, você acabará por parar de verificar se a impressão digital do servidor remoto está correta e você será exposto a todos os tipos de ataques MITM! Isso significa que você acredita estar se conectando ao servidor no qual deseja ingressar, mas, na realidade, está se conectando a um servidor diferente ou sua conexão é descriptografada por um intermediário e, em seguida, criptografada novamente e enviada ao servidor real.

por 08.04.2015 / 08:44
0

a private key needs to be stored on every computer you use for SSH.

O segundo parágrafo (especificamente, estou focando nesta parte, que citei acima) está correto: se você efetuar login de várias máquinas, precisará ter a chave privada acessível a partir de várias máquinas. Isso significa algumas coisas. Primeiro, cada máquina da qual você fizer login precisará ser confiável para não fazer coisas terríveis com sua chave privada. Máquinas maliciosas não são confiáveis. Segundo, você precisará descobrir uma maneira de colocar sua chave privada nessas máquinas. Isso pode ser inconveniente.

Existem algumas maneiras de contornar isso, se você quiser fazer login de várias máquinas. Uma maneira é efetuar login de uma máquina menos segura em uma máquina segura e ter a máquina segura para armazenar as chaves que funcionam com vários outros sistemas. Isso ainda deixa um elo fraco na cadeia de segurança, porque um invasor pode tentar obter sua senha na máquina do meio. Uma vez obtido, o atacante provavelmente poderá acessar as chaves que o levam para outros sistemas. No entanto, a boa notícia é que você não precisa colocar sua chave privada em todos os computadores que você acessa, então isso oferece um fator de conveniência.

Outra maneira é usar credenciais únicas. (Mais comumente conhecido como: senhas de uso único.) Com esse método, você pode usar um dispositivo confiável para gerar uma frase secreta. Eu sei que algumas pessoas usaram seus telefones inteligentes. Então, você realmente não se importa se sua chave for comprometida (roubada / copiada) depois de ter usado com sucesso a frase-senha, porque a senha não é boa depois disso, de qualquer forma.

Trabalhar com senhas de uso único pode ser um pouco mais conveniente se você normalmente efetuar login no mesmo sistema, pois alguns softwares podem lembrar de alguns detalhes (como um número de sequência), o que exigiria menos trabalho manual de sua parte. Você pode combinar esses métodos: use uma frase secreta de uso único no início de sua atividade SSH e faça login em um sistema confiável. Em seguida, faça referência aos arquivos de chaves nesse sistema para efetuar login em outros sistemas.

Therefore if you want the ability to SSH into a server from any computer you should stick with username and password.
Portanto, o terceiro parágrafo é uma parte de sua premissa com a qual eu não estou concordando, porque eu interpreto sua pergunta como significando que você deve ficar com o jeito que você está fazendo as coisas, usando uma senha padrão. Em vez disso, use as senhas que fazem parte dos métodos de "senha única". Dessa forma, você usa um método de segurança mais complexo (fornecendo melhor segurança, como arquivos de chaves), mas usa um que não requer máquinas não confiáveis para usar arquivos de chaves.

Para apontar na direção certa, o OpenSSH suporta senhas de uso único por meio do método skey, usando um programa chamado skeyinit. Em seguida, para gerar as senhas em um dispositivo móvel, o OTPdroid para Android também suporta isso. Pode haver outras soluções viáveis, mas isso é simplesmente descrever alguns recursos que funcionam bem uns com os outros.

Em uma nota lateral: com a situação que você está descrevendo (vários sistemas), eu recomendo que você se familiarize com multiplexadores de terminal (tmux ou screen). Ele permitirá que você faça algum trabalho (por exemplo, efetuando login do sistema do meio em outros sistemas) e, em seguida, desconecte uma sessão. Então, depois de executar o login inicial de outra máquina, você pode retomar uma sessão desanexada, e alguns de seus trabalhos mundanos (como o login em outras máquinas) podem não precisar ser feitos novamente.

    
por 08.04.2015 / 07:14