无密码 ssh 不起作用

无密码 ssh 不起作用

A我也尝试过在BB之间设置无密码 ssh 双向通信 。在两台机器上A使用 生成公钥和私钥。使用实用程序将公钥从复制到以及复制到。ssh-keygen -trsassh-copy-idABBA

无密码 ssh 从A到有效,B但从notB无效A。我检查了 ~/ssh/ 文件夹的权限,似乎正常。

A's .ssh文件夹权限:

-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文件夹权限:

-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是 ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 2009 年 3 月 25 日)B是 debian 机器 (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 2007 年 10 月 19 日)

A

#ssh B

工作正常。

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: 

这实际上意味着它没有使用文件进行身份验证/root/id_rsa。我ssh-add也在两台机器上运行了该命令。

文件的认证部分/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

我没什么主意了。如能得到任何帮助我将不胜感激。

答案1

设置无密码 ssh,我仍被要求输入用户密码。查看/var/log/auth.log远程机器指出了这个问题:

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

因此,请确保正确无误:

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

虽然禁止其他用户覆盖您的.ssh文件夹是显而易见的,但对您的主文件夹有同样的要求却比较棘手。

另外,请检查/etc/ssh/ssd_config以确保RSAAuthenticationPubkeyAuthentication选项未被禁用。默认是这样的yes,所以不应该有问题。

答案2

只要确保您遵循了以下步骤:

在机器A上

打开终端并输入以下命令:

root@aneesh-pc:~# id

只是为了确保我们是根用户。

如果上述命令输出类似下面的内容,则我们是 root ,否则使用su命令切换到 root

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

1) 创建密钥。

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        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

我没有使用任何密码。如果你需要,你可以使用它。

2)将公钥复制到机器B的.ssh/authorized_keys文件中

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

现在尝试使用 登录机器,ssh 'root@mylap'并检查:

~/.ssh/authorized_keys

以确保我们没有添加您意想不到的额外键。

将 mylap 替换为你希望登录的机器的主机名或者 ip(即机器 B)

3)无需密码即可登录B

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:~$

在机器 B 上

4)创建密钥以重新登录机器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)将公钥复制到机器A的.ssh/authorized_keys文件中

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: 

现在尝试使用 登录机器,ssh 'root@aneesh-pc'并检查:

.ssh/authorized_keys

以确保我们没有添加您意想不到的额外键。

6)无需密码即可登录A

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

如果你能完成这些步骤,你就大功告成了。现在你有两台启用了 ssh-key(公钥)登录的机器。

答案3

可能只是更高级别的权限问题。您需要删除组和其他人对您的主目录和 .ssh 目录的写权限。 要修复这些权限,请运行chmod 755 ~ ~/.sshchmod go-w ~ ~/.ssh

如果仍然遇到问题,请在日志上发出以下 grep:

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

(替换LOCAL_USER_NAME为您的本地用户名...)

假设 sshd 身份验证信息已记录到安全日志中(默认情况下应该如此),那么上述内容应该能让您更多地了解问题。如果您看到如下错误:

日期主机名 sshd[1317]: 身份验证被拒绝: 目录 /path/to/some/directory 的所有权或模式错误

这是上面描述的问题,您需要找到有问题的目录并删除组和其他人的写权限。

至于您需要限制对您的主目录的写权限的原因(即使您的 .ssh 和后续目录的权限已经受到限制),它将允许其他用户重命名您的 .ssh 目录并创建一个新的目录 - 尽管由于权限错误,该目录将无法使用,对于大多数用户来说,修复方法可能是更改权限而不是检查目录的内容......

大肠杆菌:允许组和/或其他人对您的主目录进行写访问将使 ssh 强制密码登录。

答案4

在 /etc/ssh/sshd_config 上更改目标

PermitRootLogin 否

PermitRootLogin 是

然后 kill -HUP 你的 sshd PID:

root@dzone2 # ps -ef|grep ssh root 28075 27576 0 11月 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

相关内容