使用Putty登录Ubuntu后得到"Server refused our key"错误的一种解决方法

本文描述了一位用户在Ubuntu系统中遇到的加密主目录问题,该问题导致公钥验证失败并提示输入私钥密码。文章指出问题原因在于主目录被加密,并提供了相应的解决思路。

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

  说来很惭愧,这个问题给我折腾了快一个月了,今天还是多写了一个搜索词才联想到这个问题的解决方法的。

  在网上可以收到很多这方面的东西,但是我都尝试后,还是没能解决我遇到的问题。但是其实很简单的,症结就在Ubuntu的加密主目录[Encrypt Home Directory]的功能上,下面就描述一下吧。

  现象就是下图所示:

  

  而从/var/log/auth.log文件中看到的情况如下图所示:

  

  这种提示是说密码文件被隐藏,但是起初我并没有注意到它指的是什么啦。接下来,如果你的情况和下图一样,呵呵,你也找到问题所在啦。

  

  呵呵,这就表明你使用的用户的主目录已经被加密了,所以你按照网上的说明进行操作都是没有效果的。

  并且还有一个现象值得注意啦,就是当你的用户第一次使用公钥验证失败后,你通过密码验证登录到主机;此时如果你再使用这个用户在Putty里进行公钥验证时,就会提示你输入私钥密码,这也说明可能是由于加密主目录而导致的。

  因此问题原因找到了,接下来的方法可参见:这里[英文版的]。等有时间,我再把详细的解除加密主目录的步骤写出来吧。希望对他人有用吧。

  

<think>好的,用户遇到了通过PuTTY连接Linux服务器时出现“Serverrefused ourkey”的问题,需要解决。首先,我需要回忆一下常见的导致这个错误的原因以及解决方法。首先,用户可能已经生成了SSH密钥对,但可能在格式上存在问题。PuTTY使用的是自己的PPK格式密钥,而OpenSSH使用的是PEM格式。如果用户直接用ssh-keygen生成的公钥没有转换成PPK格式,可能会导致PuTTY无法识别,从而拒绝密钥。这时候需要检查密钥格式是否正确,可能需要使用PuTTYgen工具进行转换。其次,公钥可能没有被正确添加到服务器的authorized_keys文件中。用户需要确认公钥内容是否正确,并且该文件的权限是否设置正确。通常,authorized_keys文件权限应为600,而.ssh目录权限应为700。如果权限过宽,SSH服务器出于安全考虑会拒绝使用该密钥。另外,服务器的SSH配置可能禁用了密钥认证。需要检查/etc/ssh/sshd_config文件中的相关设置,如PubkeyAuthentication是否设置为yes,以及是否允许用户通过密钥登录。修改配置后需要重启SSH服务才能使更改生效。 还有可能用户使用的用户名或权限不正确。例如,在服务器上,authorized_keys文件必须位于对应用户的家目录下的.ssh目录中。如果用户以root身份操作,而密钥却放在普通用户目录下,也会导致认证失败。此外,服务器上的SELinux或AppArmor等安全模块可能会阻止访问密钥文件,需要检查这些安全设置是否影响了SSH连接。 用户可能还遇到了文件路径的问题,比如路径拼写错误或者目录不存在。例如,如果.ssh目录不存在,需要手动创建,并设置正确的权限。另外,确保公钥内容正确无误,没有多余的空格或换行符,否则也会导致密钥被拒绝。最后,可能需要详细查看服务器的日志文件,如/var/log/secure或/var/log/auth.log,来获取更具体的错误信息,从而定位问题所在。通过日志可以确认服务器是否收到了密钥请求,以及拒绝的原因是什么,例如权限问题、密钥格式错误等。总结下来,解决步骤应包括检查密钥格式、验证公钥安装、确认文件权限、检查SSH配置、查看日志等。需要一步步引导用户排查可能的原因,并提供具体的命令和操作示例,如使用chmod修改权限,用cat命令追加公钥等。同时,提醒用户注意细节,如使用正确的用户名、目录结构,以及服务重启等操作。</think>### 解决PuTTY连接Linux服务器时出现"Server refused our key"的方法 #### 1. **验证密钥格式是否正确** - PuTTY默认使用`.ppk`格式的私钥,而OpenSSH使用`PEM`格式。如果使用`ssh-keygen`生成的密钥,需通过**PuTTYgen**转换为`.ppk`格式: 1. 打开PuTTYgen → Load → 选择私钥文件(如`id_rsa`)→ 保存为`.ppk`格式。 2. 在PuTTY配置中指定转换后的私钥路径:`Connection → SSH → Auth → Private key file`[^1]。 #### 2. **检查公钥是否正确安装到服务器** - 确保公钥内容已追加到服务器的`~/.ssh/authorized_keys`文件: ```bash cat public_key.pub >> ~/.ssh/authorized_keys ``` - 验证文件权限: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` 权限错误会导致SSH拒绝密钥[^1]。 #### 3. **检查SSH服务端配置** - 编辑`/etc/ssh/sshd_config`,确认以下配置: ```bash PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ``` - 重启SSH服务: ```bash systemctl restart sshd # Systemd系统 service ssh restart # SysVinit系统 ``` #### 4. **排查路径与用户权限问题** - 确保`authorized_keys`文件在**目标用户的家目录**下(如`/home/username/.ssh/`)。 - 若服务器提示类似`Permission denied (publickey)`,可能是用户目录权限过宽(需`chmod 755 /home/username`)。 #### 5. **查看服务器日志定位问题** - 通过日志文件获取详细错误信息: ```bash tail -f /var/log/secure # RedHat/CentOS tail -f /var/log/auth.log # Debian/Ubuntu ``` 日志中可能包含`Authentication refused: bad ownership`或密钥格式错误提示。 #### 6. **其他可能原因** - **SELinux/AppArmor限制**:临时禁用SELinux测试是否解决问题: ```bash setenforce 0 ``` - **文件系统挂载问题**:若`.ssh`目录位于挂载的存储设备,需检查挂载状态(类似错误参考[^2])。 --- ### 示例操作流程 ```bash # 服务器端检查authorized_keys ls -al ~/.ssh/authorized_keys cat ~/.ssh/authorized_keys # 客户端测试连接(启用详细日志) putty -ssh user@host -i private_key.ppk -v ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值