linux – 如何在bash中一起使用ssh和sudo?

前端之家收集整理的这篇文章主要介绍了linux – 如何在bash中一起使用ssh和sudo?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法找到描述此特定方案的问题.

我正在尝试执行一个非常基本的bash脚本来从多台机器上检索日志记录.我在本地运行脚本,但是需要通过ssh访问外部机器,以及在该机器上访问特权用户sudo …

ssh myuser@machine.net
sudo su  - privledged_user
cat logs > file.txt

使用sh -x运行它会显示bash卡在’ssh’行上.所以我尝试修改它:

ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt

这似乎也无限期地停滞不前.这个问题有更好的解决方案吗?从我所知道的,我没有看到使用sudo su的方法……

谢谢你的帮助!

解决方法

我在当前环境中实现这一点的方法是使用-t标志运行ssh,强制tty分配,然后在其中运行sudo -u root,如下所示:
ssh -t hostname << EOF
  command1
  sudo -u root command2
  sudo -u otheruser "command3 | command4"
  sudo -u root /bin/bash -c "command5; command6; command7"
  command8 && ( sudo -u otheruser /bin/bash -c "cmd1 ${1}; cmd2 {$2}" ) || echo cmd2 did not work

EOF

我的帐户位于远程端的sudoers中,因此无需密码.

此示例显示了在单个ssh会话中执行此操作的不同方法,包括使用bash或子shell运行多个命令.另请注意,如果将上述代码放入可执行脚本中,则可以将命令行参数($1和$2)传递给ssh,这些参数将被展开,然后在远程端引用.

猜你在找的Linux相关文章