【问题标题】:How do you keep the password hidden when invoked during the su command?在 su 命令期间调用时如何隐藏密码?
【发布时间】:2014-07-22 23:15:36
【问题描述】:

这是我第一次在使用 su 命令的地方发生这种情况,它实际上会在终端上显示密码并且不会保持隐藏状态。这是我的代码 sn-p:

sshpass -p "password" ssh -q username@74.11.11.11 "su -lc 'mkdir temp/'"

代码说明:我正在访问远程服务器并尝试在该服务器上以 root 身份创建文件夹。在这样做时,我必须使用 su 命令,它会提示我输入密码。当我输入密码时,它会显示并且不会保持隐藏状态。我该如何解决?

【问题讨论】:

  • 它是否接受密码,即使它是可见的?当我尝试执行这种类型的命令时,su 拒绝并说“标准输入必须是 tty”。
  • 是的,它接受密码,但显示的不是我想要的
  • 如果您在提示符下手动执行ssh -q username@74.11.11.11 "su -lc 'mkdir temp/'" 会怎样,它会接受密码但在这种情况下将其隐藏吗?
  • 它仍然显示密码
  • 74.11.11.11 的 Linux 版本和发行版是什么?当我尝试远程执行su 时,它会生成一个错误,表明它需要一个真实的tty,而不是远程连接来提示输入密码。

标签: linux bash shell scripting suse


【解决方案1】:

就像我回复你here一样。

可以在命令行中“隐藏”它:

编辑您的/etc/profile 并粘贴到那里:

export SSHPASS='my_pass_here'

将-e 参数与sshpass 命令一起使用

$ sshpass -e ssh usernmane@hosting.example 'ls -ll' 

另一种选择是将密码保存在不同的文件中并使用-f 参数:

$ sshpass -f password_filename ssh usernmane@hosting.example 'ls -la' 

但最好的解决办法是关注@Hristo Mohamedsuggestion:

一般情况下,请避免使用带有密码的 sshpass。

您可以轻松设置生成 ssh 密钥来完成这项工作,然后将其删除。

【讨论】:

    【解决方案2】:

    解决方案是分配一个伪 TTY(使用 ssh 上的 -t 选项):

    sshpass -p "password" ssh -t -q username@74.11.11.11 "su -lc 'mkdir temp/'"
    

    没有这个,上下文中就没有“终端”,su 无法禁用密码回显。

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 2019-12-01
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多