如果在终端中运行命令,请说
rsync -avuP [SourcPath] [DestPath]
该命令将被登录,例如.bash_history、.zsh_history和.bash_sessions等。
因此,如果你使用像sshpass
这样臭名昭著的不安全的东西
例如sshpass -P password -p MySecetPassword [Some command requiring std input]
。
但是,当您在使用NodeJS生成进程时执行等效操作时,会发生什么呢?
passw = functionThatRetrievesPasswordSecurely();
terminalCmd = "sshpass";
terminalArgs = ["-P, "password", "-p", passw, "command", "requiring", "a", "password", "entry"];
spawn = require("child_process").spawn(terminalCmd, terminalArgs);
spawn.stdout.on("data", data => {console.log("stdout, no details"});
spawn.stderr.on("data", data => {console.log("stderr, no details"});
spawn.on("close", data => {console.log("Process complete, no details"});
terminalCmd或terminalArgs是否记录在任何位置?
如果是,在哪里?
如果不是,这是使用opfsshpass
的安全方式吗?
除非您通过记录参数创建了一个特定于节点的exec历史文件,否则没有该文件。可以有较低级别的操作系统日志记录来捕获此类数据,如审计日志。
在命令行上传递密码仍然被认为是最不安全的方式。尝试-f
传递文件,或者尝试-d
传递文件描述符(或者ssh密钥应该始终是第一个调用端口(
手册页解释。。。
-p选项应该被认为是sshpass所有选项中最不安全的。所有系统用户都可以在命令行中通过简单的";ps";命令Sshpass对隐藏密码的尝试微乎其微,但这种尝试注定会在没有实际解决问题的情况下创造比赛条件。鼓励sshpass的用户使用其他更安全的密码传递技术。
特别是,鼓励编写程序的人使用匿名管道,并使用-d选项将管道的读取端传递给sshpass。