登录 ssh 服务器:权限被拒绝,请重试

登录 ssh 服务器:权限被拒绝,请重试

我尝试使用用户名和密码登录到我的 ssh 服务器,但是输入正确的密码后出现此错误:

Permission denied, please try again.

虽然我可以在另一台机器上使用公钥登录,但我没有禁用常规密码验证。我唯一禁用的是 root 登录。

这是我的 sshd_config 文件:

#打包生成配置文件
# 有关详细信息,请参阅 sshd_config(5) 手册页

# 我们监听哪些端口、IP 和协议
端口 22
# 使用这些选项来限制 sshd 将绑定到哪些接口/协议
#聆听地址 ::
#监听地址 0.0.0.0
协议 2
# 协议版本 2 的 HostKeys
主机密钥 /etc/ssh/ssh_host_rsa_key
主机密钥 /etc/ssh/ssh_host_dsa_key
主机密钥 /etc/ssh/ssh_host_ecdsa_key
#出于安全考虑,开启权限分离
UsePrivilegeSeparation 是

# 临时版本 1 服务器密钥的生命周期和大小
密钥再生间隔 3600
服务器密钥位 768

# 日志记录
Syslog 工具验证
日志级别信息

# 验证:
登录宽限时间 120
PermitRootLogin 否
StrictModes 是

RSA身份验证 是
公钥认证 是
#AuthorizedKeys文件 %h/.ssh/authorized_keys

# 不要读取用户的 ~/.rhosts 和 ~/.shosts 文件
IgnoreRhosts 是
# 为了实现此功能,您还需要 /etc/ssh_known_hosts 中的主机密钥

RhostsRSAAuthentication 否
# 协议版本 2 类似
基于主机的身份验证 否
# 如果您不信任 RhostsRSAAuthentication 的 ~/.ssh/known_hosts,请取消注释
#IgnoreUserKnownHosts 是

# 要启用空密码,请更改为是(不推荐)
允许空密码 否

# 改为 yes 以启用质询-响应密码(注意
# 一些 PAM 模块和线程)
ChallengeResponseAuthentication 否

# 更改为 no 以禁用隧道明文密码
密码验证 是

# Kerberos 选项
#KerberosAuthentication 否
#KerberosGetAFSToken 否
#KerberosOrLocalPasswd 是
#KerberosTicketCleanup 是

# GSSAPI 选项
#GSSAPIAuthentication 否
#GSSAPICleanupCredentials 是

X11转发 是
X11显示偏移 10
PrintMotd 号码
PrintLastLog 是
TCPKeepAlive 是
#UseLogin 没有

#MaxStartups 10:30:60
#横幅 /etc/issue.net

# 允许客户端传递区域环境变量
接受环境语言 LC_*

子系统 sftp /usr/lib/openssh/sftp-server

# 将其设置为“是”以启用 PAM 身份验证、帐户处理、
# 和会话处理。如果启用此功能,PAM 身份验证将
# 被允许通过 ChallengeResponseAuthentication 和
# PasswordAuthentication。根据您的 PAM 配置,
# 通过 ChallengeResponseAuthentication 进行 PAM 身份验证可能会绕过
#“PermitRootLogin without-password”的设置。
# 如果你只希望运行 PAM 帐户和会话检查,而无需
# PAM 身份验证,然后启用此功能但设置 PasswordAuthentication
# 并将 ChallengeResponseAuthentication 设置为‘否’。
UsePAM 是
IgnoreUserKnownHosts 否
密码验证 是

我最近添加了最后两行以使其正常工作。(我在其他 vps 上安装了它们,它们在那里工作正常)

以下是我的用户的 ~/.ssh/ 目录列表:

ls -la /home/skerit/.ssh
共 16
drwx------ 2 skerit skerit 4096 2011-06-25 15:11。
drwxr-xr-x 4 skerit skerit 4096 2011-07-07 21:05 ..
-rw-r--r-- 1 密钥 密钥 1882 2011-06-25 15:15 authorized_keys
-rw-r--r-- 1 skerit skerit 884 2011-06-23 22:59 known_hosts

这是 /usr/sbin/sshd -d 的输出:

