我正在寻找通过 SSH 调用远程命令的最佳方式。我创建用户“rpcall”,生成新证书并填写 authorized_keys。用更多的方式保护它
from="ip",no-agent-forwarding,no-X11-forwarding,no-port-forwarding,no-pty ssh-rsa ......
现在用户 rpcall 无法登录到终端
ssh -l rpc 192.168.12.1
PTY allocation request failed on channel 0
但是可以运行任何命令
ssh -l rpc 192.168.12.1 cat /etc/passwd
有什么解决方案可以将命令执行限制在一个处理脚本中吗?例如/home/rpcall/bin/command.sh
我为此用户设置了 bash shell 并使用 .bashrc 强制运行处理脚本,但我不知道如何从 ssh 调用传递参数。
.bashrc 用户 rpcall
/home/rpcall/bin/command.sh $params1 $params2
exit
从其他机器ssh调用
ssh -l rpcall 192.168.12.1 "param1" "param2"
您可以使用 authorized_keys 文件限制命令。放在
command="/home/rpcall/bin/command.sh"
密钥之前,在 authorized_keys 文件中,用户只会在连接时运行该命令。检查 authorized_keys 的手册页,这是来自该手册页,
如果你需要一个以上的命令,你基本上需要设置几组按键,使用不同的按键给你不同的命令。
编辑:我刚刚注意到,原始命令在
SSH_ORIGINAL_COMMAND
环境变量中可用,因此您确实可以使用自己的脚本处理该输入,做一些聪明的事情。