我正在编写一个脚本来自动跨多个 Linux 系统运行特定命令。我将使用类似的东西:
read -s "Enter password" ANS
sshpass -p $ANS ssh server "some command"
是否会有安全问题?
使用 ps 命令的系统上的任何其他人都可以看到您的密码和任何其他命令行参数。更好的选择是使用基于 SSH 密钥的登录?官方文件
sshpass手册页有一整节关于安全隐患。
鼓励 sshpass 的用户使用其他一种更安全的密码传递技术。
特别是,鼓励编写旨在以编程方式传递密码的程序的人使用匿名管道,并使用 -d 选项将管道的读取端传递给 sshpass。
因此,如果您必须传递密码,他们鼓励使用匿名管道。您还可以将密码保存到文件中并改用-f
标志。
如果您对安全性感兴趣,基于密钥的身份验证是最佳选择。有时这是不合理的,因为您的目标缺乏额外的非易失性内存来存储公钥,但如果可以的话,您应该尝试设置基于密钥的身份验证。