在远程服务器上使用ssh执行sudo su

时间:2017-01-25 10:20:41

标签: bash ssh sudo su

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

我先解释一下我的问题,然后再去找我试过的解决方案

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

我用

ssh user@hostname

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

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

我试过以下

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

我希望我能够妥善解释。寻找可以提供帮助的答案。

抱歉我的英语不好。感谢帮助。

1 个答案:

答案 0 :(得分:0)

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

为了使用公钥/私钥启用ssh,请按照

进行操作
  1. public/private ke

    上的用户生成serverA y
    ssh-keygen -t rsa
    
  2. 转到.ssh/id_rsa.pub文件并复制公钥

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

  4. 现在从ssh尝试serverBserverA

    ssh app@hostnameServerB
    
  5. 无需密码即可使用。