Parte 1: Chave SSH sem senha

Parte 1: Chave SSH sem senha

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_configtenha 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 sudopara 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á sudoexecutar tarefas privilegiadas.

Por outro lado, se você fizer login com uma conta de usuário e usar sudosem 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

informação relacionada