debug1:用户 skerit 服务的用户身份验证请求 ssh 连接方法无
debug1:尝试 0 次,失败 0
debug1:PAM:正在初始化“skerit”
debug1:PAM:将 PAM_RHOST 设置为“82.197.70.70”
debug1:PAM:将 PAM_TTY 设置为“ssh”
debug1:用户 skerit 服务的用户身份验证请求 ssh 连接方法 publickey
debug1:尝试 1 失败 0
debug1:测试pkalg/pkblob是否可以接受
debug1:检查黑名单文件 /usr/share/ssh/blacklist.RSA-2048
debug1:检查黑名单文件 /etc/ssh/blacklist.RSA-2048
调试1:暂时使用uid:1000/1000(e=0/0)
debug1:尝试公钥文件 /home/skerit/.ssh/authorized_keys
debug1:fd 4 清除 O_NONBLOCK
调试1:restore_uid:0/0
调试1:暂时使用uid:1000/1000(e=0/0)
debug1:尝试公钥文件 /home/skerit/.ssh/authorized_keys2
debug1:无法打开授权密钥“/home/skerit/.ssh/authorized_keys2”:没有此文件或目录
调试1:restore_uid:0/0
来自 82.197.70.70 端口 57154 ssh2 的 skerit 公钥失败
debug1:用户 skerit 服务的用户身份验证请求 ssh 连接方法密码
debug1:尝试2失败1
debug1:PAM:skerit 密码验证失败:验证失败
来自 82.197.70.70 端口 57154 ssh2 的 skerit 密码失败

然后我尝试使用相同的用户名和密码从 ssh 服务器(本地)登录到 ssh 服务器,成功了。这是在 auth.log 文件中:

7 月 8 日 12:21:50 vpsnl1 sshd[27298]: debug1: 无法打开密钥文件‘/etc/ssh/ssh_host_ecdsa_key’: 没有此文件或目录
7 月 8 日 12:21:50 vpsnl1 sshd[27298]: 错误:无法加载主机密钥:/etc/ssh/ssh_host_ecdsa_key
7 月 8 日 12:22:16 vpsnl1 sshd[27298]: pam_unix(sshd:auth): 身份验证失败;logname= uid=0 euid=0 tty=ssh ruser= rhost=82.197.70.70 user=
斯凯里特
7 月 8 日 12:23:50 vpsnl1 sshd[27439]: 服务器正在监听 0.0.0.0 端口 22。
7 月 8 日 12:23:50 vpsnl1 sshd[27439]: 服务器正在监听::端口 22。
7 月 8 日 12:24:07 vpsnl1 sshd[27458]: 错误:无法加载主机密钥:/etc/ssh/ssh_host_ecdsa_key
7 月 8 日 12:24:14 vpsnl1 sshd[27458]: 已接受来自 127.0.0.1 端口 57667 ssh2 的 skerit 密码
7 月 8 日 12:24:14 vpsnl1 sshd[27458]: pam_unix(sshd:session): 会话由 (uid=0) 为用户 skerit 打开
7 月 8 日 12:24:25 vpsnl1 sshd[27471]: 收到来自 127.0.0.1 的断开连接:11: 用户断开连接
7 月 8 日 12:24:25 vpsnl1 sshd[27458]: pam_unix(sshd:session): 用户 skerit 的会话已关闭

答案1

您确定尝试访问的用户帐户配置正确吗?如果您以 root 身份登录系统,是否可以su访问该用户帐户?

# su - username

连接尝试失败后,您在日志中看到了什么?在许多系统上,sshd 会记录到某个内容/var/log/secure/var/log/auth.log。另外,我注意到您已PasswordAuthentication启用但ChallengeResponseAuthentication已禁用。如果启用,是否会看到相同的行为ChallengeResponseAuthentication

当您遇到 ssh 问题时,可以使用以下一些常规诊断步骤:

  • 在 ssh 中启用详细诊断:

    ssh -v host.example.com
    

    这将导致客户端在协商连接时输出各种诊断消息。这通常会提供问题的线索。

  • 以调试模式运行服务器。

    在您的服务器上,停止 sshd,然后从命令行运行它,如下所示:

    /usr/sbin/sshd -d
    

    这将生成详细的调试日志stderr,其中通常包含有用的信息。

如果这些都不能帮助您弄清楚发生了什么,您会将输出添加到您的问题中吗?

相关内容