我正在尝试从我的 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/authorized_keys
) - 配置
ssh
使用密钥而非密码进行连接 - 这里有一个很好的概述:MacNugget/使用 SSH 公钥认证
笔记:
推送公钥的最简单方法(设置键选项)是通过的ssh
,因此您可能实际上想要打开PasswordAuthentication
设置键,然后在设置键后再次将其关闭。
答案3
如果您不知道发生了什么,请尝试在另一个端口上使用调试模式设置另一个 SSH 守护程序:
server# /usr/sbin/sshd -p 2222 -d
然后,尝试连接到您的 ssh 服务器:
client$ ssh server -p 2222
如果在服务器调试中没有任何相关输出,请尝试添加更多“-d”最多 3 以增加调试级别。
祝你好运
答案4
事实证明,IP 地址变化存在问题。我仔细检查了一下ifconfig
,发现 IP 与之前不同。我给了它一个静态 IP,问题没有再次出现。