在 Synology DSM 6 中,SSH 似乎要求用户成为该admin
组的成员。
然而,即使在这种情况下,文件/目录权限似乎也存在问题,导致非 root 用户无法成功进行基于密钥的身份验证(/root/.ssh/authorized_keys
对于 root 用户来说标准工作正常)。
具体来说,即使正确,基于 SSH 密钥的身份验证也会失败~/.ssh/authorized_keys
。
答案1
介绍 - 调试 SSH
首先,调试 SSH 身份验证问题时的有用注释(无论如何对我来说):
在 Synology 上以调试模式运行服务器:
/bin/sshd -d -p 1234` as root;
使用以下方式从您的客户端登录
ssh -p1234 -v <username>@<synology>
这将使您能够轻松访问有用的调试。
第 1 步 - 更新sshd
配置
编辑/etc/ssh/sshd_config
并更新AuthorizedKeysFile
配置以支持默认值加备用文件位置:
AuthorizedKeysFile /var/ssh-homes/%u/dot-ssh/authorized_keys .ssh/authorized_keys
重新启动 SSH 服务器,在这种情况下最容易通过 DSM GUI 实现:
脚步:取消勾选“启用 SSH”--> 应用 --> 重新勾选 --> 应用
第 2 步 -authorized_keys
为每个适用的用户创建备用文件
为此,我创建了以下脚本,/root/prepare-dot-ssh-authorized-keys
如下所示:
vi /root/prepare-dot-ssh-authorized-keys
使用或类似的编辑- 使可执行文件
chmod u+x /root/prepare-dot-ssh-authorized-keys
- 使用 Synology 用户名运行
/root/prepare-dot-ssh-authorized-keys <username>
参考
请注意,Synology 论坛上有一些有用的讨论使用 DSM 6.2.2-24922 Update 4 进行非 root SSH 密钥验证和ssh 服务器拒绝除 root 之外的所有用户的密钥这节省了我一些时间,让我走上了正轨。
脚本/root/prepare-dot-ssh-authorized-keys
#!/bin/bash -e
# https://community.synology.com/enu/forum/1/post/129890
if test -z "$1" ; then
echo "usage: $0 <username>"
echo ""
echo "Ensure config in /etc/ssh/sshd_config includes:"
echo "AuthorizedKeysFile /var/ssh-homes/%u/dot-ssh/authorized_keys .ssh/authorized_keys"
exit 1
fi
_DIR="/var/ssh-homes/$1/dot-ssh"
_AK="${_DIR}/authorized_keys"
if test -d "${_DIR}" ; then
echo "$0: ${_DIR} already exists"
exit 2
fi
if test -r "${_AK}" ; then
echo "$0: ${_AK} already exists"
exit 3
fi
mkdir -p "${_DIR}"
chmod og-rwx `dirname "${_DIR}"`
touch "${_AK}"
chown "${1}.users" -R `dirname "${_DIR}"`
echo "$0: created ${_AK}"