如果 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 -r
3xCtrl-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
在配置文件中添加一个不起作用......