允许 ssh,但仅执行特定脚本

允许 ssh,但仅执行特定脚本

可能的重复:
创建一个只执行一个命令的 UNIX 帐户

有一个 shell 脚本必须通过现有用户帐户 XXX 执行。现在我有各种其他用户,他们也只能执行此脚本,而无需访问用户帐户 XXX。有没有办法创建一个 ssh 命令(也许通过密钥或其他任何东西),它只允许执行用户 XXX 的特定 shell 脚本而不知道 XXX 的密码?

答案1

如果运行脚本是仅有的如果您希望其他用户能够做的事情,那么我会使用 ssh 密钥。

每个用户都应该有自己的 ssh 密钥,这样当有人不再需要访问时您就不会陷入麻烦。密钥的公共部分应放入

~scriptuser/.ssh/authorized_keys

在实际键的前面,您应该添加文本command="/path/to/script"

这是一个例子:

from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script"  ssh-dss A........

这限制了可以使用该密钥的 IP 地址,并且限制了可以进行的转发类型,并确保在使用该密钥时不会授予任何 pty,并且每当用户使用该密钥连接时,脚本将被运行,并且不会发生任何其他事情。

要添加环境变量,只需将其也添加到密钥中即可:

from="10.23.5.32",environment="MYVARIABLE=whatever",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script"  ssh-dss A........

但是,为了使其正常工作,您必须PermitUserEnvironment在 sshd 配置文件中将该指令设置为“yes”。如果您无法做到这一点,您可以将该行更改为:

from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="export MYVARIABLE=whatever; /path/to/script"  ssh-dss A........

相关内容