如何确保所有用户都可以在 Qnap(运行 QTS)的 NAS 上使用 ssh/sftp?

如何确保所有用户都可以在 Qnap(运行 QTS)的 NAS 上使用 ssh/sftp?

如果 NAS 来自 QNAP,则它会阻止非管理员用户的 ssh 作为一种安全形式。
通常这是有道理的,但在多种使用情况下您不希望这样做。

令人恼火的是,QTS(QNAP 上的操作系统)喜欢“保护”管理员免受自身侵害,方法是让管理员很难做出 QNAP 不喜欢的更改。

有没有办法让普通用户使用 ssh/sftp?

答案1

回答我自己的问题,以防我忘记或者其他人想做同样的事情。

重启后下列过程仍然有效:

  • 如果您还没有这样做:
    在 Web 界面中启用 ssh(如果需要,可以使用 sftp),方法是导航至“控制面板”→“Telnet/SSH”并在那里启用它。
    现在它可以工作了,但目前仅适用于管理员用户。
  • 在您的台式机/笔记本电脑上打开一个终端并登录:(TERM=linux ssh someAdminUser@yourNAS
    TERM=linux必要确保“屏幕”正常工作。)
  • sudo -i成为根(在 QTS 上名为“admin”)
  • 进入其次是从默认菜单跳转到 shell
  • 创建一个包含所有用户的变量,并以空格分隔:
    users=$(grep "^everyone:" /etc/group | cut -d: -f4 | tr ',' ' ')
  • 通过将这些用户放入 ssh 配置文件中,确保他们可以使用 ssh:
for sshconfigfile in /etc/config/ssh/sshd_user_config /etc/config/ssh/sshd_config ; do
 sed -i "s/^AllowUsers.*/AllowUsers $users/" $sshconfigfile ;
done
  • screen (我们将在屏幕上重新启动 ssh,以便我们的 shell 不会消失)
  • 选修的: ps -eo pid,args | grep '/sshd' | grep -v grep并记住 sshd 的 PID,稍后我们可以使用它来检查它是否正确重启
  • sleep 20 ; killall sshd ; sleep 30 ; killall -9 sshd ; sleep 10 ; /usr/sbin/sshd -f /etc/config/ssh/sshd_config -p 22
    这给了我们 20 秒的时间脱离屏幕会话,之后我们的命令将首先“善意地”要求 sshd 停止运行,如果 30 秒后它仍未停止运行,它将强制它停止运行。之后它将等待 10 秒以确保它完全停止运行,然后重新启动它。
  • 在 20 秒到期之前,请按Ctrl-A其次是d与屏幕分离并两次Ctrl-D首先退出 root shell,然后退出常规 shell(并自动建立 ssh 会话)
  • 等待约 2 分钟,以便 sshd 有时间关闭并重新启动

从现在开始每个用户都应该能够使用 ssh。

建议:
重新登录并关闭屏幕,成为 root/admin,重新连接screen -r3xCtrl-D(退出屏幕、根 shell 和常规 shell)

可选:

  • 使用以下命令检查一切是否正常:
    • ps -eo pid,args | grep '/sshd' | grep -v grep
      PID 应该不同,否则 sshd 不会重新启动。
    • grep -v ^# /etc/config/ssh/sshd_user_config /etc/config/ssh/sshd_config
      在输出中应该有两行包含AllowUsers后面跟着所有用户。
      应该没有包含Deny
      如果不是这种情况,那么配置文件没有正确调整
  • 向 QNAP 投诉没有给予管理员对其自己系统的完全控制权 ;-)

请注意,仅AllowGroups everyone在配置文件中添加一个不起作用......

相关内容