首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在登录后将SSH用户限制为一组预定义的命令?

要在登录后将SSH用户限制为一组预定义的命令,您可以使用Linux中的 rssh 工具或者编写一个简单的 authorized_keys 命令。

  1. 使用 rssh 工具:

rssh 是一个受限制的SSH shell,它允许您限制用户在SSH登录后可以执行的命令。首先,您需要在服务器上安装 rssh

对于Debian/Ubuntu,您可以使用以下命令安装:

代码语言:txt
复制
sudo apt-get install rssh

对于CentOS/RHEL,您可以使用以下命令安装:

代码语言:txt
复制
sudo yum install rssh

然后,在 /etc/rssh.conf 文件中配置允许的命令。例如,允许用户执行 lscdcat 命令:

代码语言:txt
复制
allowed_commands=/bin/ls,/bin/cd,/bin/cat

接下来,将用户的shell更改为 /usr/bin/rssh

代码语言:txt
复制
sudo usermod -s /usr/bin/rssh USERNAME

替换 USERNAME 为您要限制的实际用户名。

  1. 使用 authorized_keys 命令:

在用户的 ~/.ssh/authorized_keys 文件中,您可以指定一个命令,该命令将在用户通过SSH登录时执行。首先,在服务器上为受限用户创建一个包含允许命令的脚本。例如,创建一个名为 restricted_shell.sh 的脚本:

代码语言:bash
复制
#!/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 文件中:

代码语言:txt
复制
command="~/restricted_shell.sh" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf...

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf... 替换为实际的SSH密钥。

这样,当用户通过SSH登录并尝试执行命令时,只有在 ALLOWED_COMMANDS 数组中定义的命令才会被允许执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券