这是我第一次在使用su命令时发生这种情况,它实际上在终端上显示密码,而不是保持隐藏。下面是我的代码片段:
sshpass -p "password" ssh -q username@74.11.11.11 "su -lc 'mkdir temp/'"
代码解释:我正在访问远程服务器并尝试在该服务器上以root身份创建一个文件夹。为此,我必须使用su命令,它会提示我输入密码。当我输入密码时,它会显示出来,不会一直隐藏。我该如何解决这个问题?
解决方案是分配一个伪TTY(在ssh
上使用-t
选项):
sshpass -p "password" ssh -t -q username@74.11.11.11 "su -lc 'mkdir temp/'"
如果没有这个,在这个上下文中没有"终端",su
无法禁用密码的回显。
就像我在这里回复你一样。
可以把它"隐藏"起来从命令行:
编辑你的/etc/profile
并粘贴在那里:
export SSHPASS='my_pass_here'
对sshpass
命令使用-e
参数
$ sshpass -e ssh usernmane@hosting.example 'ls -ll'
另一个选项是将密码保存在另一个文件中,并使用-f
参数:
$ sshpass -f password_filename ssh usernmane@hosting.example 'ls -la'
但最好的解决方案是遵循@Hristo Mohamed的建议:
一般情况下请避免使用带有密码的sshpass。
你可以很容易地设置一个生成ssh密钥来完成这项工作,然后删除它。