ssh使用Python限制命令

ssh使用Python限制命令,python,linux,ssh,Python,Linux,Ssh,我正在使用python脚本,使用authorized_key文件中的command参数来限制命令的使用 命令: ssh host-name bash --login -c 'exec $0 "$@"' mkdir -p hello 我的脚本正在执行限制命令所需的操作。过滤之后,python脚本会执行sys.exit(1)错误,执行sys.exit(0)成功。返回值之后,上面的ssh命令不会在最后执行。我还需要从python脚本向SSH守护进程发送其他内容吗?我想将其更改为 ssh host-n

我正在使用python脚本,使用
authorized_key
文件中的
command
参数来限制命令的使用

命令

ssh host-name bash --login -c 'exec $0 "$@"' mkdir -p hello

我的脚本正在执行限制命令所需的操作。过滤之后,python脚本会执行
sys.exit(1)
错误,执行
sys.exit(0)
成功。返回值之后,上面的ssh命令不会在最后执行。我还需要从python脚本向SSH守护进程发送其他内容吗?

我想将其更改为

ssh host-name bash --login -c 'exec $0 "$@" && mkdir -p hello'
应该这样做,否则bash将假定只有单引号中的部分是要执行的命令


如果即使第一部分出现故障也应执行第二部分,则将
&&
替换为

授权的
键中的
命令
修饰符不(仅)用于验证用户命令,而是运行该命令,而不是用户提供的命令。这意味着从那里调用
sys.exit(0)
会阻止运行用户提供的命令


在该脚本中,验证命令后,还需要运行它

我认为关键是shell只运行
mkdir-p hello
,因为这三个参数被传递给
exec
命令。您在
授权密钥中的行是什么样子的?“筛选脚本”是什么样子的?command=“file name.py”ssh rsa=key.
文件名.py
中有什么?python脚本过去只允许执行一些命令。因此,您的意思是说我应该使用
subprocess.Popen
运行
bash--login-c'exec$0“$@”mkdir-p hello
?例如。或者仅仅是
SSH\u ORIGINAL\u命令的内容
environment变量,在您过滤之后,它对您来说是“正常的”。是的,它完全相同。但是我觉得在没有
shell=True
的情况下使用
Popen
运行上述命令将无法执行。出于安全原因,不应使用shell。