passwordless ssh não está funcionando

35

Eu também tentei configurar ssh b / w A para B e B para A sem senha. Gerou a chave pública e privada usando ssh-keygen -trsa nas duas máquinas. Usou o utilitário ssh-copy-id para copiar as chaves públicas de A para B , bem como de B para A .

O ssh sem senha funciona de A a B mas not de B a A . Eu verifiquei as permissões da pasta ~ / ssh / e parece ser normal.

A's .ssh permissões de pasta:

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

B's .ssh permissões de pasta:

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

A é um ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 de março de 2009) B é uma máquina debian (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 out 2007)

De A :

#ssh B

funciona bem.

De B :

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password: 

O que essencialmente significa que não está autenticando usando o arquivo /root/id_rsa . Eu executei o comando ssh-add em ambas as máquinas também.

A parte de autenticação do arquivo /etc/ssh/sshd_config é

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files

Estou ficando sem ideias. Qualquer ajuda seria apreciada.

    
por Cuurious 27.07.2011 / 08:28

5 respostas

23

Apenas certifique-se de ter seguido o seguinte procedimento:

Na máquina A

abra um terminal e insira os comandos da seguinte forma:

root@aneesh-pc:~# id

Só para ter certeza de que somos raízes.

Se o comando acima mostrar algo como abaixo, nós estamos root, mude para o root usando o comando su

uid=0(root) gid=0(root) groups=0(root)

1) Crie as chaves.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Eu não usei nenhuma passphrase. Se você precisar de um, pode usá-lo.

2) Copie a chave pública para o arquivo .ssh/authorized_keys da máquina B

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

Agora tente fazer login na máquina com ssh 'root@mylap' e faça o check-in:

~/.ssh/authorized_keys

para garantir que não adicionamos chaves extras que você não esperava.

Substitua mylap pelo nome do host ou ip da máquina que você deseja efetuar o login (ou seja, a máquina B)

3) Login para B sem senha

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

Na máquina B

4) Crie as chaves para efetuar login na Máquina A

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) Copie a chave pública para o arquivo .ssh/authorized_keys da máquina A

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

Agora tente fazer login na máquina com ssh 'root@aneesh-pc' e faça o check-in:

.ssh/authorized_keys

para garantir que não adicionamos chaves extras que você não esperava.

6) Faça o login para A sem senha

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

Se você conseguir concluir estas etapas, estará pronto. Agora você tem duas máquinas com o login ativado por chave ssh (chave pública).

    
por aneeshep 27.07.2011 / 12:25
42

Após configurar o ssh sem senha , ainda me pediram a senha do usuário. Observar /var/log/auth.log na máquina remota apontou o problema:

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

Então, certifique-se de que está certo:

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Embora proibir a gravação de outros usuários na sua pasta .ssh seja óbvio, ter o mesmo requisito para sua pasta pessoal foi mais complicado.

Além disso, verifique /etc/ssh/ssd_config para garantir que as opções RSAAuthentication e PubkeyAuthentication não estejam desativadas. O padrão é yes , então isso não deve ser um problema.

    
O
por Maxime R. 26.12.2011 / 00:16
13

Provavelmente, apenas um problema de permissões de nível mais alto. Você precisa remover permissões de gravação do grupo e outras para o seu diretório pessoal e diretório .ssh. Para corrigir essas permissões, execute chmod 755 ~ ~/.ssh ou chmod go-w ~ ~/.ssh .

Se você ainda tiver problemas, emita o seguinte grep no seu log:

sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

(substitua LOCAL_USER_NAME pelo seu nome de usuário local ...)

Isso deve lhe informar mais sobre o seu problema, supondo que as informações de autenticação do sshd estejam sendo registradas no log seguro, que deve ser por padrão. Se você encontrar erros semelhantes a este:

  

DATE HOSTNAME sshd [1317]: Autenticação recusada: propriedade incorreta ou modos para diretório / caminho / para / algum / diretório

É o problema descrito acima e você precisa encontrar o diretório em questão e remover as permissões de gravação do grupo e de outros.

Quanto à razão pela qual você precisaria restringir as permissões de gravação ao seu diretório pessoal (mesmo que as permissões já estejam restritas em seus diretórios .ssh e subsequentes), permitirá que outros usuários renomeiem seu diretório .ssh e criem um novo. - embora isso seja inutilizável como é (devido a permissões erradas) a correção para a maioria dos usuários provavelmente seria alterar as permissões em vez de verificar o conteúdo do diretório ...

TLDNR : Permitir o acesso de gravação para o grupo e / ou outro ao seu diretório home fará com que o ssh force o login da senha.

    
por KTBiz 03.02.2012 / 17:37
2

você está usando a conta root em cada máquina? Normalmente, no Ubuntu, você usaria uma conta de usuário e concederia privilégios sudo conforme necessário.

Se você usa um usuário não root sudo chown $USER -R ~/.ssh pode corrigir seu problema

Outras coisas a verificar:

verifique se o id_rsa.pub de B está em% s authorized_keys .

verifique A /etc/ssh/sshd_config contém

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
    
por Smithamax 27.07.2011 / 11:32
-3

em / etc / ssh / sshd_config no alvo mudar

  

PermitRootLogin no

para

  

PermitRootLogin yes

depois mata -HUP seu sshd PID:

  

raiz @ dzone2 # ps -ef | grep ssh       raiz 28075 27576 0 nov 17? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh root@dzone2 # kill -HUP 28075 root@dzone2 # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd
    
por Duncan 01.06.2012 / 00:13