想着给组里的服务器配一个 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 系统中重新生成了秘钥,然后上传到服务器,问题就奇奇怪怪地解决了!
更新#
近期由于系统重装,又配了一次 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
后缀的文件
经过测试,可以登录