我有一台服务器,我无法使用预共享密钥和ssh
- 所有身份验证都是通过交互式提示进行的。
该服务器还为非root用户禁用了cron
和at
。
我希望能够在本地计算机上cron
一个作业,该作业将针对远程服务器运行脚本以进行定期维护/报告。
我已经使用了expect
一些,但是已经注意到为了让它在正确的时间自动将密码输入提示,它需要以明文形式存储。
有没有办法以这样的方式保护密码,我输入一次,然后它是乱码/本地的(如passwd
那样),然后我不在脚本中存储明文密码本身?
答案 0 :(得分:2)
存储密码始终不安全(如果您需要访问明文密码)。您的脚本必须具有“非编码”逻辑。任何对您的脚本具有读访问权限的人都可以找出编码密码的存储位置以及如何取消编码。
这是对你的判断。您更重视哪些:自动化(节省您的时间)或密码安全性?
答案 1 :(得分:2)
非常不安全坚持基于密码的身份验证,因为基于僵尸网络的攻击能够削弱denyhosts的效用。但如果你必须,你必须......
当遇到这种情况时,我会做的是将密码放在与脚本分开的文件中,使密码文件只能由我读取,并使目录只能由我读取(和可执行)好。我还要特别注意确保密码永远不会作为参数或环境变量传递;这些都可以通过ps
轻易扼杀。传递密码文件的名称是可以的(可以保护路径)并且通过未命名的管道传递密码也是安全的。