我需要允许用户运行一组有限的命令。
但不允许他们创建交互式会话。
就像 GitHub 一样。
如果您在没有命令的情况下尝试 ssh,它会向您致意并关闭会话。
我可以通过使用获得这个 ForceCommand some-script
但是进入 some-script我然后需要评估用户的输入。
也许NoTTYsshd_config 中的任何其他类似选项?
- - 更新 - -
我正在寻找纯SSH/Bash解决方案,而不是 Perl/Python/等。黑客。
您在设置ForceCommand脚本方面走在正确的轨道上。然后您需要检查SSH_ORIGINAL_COMMAND环境变量,其中包含用户提供给 SSH 客户端的实际命令。例如:
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
date)
date
;;
fortune)
fortune
;;
*)
echo "Valid commands are: date, fortune"
exit 1
;;
esac
Run Code Online (Sandbox Code Playgroud)
然后用户可以执行如下命令:
% ssh localhost fortune
Q: How much does it cost to ride the Unibus?
A: 2 bits.
Run Code Online (Sandbox Code Playgroud)
如果用户不提供命令,他们应该从脚本中收到错误消息(并且连接终止):
% ssh localhost
Valid commands are: date, fortune, rev
Connection to localhost closed.
Run Code Online (Sandbox Code Playgroud)
编辑:使用密钥认证时,可以在authorized_keys 中禁用终端:
command="/usr/local/bin/restricted.sh",no-pty ssh-rsa AAA...
Run Code Online (Sandbox Code Playgroud)