Existem duas maneiras de fazer isso:
Uma chave: ssh diretamente do localhost para o root @ remote
-
Gere um novo par de chaves, se ainda não o fez.
ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
-
Copie a chave pública na conta raiz da máquina remota:
ssh user@remote sudo -i bash -c "mkdir -p .ssh && cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub (You will need to enter one or two passwords.)
-
Teste para ver se funcionou:
ssh [email protected]
Duas chaves: ssh para usuário @ remoto usando sua chave local, então ssh para root @ remoto usando a chave do usuário no controle remoto
-
Faça login na máquina remota como o usuário
ssh [email protected]
-
Crie um par de chaves na máquina remota (siga o passo 1 acima)
-
Copie a chave na conta do root:
sudo -i bash -c "mkdir -p .ssh && cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub
-
Como usuário no remoto, teste-o:
ssh root@localhost (No password required)
-
Efetue logout e tente os dois saltos da sua máquina doméstica:
ssh [email protected] ssh root@localhost
-
Se isso funcionar, agora você pode bloqueia tentativas de login raiz de IPs externos .
Problemas
Se os testes falharem:
-
Talvez seja necessário verificar
/etc/ssh/sshd_config
no host remoto para garantir que você tenha uma linha sem nenhum comentário#
:PubkeyAuthentication yes
e também:
PermitRootLogin without-password
ou:
PermitRootLogin yes
Se você precisar alterar alguma linha, reinicie o servidor ssh depois:
sudo -i service ssh restart
-
Pode ser necessário definir uma senha para root na máquina remota (mesmo que você não pretenda usá-la!):
sudo -i passwd
Isso não é realmente desejável, mas pode ser útil para a depuração.
Para desativar a senha do root novamente, execute:
sudo passwd -l root