SSH无密钥登陆 与 配置公钥后仍需要输入密码的解决方案

1、进入到.ssh目录
ssh .ssh
2、生成密钥
ssh-keygen -t rsa

输入以上命令之后,只需要一直回车即可。

3、配置无密钥登陆,拷贝公钥到其他节点
ssh-copy-id hadoop-series.bxp.com

其中hadoop-series.bxp.com是主机名,配置本机到hadoop-series.bxp.com的无密钥登陆,也可以直接使用IP。

上面说的是怎样生成密钥并将公钥发送到远程主机。具体的细节以及无密钥登陆的原理这里就不进行赘述,想了解的可以自行google或者度娘。

如果到这里您已经可以进行无密钥登陆,就不必继续往下看。

接下来要说的是 “有的主机只需要以上的操作即可以进行无密钥访问,有的主机却仍然存在问题,仍然需要输入密码” 的解决办法。

4、仍需要密码登陆问题解决

如果A将公钥拷贝到B,但是A登陆B仍然需要输入密码,此时应当修改B主机的配置文件。
(1)打开sshd_config配置文件

sudo vi /etc/ssh/sshd_config

(2)修改配置如下

#禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

# 有了证书登录了,就禁用密码登录。
PasswordAuthentication no

(3)重启sshd服务

/bin/systemctl restart  sshd.service
或者
service sshd restart
5、如果在拷贝公钥过程中出现“Agent admitted failure to sign using the key”异常,执行如下命令
 ssh-add   ~/.ssh/id_rsa

到这里,问题应该就得到解决了。

<think>我们正在解决Ubuntu虚拟机配置SSH密钥后连接Windows仍提示需要密码的问题。根据引用[1][2][3],可能的原因包括SSH服务配置问题、密钥权限问题、认证方式配置问题等。下面将逐步排查。</think>针对Ubuntu虚拟机配置SSH密钥后连接Windows仍提示需要密码的问题,请按以下步骤排查: ### 1. 检查SSH服务状态(Ubuntu端) ```bash # 确认SSH服务运行状态 sudo systemctl status ssh # 若未运行则启动服务 sudo systemctl start ssh # 设置开机自启 sudo systemctl enable ssh ``` > **注意**:Ubuntu的SSH服务名是`ssh`而非`ssh.service`,若报错`Unit ssh.service not found`请使用正确名称[^2] --- ### 2. 验证密钥权限(Ubuntu端) ```bash # 检查密钥文件权限(关键!) chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` > 权限配置错误是常见原因,需确保: > - `.ssh`目录权限为`700` > - `authorized_keys`文件权限为`600`[^1] --- ### 3. 检查SSH配置(Ubuntu端) 编辑配置文件: ```bash sudo nano /etc/ssh/sshd_config ``` 确认以下参数: ```ini PubkeyAuthentication yes # 启用密钥认证 AuthorizedKeysFile .ssh/authorized_keys # 密钥路径 PasswordAuthentication no # 禁用密码登录(可选) ``` 重启服务生效: ```bash sudo systemctl restart ssh ``` --- ### 4. 检查公钥部署(Windows端) - 确认公钥`id_rsa.pub`内容已完整复制到Ubuntu的`~/.ssh/authorized_keys`文件中 - 避免多余空格或换行符(建议用`cat`命令直接追加): ```bash cat id_rsa.pub >> ~/.ssh/authorized_keys ``` --- ### 5. 排查防火墙(双端) - **Ubuntu**: ```bash sudo ufw allow ssh # 开放22端口 sudo ufw status # 查看规则 ``` - **Windows**: 控制面板 → Windows Defender防火墙 → 允许应用通过防火墙 → 确保勾选`OpenSSH Server` --- ### 6. 查看详细日志(诊断用) ```bash # Ubuntu端启用调试模式 sudo /usr/sbin/sshd -d -p 22 # Windows连接时显示详细输出 ssh -vvv user@ubuntu_ip ``` > 日志会明确显示密钥认证失败的具体原因(如权限拒绝、密钥格式错误等)[^3] --- ### 7. 备用方案:重建密钥对 ```bash # Windows端重新生成密钥 ssh-keygen -t rsa -b 4096 # 默认保存到%USERPROFILE%\.ssh\ # 重新部署公钥到Ubuntu scp C:\Users\用户名\.ssh\id_rsa.pub user@ubuntu_ip:~ ssh user@ubuntu_ip "mkdir -p ~/.ssh; cat id_rsa.pub >> ~/.ssh/authorized_keys" ``` > **关键提示**:若仍要求密码,检查Ubuntu用户目录权限(`chmod 755 ~`),并确保SELinux已禁用或配置正确[^3]。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值