使用 ssh root@your_host 'bash -c "source <(cat)"' < your_scripts.sh 或类似的命令来远程执行脚本,而不让脚本内容外泄或不让其他人看到脚本信息的原因通常是为了安全性和隐私保护。以下是几种考虑:
安全性:通过直接将脚本内容重定向到 SSH 会话中执行,而不是上传脚本文件到远程服务器,可以防止脚本在远程主机上留下副本。如果脚本包含敏感信息(如密码、API密钥等),这样可以减少这些敏感数据暴露的风险。
临时性:这种方式可以让脚本在一次性的环境中执行,而不需要永久地存储在远程系统上。这对于一次性任务或者需要频繁更新的脚本来说非常有用。
最小化权限提升:如果你是通过一个受限账户连接到远程主机,并且只被允许执行特定命令,那么这种方法可以在不违反权限规则的情况下运行复杂的命令序列。
避免审计记录:某些系统可能会记录所有上传的文件或执行的命令。通过这种方式传递脚本,可以避免脚本的具体内容出现在这样的日志中。
简化部署流程:对于一些持续集成/持续部署(CI/CD)管道,这种做法可以简化流程,因为脚本可以直接从构建环境发送到生产环境并立即执行,无需额外的传输步骤。
ssh root@you_host 'bash -s' < you_scripts.sh
这里 'bash -s' 表示从标准输入读取命令,而 < your_scripts.sh 将本地脚本文件的内容作为标准输入提供给远程的 bash 进程。
或者
ssh root@your_host bash < your_scripts.sh