已断开连接:没有可用的受支持的身份验证方法


12

我在此线程中描述了同样的问题,但是接受的答案不适合我,因为用户的主目录本地的。

我认为我已经在客户端(Windows 7,PuTTY的PAGEANT,PUTTYGEN和PLINK)上正确配置了所有内容,但是我似乎没有使公钥机制起作用(基于密码的ssh登录起作用)。我遵循了以下所有步骤,线索和提示:

现在,我怀疑我可能在服务器端(Linux,sshd)上缺少了某些/etc/ssh/sshd_config内容,因此我正在发布当前内容:

Protocol 2
SyslogFacility AUTHPRIV
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server

知道我在做什么错吗?

更新:我发现了在调试模式下运行sshd的技巧,这是输出:

/home/winwin> /usr/sbin/sshd -d
debug1: sshd version OpenSSH_4.2p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 4 out 4 newsock 4 pipe -1 sock 7
debug1: inetd sockets after dupping: 3, 3
Connection from 192.168.1.8 port 49828
debug1: Client protocol version 2.0; client software version PuTTY_Release_0.60
debug1: no match: PuTTY_Release_0.60
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.2
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes256-ctr hmac-sha1 none
debug1: kex: server->client aes256-ctr hmac-sha1 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST_OLD received
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done

debug1: userauth-request for user winwin service ssh-connection method none
debug1: attempt 0 failures 0
debug1: PAM: initializing for "winwin"
debug1: PAM: setting PAM_RHOST to "win7client"
debug1: PAM: setting PAM_TTY to "ssh"
Failed none for winwin from 192.168.1.8 port 49828 ssh2
debug1: userauth-request for user winwin service ssh-connection method publickey
debug1: attempt 1 failures 1
debug1: test whether pkalg/pkblob are acceptable
debug1: temporarily_use_uid: 513/513 (e=0/0)
debug1: trying public key file /home/winwin/.ssh/authorized_keys
Authentication refused: bad ownership or modes for directory /home/winwin
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 513/513 (e=0/0)
debug1: trying public key file /home/winwin/.ssh/authorized_keys
Authentication refused: bad ownership or modes for directory /home/winwin
debug1: restore_uid: 0/0
Failed publickey for winwin from 192.168.1.8 port 49828 ssh2
Received disconnect from 192.168.1.8: 14: No supported authentication methods available
debug1: do_cleanup
debug1: PAM: cleanup
debug1: do_cleanup
debug1: PAM: cleanup

现在,我确实注意到了两条bad ownership or modes for directory /home/winwin消息,但是我检查了目录/ home / winwin和AFAICT的所有权或模式,它们都可以:

/home> ls -lad winwin
drwxrwxr-x  21 winwin winwin 4096 Jul 13 21:24 winwin

和:

/home/winwin> ls -lad .ssh
drwxr-xr-x  2 winwin winwin 4096 Jul 14 12:06 .ssh

和:

/home/winwin/.ssh> ls -lad *
-rw-r--r--  1 winwin winwin 210 Jul 14 12:06 authorized_keys
-rw-r--r--  1 winwin winwin 210 Jul 14 01:58 authorized_keys.pub
-rw-r--r--  1 winwin winwin 394 Jul 14 01:57 authorized_keys.pub.orig

可能是什么问题?

更新二:我尝试chmod 600按照以下答案中的建议进行操作:

/home/winwin> ls -lad .ssh
drw-------  2 winwin winwin 4096 Jul 14 13:13 .ssh

和:

/home/winwin/.ssh> ls -lad *
-rw-------  1 winwin winwin 210 Jul 14 12:06 authorized_keys

但这仍然行不通。为什么我仍然收到Authentication refused: bad ownership or modes for directory /home/winwin错误消息?

Answers:


9

尝试从您的主目录获取组的可写权限:

chmod g-w ~/

使.ssh文件夹仅由您可读/可写/可执行:

