Sunforger

Sunforger

Server refused our key!

想着给组里的服务器配一个 sshkey 这样就可以省去每次输密码的麻烦了。但似乎…… 服务器有自己的想法。

记录一个奇怪的 bug,以及一个奇怪的修复方式。

操作#

在服务器用户目录下的 .ssh 文件夹下运行 ssh-keygen -t rsa 生成秘钥。

然后将私钥下载到本地的 windows 机器上。通过 mobaxterm 配置 sshkey 登录

到这里都很顺利。直到登录的那一刻

Server refused our key!

秘钥被拒绝,需要输入密码才能进入。

尝试#

思路 1:在 /etc/ssh/sshd_config 中配置关闭 StrictMode 但由于服务器是多人使用,不是很懂,恐造成权限问题,故暂不考虑这种方法。

思路 2:调整权限设置以满足 StrictMode 的要求。 远程连接服务器 Server refused our key | CSDN 博客

思路 3:由于 Openssh 版本问题,导致 RSA 加密算法不被支持。需要在 sshd_config 文件中配置支持 RSA mobaxterm 出现 Server refused our key 的问题 | CSDN 博客
或者换用其他加密算法 使用 Ed25519 算法生成你的 SSH 密钥 | 知乎

思路 4:开启详细的日志,定位问题。ssh 配置 key 后提示 Server refused our key
|CSDN 博客

前三个思路并没有解决我的问题,第四个思路给了我更多的提示。关键的报错信息是:

mm_answer_keyallowed: publickey authentication test: RSA key is not allowed

有的说是秘钥不兼容,有的说是 Win32 限制,看的一头雾水。

解决#

这篇文章给了我一点思路 Can't set up SSH key (PuTTY to Ubuntu Server) | StackExchange 文中说可能是生成的秘钥格式不正确。

我的尝试算是歪打正着 —— 我决定不在 linux 服务器上生成秘钥,而是在本地的 windows 系统中重新生成了秘钥,然后上传到服务器,问题就奇奇怪怪地解决了!
202@2x

更新#

近期由于系统重装,又配了一次 ssh 登录

系统版本Ubuntu 22.04.1 LTS

修改配置文件 /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized keys .ssh/authorized keys2

将原本处于注释状态的 # 去掉

生成秘钥

ssh-keygen -t ed25519 -f your_ssh_key_ed25519  -C "your_ssh_key_name"

设置.ssh文件夹权限 为 700
设置私钥文件权限 为 600,公钥文件可以开放 644 权限。不会影响秘钥安全性。
设置authorized_keys文件权限 为 600 如果没有 authorized_keys 文件,那么用 touch 命令建一个。

chmod 700 .ssh
chmod 600 .ssh/your_private_key
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

复制公钥到authorized_keys文件

cd .ssh
cat your_public_key >> authorized_keys

注意:public key 通常是带有 .pub后缀的文件

经过测试,可以登录

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。