在 openssh-server 配置中,是否可以强制一部分用户使用与 /etc/passwd 中为他们定义的 shell 不同的 shell?
比如说,我想将所有从特定 IP 范围之外登录的用户限制到 git-shell?
答案1
您可以ForceCommand
使用Match
:
Match Address 10.1.0.0/16
ForceCommand /usr/bin/git-shell
从man sshd_config
:
Match Introduces a conditional block. ...
The arguments to Match are one or more criteria-pattern pairs or
the single token All which matches all criteria. The available
criteria are User, Group, Host, LocalAddress, LocalPort, and
Address.
ForceCommand
Forces the execution of the command specified by ForceCommand,
ignoring any command supplied by the client and ~/.ssh/rc if
present. The command is invoked by using the user's login shell
with the -c option.
因此,您指定的命令将使用用户的登录 shell 执行,该 shell 必须接受该-c
选项。命令退出时连接将关闭,因此从实际目的来看,该命令就是他们的 shell。