chmod 700 ~/.ssh

使授权密钥文件仅由您可读/可写:

chmod 600 ~/.ssh/authorized_keys

那应该删除权限错误。


我就照你的建议~/.ssh~/.ssh/authorized_keys。仍然没有运气。至于从主目录本身获取组的可写权限,我不能这样做,因为这会破坏创建该用户/组的全部目的。该用户的主目录必须是该组可写的(具有相同的确切名称和gid!)。+1寻求帮助。
WinWin'7

谢谢!chmod g-w ~/经过数小时的疯狂和拔头发救了我,当时我无法代表一个用户用腻子
切碎

谢谢,我与其他用户一起创建了我的主目录,而我却缺少chmod gw〜/
Clarence Liu

5

成功!

我所要做的就是更改StrictModesno

根据OpenSSH FAQ中的3.14节http://blogs.nullvision.com/?p=114

哇。


嗯,不过,这比解决方案更能解决问题。让我检查一下我的盒子上的东西。
罗布

ls -lad .ssh正在显示drwx,所以chmod 700 ~/.ssh里面的文件都是-rw,所以chmod 600 ~/.ssh/*-SHOULD-可以工作。
罗布

没关系,看到该用户的主目录必须是由基(具有完全相同的名称和gid!)写在下面
罗布

这种方式是无用的!

3

发生了类似的问题。闲逛时,我注意到我的主目录已加密,并且怀疑是问题所在。我将授权密钥文件复制到了加密主目录之外的目录,适当地更改了权限(chmod 700 [dir],chmod 600 [dir] / authorized_keys等)。

然后编辑您的sshd_config,以将已授权密钥文件的新位置告诉sshd,重新启动sshd,仅此而已。

似乎解决了我的问题。


2

看来您对主目录(或您的.ssh / authorized_keys文件夹)的权限不正确。更正这些内容应解决登录问题。尝试chmod 600 /home/winwin/.ssh/*
您可能还需chmod 700 /home/winwin/.ssh要这样做。

如果SSHd authorized_keys可以由您的用户(作为所有者)以外的任何人写入,则它将拒绝加载您的文件,因为这存在安全风险。


谢谢+1。请参阅上面的更新,因为仍然无法确定正确的权限/所有权。
WinWin

我只是试过了chmod 600 /home/winwin/.ssh/*。它没有帮助。:-/
WinWin

1
@WinWin您是否也在.ssh目录上设置了它?(我更新了答案)。
达斯Android

是的,我做到了。仍然没有运气。
WinWin

2

我为此苦苦挣扎,最终找到了不会像StrictModes No那样导致潜在安全漏洞的解决方案。

确保您的设置如下:

chmod 0755 / home / {userdir}

chmod 0700 / home / {userdir} /.ssh

chmod 0600 / home / {userdir} /.ssh/authorized_keys

其中{userdir}是相关目录。

密钥是chmod 0755,它确保只有用户才能写入主驱动器。我从有效的用户配置中复制了此文件,然后保存其他用户名也开始工作!

希望这能像我一样帮助其他人,并节省您几个小时的时间。


1

SELinux阻止sshd访问也可能导致此错误消息authorized_keys。尝试这个:

restorecon -FRvv ~/.ssh

(根据此答案


0
chown -R winwin.winwin /home/winwin/
chmod 700 /home/winwin/
find /home/winwin/ -type d -exec chmod 700 {} \;
find /home/winwin/ -type f -exec chmod 600 {} \;

3
欢迎来到超级用户!如果您能解释这些命令的功能,那将是很好的。
slhck

0

在我的情况下,该主目录的所有者(根)不同于该主目录所属的实际用户(我的愚蠢,当为另一个用户创建具有根目录的主目录时,我很愚蠢)。

Chown [user]:[group] /home/[user] 

已经解决了这个问题(当然还坚持其他答案中共享的文件/目录权限)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.