ubuntu中使用putty自动登录 出现ubuntu server refused our key的解决方案

本文介绍了一种解决跨平台SSH密钥不兼容问题的方法。具体步骤包括:首先在Linux环境下使用ssh-keygen命令生成公钥;然后将公钥文件重命名并放置于.ssh目录下;接着复制私钥文件至Windows系统,并利用Puttygen工具将其转换成Windows可识别的私钥格式。

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

错误的原因主要是在win下使用puttygen生成公钥。
解决方案很简单,在linux下生成公钥,然后在win下使用puttygen根据linux下的公钥生成私钥即可。
1. ssh-keygen -t dsa
生成2个文件 id_dsa(puttygen根据这个生成私钥)和id_dsa_pub(把这个改名拷贝到自己目录下.ssh目录下,名字为authorized_keys)
2. cat id_dsa.pub >> .ssh/authorized_keys
3.  将私钥文件id_dsa拷贝到你的windons下,打开puttygen,然后点击load,对话框中的文件类型选择所有,load 这个id_dsa文件后,save private key文件.


4.    putty 中选择auth

<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 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值