如何只允许某些命令通过 SSH 运行并阻止交互式会话?
rsync.net 和 bakop.com 一样。
即这将工作:
ssh <user@host> mkdir test
scp <file> <user@host>:test/
Run Code Online (Sandbox Code Playgroud)
这不会:
ssh <user@host>
Run Code Online (Sandbox Code Playgroud)
您可以利用command=
authorized_keys 中的指令和SSH_ORIGINAL_COMMAND
传递给远程系统的变量,将密钥限制为特定命令。
在authorized_keys 文件中,将包含相关密钥的行从
ssh-rsa AAAAB3NzaC1yc...
Run Code Online (Sandbox Code Playgroud)
到
command="/path/to/myscript" ssh-rsa AAAAB3NzaC1yc...
Run Code Online (Sandbox Code Playgroud)
然后创建 myscript 文件,例如
#!/bin/bash
if [ ! -n "$SSH_ORIGINAL_COMMAND" ]
then
echo "No command supplied"
exit 1
fi
set $SSH_ORIGINAL_COMMAND
case "$1" in
ls)
;;
md5)
;;
*)
echo "invalid command"
exit 1
;;
esac
exec "$@"
Run Code Online (Sandbox Code Playgroud)
所以现在如果你运行ssh user@remote.tld ls /etc
你会得到远程/etc
目录的列表。您可能希望使用 case 语句来测试提供的参数以满足您的任何实现要求。
归档时间: |
|
查看次数: |
1800 次 |
最近记录: |