Como configurar o acesso SSH sem senha para o usuário root [duplicado]

39

Eu preciso configurar uma máquina para que a instalação do software possa ser automatizada remotamente via SSH. Seguindo o wiki , eu pude configurar chaves SSH para que meu usuário possa acessar a máquina sem uma senha, mas ainda preciso inserir manualmente minha senha quando uso sudo , o que obviamente um processo automatizado não deveria ter que fazer.

Embora meu /etc/ssh/sshd_config tenha PermitRootLogin yes , parece que não consigo logar como root, presumivelmente porque não é uma conta "real" com uma senha separada.

Como faço para configurar chaves SSH, para que um processo possa fazer login remotamente como root no Ubuntu?

    
por Cerin 22.03.2012 / 18:01

4 respostas

49

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).

    
por bodhi.zazen 06.09.2018 / 04:29
8

Você está confundindo duas coisas diferentes:

O

log sem senha é usado para garantir que as pessoas não consigam acessar seu sistema remotamente, adivinhando sua senha. Se você pode usar o ssh username @ machine e conectar 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. Isso faz exigir que o usuário digite sua senha. Isso acontece se você está conectado remotamente (via SSH sem senha ou protegido por senha) ou se é local na máquina. Você está tentando definir sudo para não pedir sua senha, o que não é recomendado, mas você pode aprender como fazer isso por meio de uma resposta como link

Nota aos futuros leitores desta resposta:

Minha resposta acima não responde à pergunta real do pôster original; ela descreve o que você deve fazer em vez disso. Se você realmente quiser permitir conexões remotas diretamente para a conta root, é necessário ativar a conta root (veja meu comentário abaixo). Novamente, deixe-me dizer NÃO permite logins remotos remotos para sua conta root.

    
por David Oneill 22.03.2012 / 18:09
2

PermitRootLogin controla se o usuário chamado "root" (para ser preciso: qualquer usuário com UID 0) tem permissão para efetuar o login. Se você está registrando como root, você não precisa de sudo para realizar tarefas privilegiadas.

Por outro lado, se você fizer login em uma conta de usuário e usar sudo sem uma senha, deverá configurar o arquivo sudoers sem ter que mexer com /etc/ssh/sshd_config . Veja Como fazer o Ubuntu lembrar para sempre a senha após a primeira vez

    
por Lekensteyn 22.03.2012 / 18:10
2

Q. Faça o login no host remoto como usuário root usando SSH sem senha (por exemplo, ssh root @ remotehost_ip)

Para fazer login no host remoto como usuário root usando o SSH sem senha, siga as etapas abaixo.

1º passo:
Primeiro, você precisa compartilhar a chave pública do usuário local com o arquivo authorized_keys do usuário raiz do host remoto. Há muitas maneiras de fazer isso, aqui está um exemplo.

link

Ou você pode simplesmente copiar e colar o conteúdo de sua chave pública no arquivo authorized_keys do usuário raiz do host remoto.

2º passo:
Configure o ssh para permitir login sem senha no host remoto. Faça o 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 yes".

#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no

#service ssh restart

Comente #PermitRootLogin Sim

3º passo:
Teste sua conexão com sua máquina local usando o usuário cuja chave pública é compartilhada antes.

$ssh root@remotehost_ip
    
por Aanokpe Rai 01.06.2016 / 07:31

Tags