要在登录后将SSH用户限制为一组预定义的命令,您可以使用Linux中的 rssh
工具或者编写一个简单的 authorized_keys
命令。
rssh
工具:rssh
是一个受限制的SSH shell,它允许您限制用户在SSH登录后可以执行的命令。首先,您需要在服务器上安装 rssh
。
对于Debian/Ubuntu,您可以使用以下命令安装:
sudo apt-get install rssh
对于CentOS/RHEL,您可以使用以下命令安装:
sudo yum install rssh
然后,在 /etc/rssh.conf
文件中配置允许的命令。例如,允许用户执行 ls
、cd
和 cat
命令:
allowed_commands=/bin/ls,/bin/cd,/bin/cat
接下来,将用户的shell更改为 /usr/bin/rssh
:
sudo usermod -s /usr/bin/rssh USERNAME
替换 USERNAME
为您要限制的实际用户名。
authorized_keys
命令:在用户的 ~/.ssh/authorized_keys
文件中,您可以指定一个命令,该命令将在用户通过SSH登录时执行。首先,在服务器上为受限用户创建一个包含允许命令的脚本。例如,创建一个名为 restricted_shell.sh
的脚本:
#!/bin/bash
# 允许的命令
ALLOWED_COMMANDS=(ls cd cat)
# 获取要执行的命令
COMMAND="$1"
# 检查命令是否在允许的列表中
for allowed_command in "${ALLOWED_COMMANDS[@]}"; do
if [ "$COMMAND" == "$allowed_command" ]; then
# 执行命令
$COMMAND
exit
fi
done
# 如果命令不在允许的列表中,显示错误消息
echo "此命令不允许执行。"
然后,将此脚本的路径添加到用户的 ~/.ssh/authorized_keys
文件中:
command="~/restricted_shell.sh" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf...
将 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf...
替换为实际的SSH密钥。
这样,当用户通过SSH登录并尝试执行命令时,只有在 ALLOWED_COMMANDS
数组中定义的命令才会被允许执行。
领取专属 10元无门槛券
手把手带您无忧上云