【问题标题】:Doing sudo su with ssh on a remote server not working在远程服务器上使用 ssh 执行 sudo su 不起作用
【发布时间】:2017-06-10 11:30:11
【问题描述】:

这似乎是 stackoverflow 上的一个热门问题,但似乎没有什么对我有用

我会先解释我的问题,然后再去尝试我尝试过的解决方案

我需要做的是从serverAsshserverB。为此,我在服务器上设置了 rsa 加密,我可以成功 ssh 到 serverB

我用

ssh user@hostname

现在我想在serverB 上执行某些命令。第一个是切换到app用户。为此,我需要运行sudo su - app 命令,但我还想在同一行中提供密码,以便它不会再次提示输入密码。

所以我尝试先用密码直接在serverB上运行sudo su - app命令来测试它

我已经尝试了以下

echo "password" | sudo su - app

sudo -S  <<< "password" su - app

echo "password" | sudo -S su - app

echo 'passowrd' | sudo 'su -c - app'

但是,以上解决方案都不适合我。

我能得到的最接近的是

echo "password" | script -c "sudo su - app"

它在哪里接受密码并显示给我

app@hostname [/app]
$

但是,当我运行命令whoami 时,它仍然显示user 而不是app。但是,当我直接运行sudo su - app 并提供传递然后运行whoami 它给了我app

我正在尝试使用 ssh 运行命令

ssh user@hostname -t 'echo "password" | script -c "sudo su - app"'

P.S. 用户 user 没有 root 访问权限,我也无法使用任何插件,因为我没有权限这样做

我的服务器是Redhat 6.2

我希望我能正确地解释它。寻找一些可以提供帮助的答案。

对不起,我的英语不好。感谢帮助。

【问题讨论】:

  • 所以用户不在sudousers组中?
  • @МартинБее 不,不是
  • 如果您没有root权限,我认为您将无法运行任何以sudo开头的命令,如果可以,请尝试以app开头的身份登录ssh 命令。
  • @МартинБее 正如我所说,用户有权切换到应用程序用户。自从我尝试 sudo su - app 并输入密码后,它就可以工作了
  • @МартинБее 我也试过了,但问题是我没有应用程序用户的密码,因此我无法登录。如果可能的话,那真的很容易

标签: bash ssh sudo su


【解决方案1】:

如果我们使用 rsa 密钥加密设置 ssh,那么我们不需要使用密码。

为了使用公钥/私钥启用 ssh,我遵循了

  1. serverA上的用户生成public/private key

    ssh-keygen -t rsa
    
  2. 转到.ssh/id_rsa.pub文件并复制公钥

  3. 登录ServerB,然后执行sudo su - app 更改为应用用户。在.ssh/authorized_key文件中复制公钥。

  4. 现在从serverA 尝试sshserverB 喜欢

    ssh app@hostnameServerB
    

无需输入密码即可使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2021-08-21
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2012-11-20
    • 2013-11-22
    相关资源
    最近更新 更多