【问题标题】:Running Sudo inside SSH with << heredoc使用 << heredoc 在 SSH 中运行 Sudo
【发布时间】:2016-08-04 17:48:45
【问题描述】:

我相信您会发现这个问题与 stackoverflow 或互联网上的许多其他帖子类似。但是,我无法准确找到解决问题的方法。我有要在远程服务器上运行的任务列表,并且传递脚本就可以了!但是不符合要求。

我正在从我的服务器运行以下连接到远程服务器;

 ssh -t user@server << 'HERE'
   sudo su - <diff_user> 
   do task as diff_user
 HERE

 ssh -tt user@server << 'HERE'
   sudo su - <diff_user> 
   do task as diff_user
  HERE

使用第一个选项 (-t),我仍然无法执行 sudo,如下所示;

sudo:对不起,你必须有一个 tty 才能运行 sudo

使用上面的第二个选项 (-tt),我得到了当前服务器会话的反向输入/输出,一团糟。

我尝试将内容作为脚本传递给 SSH 以在远程主机上运行,​​但是得到了类似的结果。

除了在下面评论之外,还有其他方法吗?

/etc/sudoers 文件中的默认要求

虽然我没有在上面尝试过,但我知道 RedHat 已批准在未来的版本中将其删除/注释掉,无论何时。如果我按照步骤进行,我将在 100 台 VM 中完成上述工作(此外,我无权编辑 VM 上的文件并试一试)。

Bug 1020147

因此,我的问题和以前一样。如果我能在这里得到专家的意见,那就太好了:)

添加信息:使用 RedHat RHEL 6、2.6.32-573.3.1 我确实可以访问远程主机,一旦我进入,我的 ID 不需要密码即可切换到 diff_user。

【问题讨论】:

    标签: ssh openssh heredoc rhel6 sudoers


    【解决方案1】:

    当你这样问的时候,我猜你没有密码sudo

    当您将脚本放在stdin 上时,您无法与远程进程 (sudo) 通信。

    您应该使用sshsu 命令:

    ssh -t user@server "sudo su - <diff_user>  -c do task as diff_user"
    

    但它可能不起作用。可以使用expect 发起互动会话(这里有很多问题)。

    【讨论】:

    • 谢谢!为回应 Jakuje。我需要在远程主机上运行相当多的任务,并在一行上传递它是最后的想法。我确实没有密码 sudo,我需要将密码传递给“用户”,但不需要将密码传递给“diff_user”,当我在服务器中作为“用户”尝试运行ssh -t user@server "sudo su - &lt;diff_user&gt; &lt;&lt;HERE" &lt;commands&gt; HERE 时。但这似乎是非法使用 ssh。能指导一下吗?
    【解决方案2】:

    兄弟,我试图以自动方式连接到另一台机器并检查一些只能由 root/sudo 访问的日志,这是通过在文件中传递密码、服务器、用户等来完成的 - 我知道这是不安全,也不是一个好的做法,但这是我公司的做法,不要抱怨,兄弟;无论如何,我遇到了以下问题:tcgetattr:不适合设备的 ioctl,我不记得与 tty 相关的问题,sudo:抱歉,您必须有一个 tty 才能运行 sudo 等;这3周我受苦了。最后,我从服务器收到了响应,没有任何奇怪的消息。这是对我有用的代码:

    #!/bin/bash
    function checkLog(){
    FILE=$1
    readarray -t LINES < "$FILE"
    machine=${LINES[4]}
    user=${LINES[5]}
    password=${LINES[6]}
    fileName=${LINES[7]}
    numberOfLines=${LINES[8]}
    
    IFS='' read -r -d '' SSH_COMMAND <<EOT
    sudo -S <<< '$password' tail $fileName -n $numberOfLines
    EOT
    
    RESULTS=$(sshpass -p $password ssh -tt $user@$machine "${SSH_COMMAND}")
    echo "$RESULTS"
    }
    
    checkLog $1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2019-02-28
      • 2015-11-23
      • 2018-10-01
      • 2017-05-15
      • 2013-04-04
      相关资源
      最近更新 更多