Chave pública / privada configurada no CentOS6 - Ainda me permitindo conectar sem chave privada

0

Eu estou quebrando meu cérebro aqui e eu estava esperando que eu pudesse conseguir alguma ajuda. Eu tenho um VPS com o CentOS 6. Eu notei um monte de tentativas de login via SSH, então eu queria bloqueá-lo com autenticação baseada em chave. Aqui está o que eu fiz até agora ...

Executei o seguinte na minha máquina cliente (OSX)

ssh-keygen -t rsa

Isso foi feito com configurações padrão (sem senha, nomes padrão, etc.)

Defina as seguintes permissões no meu cliente

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

copiei minha chave pública para a raiz da minha pasta de usuário no meu VPS usando o seguinte comando (nome falso / ip)

scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub

Aqui eu notei que eu não tinha um arquivo authorized_keys dentro do meu .ssh. Então usei o toque para criá-lo. Então eu usei o CAT para copiar o conteúdo do .pub no arquivo authorized_keys

cat id_rsa.pub >> ~/.ssh/authorized_keys

e defina as permissões apropriadas em .ssh e authorized_keys

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Em / etc / ssh / sshd_config eu descomentei o seguinte

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Eu reiniciei o sshd

service sshd restart

Pelo que li, isso é tudo o que preciso fazer para habilitar a autenticação de chave pública. No entanto, quando tento SSH sem fornecer -i privatekey, posso entrar em todos os dispositivos.

Qualquer ajuda seria muito apreciada.

    
por Barbados Slim 02.12.2017 / 04:21

2 respostas

2

Se uma chave do cliente estiver no local padrão ~/.ssh/id_$alg , ela será usada automaticamente, a menos que você use -o IdentitiesOnly=yes (ou a entrada do arquivo de configuração equivalente) para desativá-la. Se você conseguir se conectar a partir de um cliente que não tenha uma cópia da chave privada e sem especificar uma senha, a autenticação no servidor não será definida corretamente. Se você quiser usar a autenticação de chave pública , somente privada, & gt ;, configure PasswordAuthentication no .

PS: anything >>file (e anything >file também) cria o arquivo, se ele não existir, você não precisa touch dele. E o diretório remoto padrão para scp é seu homedir, então você normalmente não precisa especificar isso.

Além disso:

RSAAuthentication é para SSHv1 que foi quebrado há décadas e nunca deve ser usado e está desativado por padrão em todas as versões do OpenSSH por um longo tempo e removido completamente do lado do servidor a partir de 7.4, embora eu espere que o CentOS 6 provavelmente não tenha que uma versão recente.

PubkeyAuthentication yes e AuthorizedKeysFile .ssh/authorized_keys (mais authorized_keys2 , que é uma relíquia e não é mais usado) são os padrões, então você não precisa realmente descomentá-los.

    
por 02.12.2017 / 07:00
0

Você precisa desabilitar explicitamente a autenticação de senha no servidor se quiser permitir somente chaves públicas / privadas. Na sua alteração de /etc/ssh/sshd_config ou adicione a configuração:

PasswordAuthentication no

Eu também gosto de desabilitar explicitamente todos os outros tipos de autenticação que eu não uso, como Kerberos e GSSAPI.

    
por 04.11.2018 / 06:38