DSM 6 的非根 SSH 密钥身份验证问题

DSM 6 的非根 SSH 密钥身份验证问题

在 Synology DSM 6 中,SSH 似乎要求用户成为该admin组的成员。

然而,即使在这种情况下,文件/目录权限似乎也存在问题,导致非 root 用户无法成功进行基于密钥的身份验证(/root/.ssh/authorized_keys对于 root 用户来说标准工作正常)。

具体来说,即使正确,基于 SSH 密钥的身份验证也会失败~/.ssh/authorized_keys

答案1

介绍 - 调试 SSH

首先,调试 SSH 身份验证问题时的有用注释(无论如何对我来说):

  1. 在 Synology 上以调试模式运行服务器:

    /bin/sshd -d -p 1234` as root;
    
  2. 使用以下方式从您的客户端登录

    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如下所示:

  1. vi /root/prepare-dot-ssh-authorized-keys使用或类似的编辑
  2. 使可执行文件chmod u+x /root/prepare-dot-ssh-authorized-keys
  3. 使用 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}"

相关内容