群晖 ssh 用 RSA 登录失败

2024-01-28 13:51:56 +08:00
 sleepingdog
日志提示
User from * failed to log in via [SSH] due to authorization

我用 win 电脑上的 ssh-keygen 生成了两个文件,id_rsa 和 id_rsa.pub 。
主路由是 openwrt ,把 id_rsa.pub 拖了过去。在 win 上和 linux 上都测试了下,可以

于是把这个 id_rsa.pub 复制到群晖那边去。它稍微麻烦点,UI 界面只有一个 ssh 的开关,没有像 op 那么方便。只能在命令行上操作
大概参考了这个教程
https://post.smzdm.com/p/avx742o4/

它主要是这几个步骤
复制 id_rsa.pub 里面的内容到 ~/.ssh/authorized_keys (我是 vim 一个 authorized_keys ,再复制 id_rsa.pub 的内容)

几个文件和目录的的权限
chmod 755 ~
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

修改 sshd_config 文件
sudo vim /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no // 禁用普通用户名密码验证

第一句话 RSAAuthentication yes ,我的群晖似乎没有这句,手动加上去了
第四句话,直接导致 ssh 登录不了群晖( win 端和 linux 端的都不行)。重启也没用。看了下群晖的日志,是帖子最开始的那句话。
一时头大————没有 ssh 命令行,变成在网页端操作,那延迟,那反应。。。。
感觉像在家里修门,门修好了关上,结果发现没有钥匙。。
幸好还有另外一个门————telnet ,从网页控制台那里开一下。。。

最后折腾半天,暂时又改了回去,先换个端口看看。

我在 win 上创建 id_rsa 的时候,还输入了一个密码(好像叫 passphrase ),不知道和这个有没关系(似乎不少人为了方便,这里也不输密码)
想问下到底是哪里出了问题————为什么很相似的操作,op 可以,群晖却不行?
群晖是 dsm6.23 的版本

PS,没开公网,只是在群晖和 openwrt 上都装了个 zerotier 。感觉以后这个网络设备可能会越来越多,所以还是考虑下安全性
2162 次点击
所在节点    NAS
17 条回复
kaedeair
2024-01-28 14:33:57 +08:00
在某个版本的 openssl 以后默认禁用了 rsa ,使用椭圆加密试试?
sleepingdog
2024-01-28 14:39:47 +08:00
@kaedeair #1 你说起这个忽然想起,之前我用的旧版本 xshell4 ,ssh 登录新版 ubuntu 似乎就出现类似的问题,查了下说是要新版的 xshell 才能解决

所以后来 ssh 都是直接用 cmd 凑合下。
ferock
2024-01-28 15:15:48 +08:00
干嘛不用 id copy … 不就好了
pubby
2024-01-28 17:27:17 +08:00
如果是客户端 openssh8.8 以后的,默认不使用 rsa 的

试试强制 rsa

ssh -o "HostKeyAlgorithms +ssh-rsa" -o "PubkeyAcceptedKeyTypes +ssh-rsa" ....
om2mo
2024-01-28 17:48:37 +08:00
RSA 密钥已弃用
sleepingdog
2024-01-28 18:26:30 +08:00
@om2mo #5
@pubby #4
@kaede
我在三台设备上分别使用 ssh -V

win 的是
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2air #1
群晖的是
OpenSSH_7.4p1, OpenSSL 1.0.2u-fips 20 Dec 2019

openwrt 的是
Dropbear v2020.81
sleepingdog
2024-01-28 18:28:17 +08:00
@ferock #3 不太理解你说的“id copy”是什么。。。
sleepingdog
2024-01-28 18:30:37 +08:00
还有 ubuntu 上的是
OpenSSH_8.9p1 Ubuntu-3ubuntu0.6, OpenSSL 3.0.2 15 Mar 2022

我好几次测试的确是在 ubuntu 上的,看来有可能是这里的锅
Thatscode99
2024-01-28 18:43:52 +08:00
mipaers
2024-01-28 19:36:22 +08:00
PermitRootLogin 不会关了吧 上次我就是这样 直接嗝屁
charley008
2024-01-28 20:32:45 +08:00
我的 dsm7.2 用的是 ed25519 还有 ecdsa ,没有出现你的情况
mingl0280
2024-01-29 03:42:38 +08:00
rsa-1024 (搭配 SHA1 签名的)已弃用,不是 rsa 整个。现在用 rsa 是一样的。
你可以 ssh -vvvv 看看是什么原因,sshd 的日志(/var/log/auth )也可以看看。我这边群晖 7.几的机器,搭配 SSH2 用 RSA-4096 密钥毫无问题
sleepingdog
2024-01-29 12:48:11 +08:00
@mingl0280 #12
@Thatscode99 #9
@mipaers #10
@charley008 #11
感谢各位~使用 ECDSA 密钥测试 ok 了

我在 win 上生成 ECDSA
ssh-keygen -t ECDSA
然后把 id_ecdsa.pub 里面的内容复制到到 nas 上的 ~/.ssh/authorized_keys ,重启 ssh 服务,直接测试就成功了

测试成功后再根据需要/etc/ssh/sshd_config 的修改教程里的第四句话(我这里发现第 1 ~ 3 句都没必要改,使用 nas 原来的就行了)
PasswordAuthentication no // 禁用普通用户名密码验证
sleepingdog
2024-01-29 12:59:53 +08:00
问题又来了——这次轮到 openrt 不支持 ecdsa
问了下 GPT ,


远程登录 openwrt 可以使用 ECDSA 么?
ChatGPT
通常情况下,OpenWrt 支持使用 ECDSA 密钥进行远程登录。SSH 密钥的支持主要依赖于所使用的 SSH 服务器版本以及相关的配置。在 OpenWrt 中,默认的 SSH 服务器是 Dropbear 或者可以选择安装 OpenSSH 。

如果你使用的是 Dropbear SSH 服务器,它对 ECDSA 密钥的支持可能会有限。在这种情况下,你可能需要安装 OpenSSH ,并根据需要配置。

如果你使用的是 OpenSSH ,它通常默认支持 ECDSA 密钥。你可以使用 ssh-keygen 生成 ECDSA 密钥对,并将公钥复制到 OpenWrt 的~/.ssh/authorized_keys 文件中,以实现基于 ECDSA 密钥的远程登录。

请注意,确保你的 SSH 客户端也支持 ECDSA 密钥。大多数现代的 SSH 客户端都支持 ECDSA 密钥,但在一些旧版本或特殊环境中可能需要配置。

在使用 ECDSA 密钥时,请确保你在远程登录时提供了正确的私钥,并且 OpenWrt 的 SSH 服务器配置正确,以允许使用 ECDSA 密钥进行认证。


看来 rsa 和 ecdsa 两个私钥都保留下来算了
qingshengwen
2024-01-29 16:59:15 +08:00
@sleepingdog #7 3 楼估计说的是 ssh-copy-id 命令
sleepingdog
2024-01-30 17:05:24 +08:00
@qingshengwen #15 是的。
我看了下 9 楼的链接,试了试发现该命令似乎不是自带的
Autonomous
2024-02-05 15:02:47 +08:00
建议使用 ECC 证书。

另外,一定要确保配置正确,测试通过之后再执行
```
PasswordAuthentication no
PermitEmptyPasswords no
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012166

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX