
Preciso configurar uma máquina para que a instalação do software possa ser automatizada remotamente via SSH. Seguindoa wiki, consegui configurar chaves SSH para que meu usuário possa acessar a máquina sem uma senha, mas ainda preciso inserir minha senha manualmente quando uso sudo
, o que obviamente um processo automatizado não deveria ser necessário.
Embora o meu /etc/ssh/sshd_config
tenha PermitRootLogin yes
, não consigo fazer login como root, provavelmente porque não é uma conta "real" com uma senha separada.
Como configuro chaves SSH para que um processo possa efetuar login remotamente como root no Ubuntu?
Responder1
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 étemporariamentepermitir que o root faça login via 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ê faz o ssh)
Primeiro crie uma chave ssh sem senha. Eu sugiro fortemente que você dê um nome a ele em vez de usar o padrão
ssh-keygen -f foo
A opção -f especifica um nome de arquivo, foo é um exemplo, use o nome que desejar.
Quando for solicitada uma senha, basta pressionar a tecla Enter e você 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 que o root faça ssh no servidor.
No servidor (onde você faz o ssh TO)
editar/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Certifique-se de permitir que o root faça login com a seguinte sintaxe
PasswordAuthentication yes
PermitRootLogin yes
Reinicie o servidor
sudo service ssh restart
Defina uma senha root, use uma senha forte
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 digite a senha root do servidor quando solicitado.
Teste a chave
ssh -i ~/.ssh/foo root@server
Supondo que funcione, desative uma senha de root e desative o login com senha.
No servidor:
sudo passwd -l root
Editar/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 ser capaz de fazer ssh com sua chave sem uma senha e não deve ser capaz de fazer 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 a execução de comandos sem senha.
Isso é respondido aqui em dois lugares:
Dos dois, sugiro permitir o mínimo de comandos possível (primeira resposta) em vez de todos os comandos (segunda resposta).
Responder2
Você está confundindo duas coisas diferentes:
log sem senha é usado para garantir que as pessoas não possam fazer login em seu sistema remotamente adivinhando sua senha. Se você puder usar ssh username@machine e conectar-se sem uma senha, isso está configurado corretamente e não tem mais nada a ver com isso.
sudo
é usado para permitir que uma conta de usuário normal faça algo com permissões de superusuário. Essefazexigir que o usuário digite sua senha. Isso acontece quer você esteja conectado remotamente (via SSH sem senha ou protegido por senha) ou localmente na máquina. Você está tentando configurar sudo
para não pedir sua senha, o que não é recomendado, mas você pode aprender como fazer isso através de uma resposta comohttps://askubuntu.com/a/74083/6161
Nota para futuros leitores desta resposta:
Minha resposta acima não responde à pergunta real do autor da postagem original, ela descreve o que vocêdevefaça em vez disso. Se vocêrealmentedeseja permitir conexões remotas diretamente com a conta root, você precisa habilitar a conta root (veja meu comentário abaixo). Mais uma vez, deixe-me dizerNÃOpermitir logins remotos em sua conta root.
Responder3
Q. Faça login no host remoto como usuário root usando SSH sem senha (por exemplo ssh root@remotehost_ip)
A. Para fazer login no host remoto como usuário root usando SSH sem senha, siga as etapas abaixo.
1º Passo:
Primeiro você deve compartilhar a chave pública do usuário local com o arquivoauthorized_keys do usuário root do host remoto. Há muitas maneiras de fazer isso, aqui está um exemplo.
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
Ou você pode simplesmente copiar e colar o conteúdo da sua chave pública no arquivo autorizado_keys do usuário root do host remoto.
2º passo:
Configure o ssh para permitir login sem senha no host remoto. Faça login no host remoto e edite o arquivo /etc/ssh/sshd_config e reinicie o serviço ssh. Não se esqueça de comentar "PermitRootLogin sim".
#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no
#service ssh restart
Comente #PermitRootLogin sim
3º passo:
Teste sua conexão de sua máquina local usando o usuário cuja chave pública foi compartilhada anteriormente.
$ssh root@remotehost_ip
Responder4
PermitRootLogin controla se o usuário chamado "root" (para ser mais preciso: qualquer usuário com UID 0) tem permissão para fazer login. Se você estiver logando como root, não precisará sudo
executar tarefas privilegiadas.
Por outro lado, se você fizer login com uma conta de usuário e usar sudo
sem senha, deverá configurar o arquivo sudoers sem precisar mexer no arquivo /etc/ssh/sshd_config
. VerComo fazer o Ubuntu lembrar para sempre a senha após a primeira vez