仅为此目的创建一个单独的用户。让用户仅使用 SSH 密钥登录。在用户的authorized_keys 文件中,编辑公钥以仅允许执行命令。这个命令应该不会是指向一个shell脚本; 而是直接将 shell 脚本插入密钥中。
这是一个例子。这里的设置是在服务器上,有一个将每日日志移动到 /var/log/logfetch 的 cron 作业。另一台 IP 为 10.1.2.3 的服务器将连接并发送命令。如果命令是 BACKUP,客户端将收到目录 /var/log/logfetch 中文件的 gzip tar 文件。如果它是一个文件名,则 /var/log/logfetch 中具有该名称的文件将被删除。任何其他命令都将被忽略。所有命令都将被记录。仅允许来自该一个 IP 地址的连接。
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="read ARG;HOST=$(/usr/bin/hostname);if [ \"$ARG\" = \"BACKUP\" ]; then cd /var/log/logfetc;/usr/bin/tar -cf - *;/usr/bin/logger -t LOGFETCH -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";else cd /var/log/logfetch; if [ -f $ARG ]; then /usr/bin/rm $ARG;/usr/bin/logger -t LOGFETCH -p daemon.info \"INFO: Backup-file \\"$ARG\\" removed on $HOST by $USER\";else /usr/bin/logger -t LOGFETCH -p daemon.info \"WARNING: $USER failed to remove \\"$ARG\\" on $HOST\";exit -1;fi;fi " ssh-dss AA.....
Run Code Online (Sandbox Code Playgroud)
对于您的特定情况,这可能有点过分,但第三方滥用它是相当困难的,并且应该可以适应您的特定需求。
| 归档时间: |
|
| 查看次数: |
988 次 |
| 最近记录: |