Centos远程连接时只允许用publicKey连接的解决

本文介绍如何在CentOS系统中启用SSH密码认证。主要步骤包括:直接从本地登录到CentOS,编辑sshd_config文件将passwordAuthentication设置为yes,保存并重启虚拟机。完成配置后,可通过远程连接工具正常连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.问题情况

在这里插入图片描述
二.解决方法
1.直接从本地登录centos
在这里插入图片描述
在这里插入图片描述
2.在终端字符界面输入vi etc/ssh/sshd_config

vi  etc/ssh/sshd_config

进入如下界面
在这里插入图片描述
3.找到passwordAuthentication no把no改为yes
在这里插入图片描述
在这里插入图片描述
4.保存并退出
按esc后输入:wq
重启虚拟机

三.重新通过远程连接工具连接即可
在这里插入图片描述

<think>好的,我现在需要解决用户关于CentOS 7.9中SSH连接出现“Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)”错误的问题。首先,我得回忆一下之前处理类似问题的经验,并结合用户提供的引用资料来整理解决方案。 用户提供的引用内容提到,这个错误通常与SSH配置有关,特别是公钥认证和密码认证的设置。比如,引用[4]指出需要检查PermitRootLogin、PubkeyAuthentication和PasswordAuthentication这几个参数。而引用[3]和[5]也提到了修改sshd_config文件以及重启SSH服务的步骤。此外,引用[1]和[2]也提到这是SSH连接问题,可能涉及密钥配置不正确或者权限问题。 首先,我应该分步骤来排查问题。可能的原因包括SSH服务端配置不正确、公钥未正确配置、文件权限问题或者SELinux/firewalld的影响。 第一步,检查SSH服务端配置是否正确。用户需要编辑/etc/ssh/sshd_config文件,确认PubkeyAuthentication是否设为yes,允许公钥认证。同,PasswordAuthentication是否为yes,确保在公钥失败可以回退到密码认证。此外,PermitRootLogin如果设置为prohibit-password或no,可能导致root用户无法登录,可能需要改为yes,但需注意安全风险。 第二步,检查公钥是否配置正确。用户需要在客户端生成密钥对,并将公钥上传到服务器的~/.ssh/authorized_keys文件中。这一步可能出错的地方包括文件权限不对(比如.ssh目录权限应为700,authorized_keys文件权限应为600),或者公钥内容不正确。 第三步,重启SSH服务使配置生效,使用systemctl restart sshd命令。同,可能需要检查SELinux是否处于enforcing模式,暂禁用或调整策略,以及防火墙是否开放了SSH端口(默认22)。 另外,用户可能在使用Hadoop集群配置遇到此问题,如引用[1][2][3]提到的,这候需要确保集群中各节点之间的SSH无密码登录配置正确,包括所有节点的公钥都被正确添加。 还要考虑是否以正确的用户身份进行连接,比如是否使用了错误的用户名,或者该用户没有登录权限。此外,检查服务器的磁盘空间和inode使用情况,虽然可能性较低,但有也会导致认证失败。 最后,需要综合这些步骤,提供一个清晰的解决流程,帮助用户逐步排查问题,并给出具体的命令示例,如修改配置文件的参数、设置文件权限、重启服务等。同,提醒用户在修改配置前备份文件,避免操作失误导致其他问题。</think>在CentOS 7.9中SSH连接出现`Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)`错误,主要与SSH服务配置和密钥认证相关。以下是分步解决方案: --- ### 一、错误原因分析 1. **SSH服务端配置限制**:公钥认证(PubkeyAuthentication)未启用,或密码认证(PasswordAuthentication)被禁用[^4][^5] 2. **密钥文件问题**:客户端公钥未正确添加到服务器的`authorized_keys`文件,或文件权限设置错误[^1][^3] 3. **SELinux限制**:安全策略可能阻止SSH连接[^3] 4. **用户权限问题**:目标用户禁止远程登录或目录权限不符要求 --- ### 二、具体解决步骤 #### 1. 修改SSH服务端配置 ```bash # 编辑配置文件 sudo vim /etc/ssh/sshd_config ``` **关键参数修改**: ```properties PermitRootLogin yes # 允许root登录(生产环境建议限制) PubkeyAuthentication yes # 启用公钥认证 PasswordAuthentication yes # 允许密码认证 GSSAPIAuthentication no # 关闭GSSAPI认证(可选) ``` ```bash # 重启SSH服务 sudo systemctl restart sshd ``` #### 2. 配置公钥认证 ```bash # 客户端生成密钥对(本地执行) ssh-keygen -t rsa # 上传公钥到服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip # 服务器端检查文件权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` #### 3. 检查SELinux状态 ```bash # 临关闭SELinux setenforce 0 # 永久关闭需修改/etc/selinux/config ``` #### 4. 验证防火墙设置 ```bash # 开放SSH端口(默认22) sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload ``` --- ### 三、补充说明 - 若使用Hadoop集群,需确保所有节点实现**双向无密码SSH登录**[^3] - 若仍报错,可通过`ssh -vvv user@host`查看详细调试信息 - 密钥文件权限错误是常见陷阱,需严格保证`.ssh`目录权限为700,`authorized_keys`为600[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值