Parte 1: chave SSH sem senha
Para configurar uma conexão SSH sem senha para o usuário root, você precisa ter acesso root no servidor. O método mais fácil é temporariamente permitir que o root efetue login no ssh via senha. De uma forma ou de outra, você precisa de acesso root no servidor para fazer isso. Se você não tiver acesso root no servidor, entre em contato com o administrador do servidor para obter ajuda.
No cliente (de onde você é ssh FROM)
Primeiro, faça uma chave ssh sem senha. Eu sugiro que você dê um nome ao invés de usar o padrão
ssh-keygen -f foo
A opção -f especifica um nome de arquivo, foo é um exemplo, use qualquer nome que você desejar.
Quando você for solicitado a fornecer uma senha, basta apertar a tecla enter e você irá gerar uma chave sem senha.
Em seguida, você precisa transferir a chave para o servidor. O método mais fácil é usar ssh-copy-id
. Para fazer isso, você deve permitir temporariamente o root para ssh no servidor.
No servidor (onde você ssh TO)
edite /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Certifique-se de permitir que o root faça o login com a seguinte sintaxe
PasswordAuthentication yes
PermitRootLogin yes
Reinicie o servidor
sudo service ssh restart
Defina uma senha de root, use uma senha strong
sudo passwd
No cliente:
Do cliente, transfira a chave para o servidor
ssh-copy-id -i ~/.ssh/foo root@server
altere "foo" o nome da sua chave e insira sua senha de root do servidor quando solicitado.
Teste a chave
ssh -i ~/.ssh/foo root@server
Assumindo que funciona, desmarque uma senha de root e desabilite o login de senha.
No servidor:
sudo passwd -l root
Edite o /etc/ssh/sshd_config
sudo nano '/etc/ssh/sshd_config'
Altere o seguinte:
PasswordAuthentication no
PermitRootLogin without-password
Reinicie o servidor
sudo service ssh restart
No cliente (teste):
Agora você deve poder usar o ssh com a sua chave sem uma senha e você não deve ser capaz de usar o ssh como qualquer usuário sem uma chave.
ssh -i ~/.ssh/foo root@server
Parte 2: Executando comandos via sudo sem digitar uma senha
Você configura o sudo para permitir que você execute comandos sem uma senha.
Isso é respondido aqui em dois lugares:
Dos dois, sugiro permitir o menor número possível de comandos (primeira resposta) do que todos os comandos (segunda resposta).