Como SSH para localhost sem senha?

17

EDIT: Colocando exatamente o que foi feito.

Eu preciso do SSH para localhostsem uma senha, a maneira usual de fazê-lo (com chaves públicas) não funciona.

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

Então, como você pode ver no último comando, ele ainda está pedindo a senha !!! Como posso consertar isso? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Adicionando algumas informações sobre o sshd

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: resultado de anúncio de $ ssh -vv localhost

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDIT4:

Apenas verificando se os arquivos são iguais e o md5sum concorda

Canesin
fonte
Você tem RSAAuthentication yese PubkeyAuthentication yesno seu / etc / ssh / sshd_config? O que mostra ssh -vv localhost? Eu apenas tentei isso em uma caixa de 10,04 e não tinha problema ..
Doon
Hy Doon, de fato .. Eu tenho os dois para sim .. Eu adicionei a saída de ssh -vv na pergunta.
Canesin
Por que você precisa ssh para localhost se você já tem acesso?
vtest
Softwares de processamento paralelo uso local ssh / rsh
Canesin
Por favor, não poste a resposta na pergunta ou coloque "RESOLVIDO" no título. Você fez a coisa certa, fornecendo uma resposta. Depois de aceitar a resposta, o sistema mostrará que o problema está resolvido.
ChrisF

Respostas:

10

Primeiro de tudo, você deve entender o que está fazendo:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

Você está copiando a chave pública .ssh/id_rsa.pubatravés do ssh, para o mesmo host (é o localhost, o mesmo host). Se você substituir localhostpor outro host, isso faria mais sentido (mas se você estiver tentando fazer isso por aprender a fazê-lo, tudo bem).

Depois de ter uma cópia da sua chave pública no host remoto (ou o mesmo em que você está), você deve usá-lo para autenticação, no host atual, chamando ssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

Em seguida, se você forneceu uma senha, será solicitado que ela seja inserida depois ssh-add. Se você gerou uma chave privada sem senha, é isso.

Torian
fonte
Sim, eu entendo os comandos, apenas coloquei assim para deixar claro que fiz as coisas usuais com as teclas. Eu fiz o ssh-add ... ele não pede a senha (como eu não usei nenhuma na criação) .. mas, novamente, fazendo $ ssh localhost ls, ele pede a senha
Canesin
Portanto, se você executou ssh-add, edite sua pergunta e coloque tudo o que fez. Quanto mais informações você der, melhor e mais rápida a resposta.
Torian
Desculpe por isso, corrigido agora .. eu adicionei o terminal, fez tudo novamente para colar aqui ..
Canesin
Graças um milhão de vezes! BTW, por que " eval"?
precisa saber é o seguinte
3

Descobriram o problema.

Executando o servidor com depuração:

$sshd -Dd

Eu achei que não era capaz de ler a auth_key

$chmod 750 $HOME

Corrigido.

Canesin
fonte
Quais foram os sinalizadores de arquivo anteriores?
precisa saber é o seguinte
2

Execute os seguintes passos

ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Use o arquivo padrão e a senha vazia (basta pressionar enter nas próximas 2 etapas)

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

Copie o conteúdo de ~ / .ssh / id_rsa.pub para ~ / .ssh / allowed_keys

Verifique se as permissões a seguir

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

Além disso, verifique se as permissões para o diretório .ssh são. Isso também é importante

drwx------.   2 swati swati    4096 May  5 14:56 .ssh
swatisinghi
fonte
11
Garanta 750 permissões em $ HOME
swatisinghi
Na minha máquina (Fedora 28) definindo a permissão de authorized_keysque 0600 resolve o problema, enquanto a permissão do .sshdiretório não tem efeito sobre SSHing localhost
Chang Qian
1

Simplifique a configuração do servidor

Eu acho que você pode precisar desativar a autenticação baseada em senha. Este é um sshd_config que eu uso

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Tente algo mínimo primeiro, depois adicione-o quando precisar de recursos extras.


Atualizar:

Verifique os logs do servidor

No seu EDIT3, vejo que a autenticação de chave pública falha antes que o cliente tente a autenticação baseada em senha. O syslog do seu servidor pode conter algumas mensagens do sshd que esclarecem isso.

Recarregar configurações alteradas

Lembre-se de sinalizar sshdpara recarregar qualquer alteração na configuração. Por exemplokill -HUP $(cat /etc/sshd.pid)

RedGrittyBrick
fonte
Eu acho que a desativação autenticação de senha quando ele não pode sequer entrar sem a senha seria a última coisa que ele quer fazer (bloqueio-se fora completamente)
Amalgovinus
@Amalgovinus: A pergunta foi extensivamente editada desde que publiquei minha resposta inicial. Suponho que poderia excluir esta resposta.
RedGrittyBrick
0

Em relação ao post acima, apesar de enfrentar o mesmo problema, mudei de linha

PasswordAuthentication no

no arquivo / etc / ssh / sshd_config e funcionou.

Além disso, talvez seja melhor usar

reiniciar o serviço sshd

para recarregar as alterações de configuração do sshd.

Nicolas
fonte
0

Outra solução para o recurso SELinux do Red Hat Enterprise Linux 6.5 que impede o sshd de ler $ HOME / .ssh é usar o restorecon, veja meu respondedor aqui /superuser//a/764020/213743 .

buzz3791
fonte
0

Para mim, era tão simples quanto

cat id_rsa.pub >> authorized_keys
user695025
fonte
0

Eu tive o mesmo problema, executei 3 etapas para criar a senha menos login e funciona bem

1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys
Hadi Rahjoo
fonte