这似乎是关于stackoverflow的一个热门问题,但似乎没有什么对我有用
我先解释一下我的问题,然后再去找我试过的解决方案
我需要做的是从ssh
serverB
到serverA
。为此我在服务器上设置了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
我希望我能够妥善解释。寻找可以提供帮助的答案。
抱歉我的英语不好。感谢帮助。
答案 0 :(得分:0)
如果我们使用rsa密钥加密设置ssh,那么我们就不需要使用密码。
为了使用公钥/私钥启用ssh,请按照
进行操作为public/private ke
serverA
y
ssh-keygen -t rsa
转到.ssh/id_rsa.pub
文件并复制公钥
登录ServerB
,然后sudo su - app
更改为app用户。在文件.ssh/authorized_key
中复制公钥。
现在从ssh
尝试serverB
到serverA
ssh app@hostnameServerB
无需密码即可使用。