Redhat Linux ssh 密码失败

Redhat Linux ssh 密码失败

我正在尝试从我的 Mac 上 ssh 进入我的 Linux 机器。如果我在机器旁,我可以用密码正常登录,但如果我使用 ssh,它会拒绝。我收到:权限拒绝(公钥,键盘交互)我以前能够 ssh 进入(上次大概是在一个月前),但突然间我无法再访问它了。我认为这可能是由我最近对系统身份验证所做的某些更改引起的,但我将所有内容恢复为我认为是原始格式:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

但我仍然无法 ssh 进入。我尝试删除所有密码,但似乎也无济于事。它仍然会询问,即使输入空字符串(什么都没有),它仍然会让我失败。

根据下面答案的建议,我检查了 sshd_config,这似乎不是问题所在。

PermitEmptyPasswords yes
PasswordAuthentication yes
UsePAM yes
ChallengeResponseAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      /home/%u/.ssh/authorized_keys

在提出建议之前,我实际上并没有研究过这个文件,所以我想其中大部分可能仍然是系统默认设置。

而我仍然无法通过 ssh 访问。

有什么建议吗?

答案1

如果您运行的是启用了 Security Enhanced Linux (SELinux) 的 Red Hat,那么您可能会遇到问题,因为 SELinux 阻止 sshd 读取 $HOME/.ssh。要使 SELinux 正常运行,您必须执行以下操作

root@sshd-server# restorecon -Rv ~/.ssh

要查看您是否在启用 SELinux 的情况下运行,请使用 sestatus。如果启用了 SELinux,则如下所示。

root@sshd-server# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

请注意,您可能还需要更改 .ssh 文件的安全上下文。使用以下命令-Z切换ls

ls -laZ ~/.ssh

这可能会报告类似的安全上下文system_u:object_r:default_t:s0。然后使用chcon以下命令:

chcon -R -v system_u:object_r:usr_t:s0 ~/.ssh/

感谢 Massimo Ronca 的文章“修复 SELinux 和无密码 SSH 身份验证”[1] 提供的chcon提示。

1-https://massimoronca.it/2017/03/14/fixing-selinux-and-passwordless-ssh-authentication.html

答案2

听起来你的ssh配置不允许密码登录(这是一种值得鼓励的安全方法)。有两种解决方案:更改设置或设置你的 Mac 机器上的密钥。

更改设置

  • 编辑您的sshd_config文件(/etc/ssh/sshd_config):
  • 找到条目PasswordAuthentication并确保它被设置为yes(可能会被no注释掉)
  • 重新启动 sshd:service sshd restart
  • 您现在可以使用用户名/密码连接

设置密钥

笔记:

推送公钥的最简单方法(设置键选项)是通过的ssh,因此您可能实际上想要打开PasswordAuthentication设置键,然后在设置键后再次将其关闭。

答案3

如果您不知道发生了什么,请尝试在另一个端口上使用调试模式设置另一个 SSH 守护程序:

server# /usr/sbin/sshd -p 2222 -d

然后,尝试连接到您的 ssh 服务器:

client$ ssh server -p 2222

如果在服务器调试中没有任何相关输出,请尝试添加更多“-d”最多 3 以增加调试级别。

祝你好运

答案4

事实证明,IP 地址变化存在问题。我仔细检查了一下ifconfig,发现 IP 与之前不同。我给了它一个静态 IP,问题没有再次出现。

相关内容