Contents

限制SSH用户的命令

1. 概述

SSH 是最常用的应用程序之一,用于连接到远程机器并以安全的方式对其进行操作。它有助于连接到远程服务器并像我们在本地进行操作一样对其进行处理。

SSH 提供了许多功能,其中之一是限制登录用户可以运行的命令。

让我们看看这是如何完成的。

2. authorized_keys文件

SSH 自带一些配置文件,authorized_keys就是其中之一。 我们使用它来管理连接到 SSH 服务器**的不同主机和用户。*使用此配置文件,我们可以设置自动登录到远程服务器 。我们可以 在~/.ssh/文件夹中找到authorized_keys文件。但是,我们可以在/etc/ssh/sshd_config*中设置不同的路径。

要限制命令,我们需要修改authorized_keys文件。示例配置如下:

from="192.168.1.10",command="/usr/bin/ls" ssh-rsa AAAAB3NzaC1yc2E...OrsMdr bluelake@Pacific

** authorized_keys中的此配置将限制用户仅运行*ls 命令。*

相关属性是fromcommandfrom属性指定尝试连接到 SSH 服务器的客户端。我们可以在这里指定主机名或 IP。如果有多个主机,我们可以提及所有主机,用逗号分隔。最后, 命令指定允许运行的命令。我们必须在此处为该命令提供完整路径。不幸的是,我们不能在这里指定多个命令

3. 使用脚本

尽管这是一项强大的功能,但它并没有真正的实用性,因为用户只能运行一个命令。

如果我们指定一个脚本,而不是指定命令,我们可以让用户做更多的事情

让我们修改配置以允许这种行为,如下所示:

from="192.168.1.10",command="/usr/local/bin/select.sh" ssh-rsa AAAAB3NzaC1yc2E...OrsMdr bluelake@Pacific

唯一的变化是命令lsselect.sh脚本替换。

脚本内容如下:

#!/bin/bash
echo "1. ls"
echo "2. ping 8.8.8.8 -c 5"
echo "3. top"
read -p 'Choice: ' choice # Read the choice from user
case $choice in
	1)
		ls
		;;
	2)
		ping 8.8.8.8 -c 5
		;;
	3)
		top
		;;
	*)
		exit
		;;
esac

这是一个简单的脚本。它在第 5 行读取用户的输入并根据用户的选择运行命令。

这实际上使我们在运行不同的命令时更加灵活。如果将其放入循环中,则用户可以在单个会话中运行多个命令