【问题标题】:Automate running script as a different user on remote server在远程服务器上以不同用户身份自动运行脚本
【发布时间】:2018-07-08 07:31:18
【问题描述】:

我可以使用以下命令在远程服务器上运行脚本: ssh user1@ip-of-server "command"

这很好,但我需要使用不同的用户 (user2) 执行命令。
如果我手动进行 - 这些将是步骤:
1) SSH 作为用户 1 到服务器
2) sudo su - user2
3) 执行命令(现在作为 user2)

自动化的最佳方法是什么?我应该以 user2 的身份 ssh 到服务器还是有办法以 user1 的身份 ssh,切换到 user2 并执行命令?

谢谢。

【问题讨论】:

  • 可能你一登录到 user2 askubuntu.com/questions/704768/…就运行脚本
  • 所以问题是我需要从本地服务器触发执行。如果我尝试以 user1 身份登录,然后发送命令(通过 SSH)切换到 user2 sudo su - user2 - 它只是失败(但我可以通过首先以 user1 身份 ssh-ing 到服务器然后切换到 user2 来手动完成)。我只想自动化所有步骤,以便可以从我的本地服务器执行所有步骤。
  • 或者你也可以使用 sshpass -p pwd ssh user2@192.168.x.xxx ''
  • 我想知道您为什么不以 user2 身份尝试 ssh。无论如何,您可以运行类似ssh user1@server-ip "sudo su user2 -c 'command'" 的命令

标签: linux amazon-ec2 ssh


【解决方案1】:

当你 ssh 进入时,你可以像你说的那样执行命令:

ssh user@server command

你也可以像这样执行多个命令:

ssh user@server 'command1; command2; command3;'

为了在脚本中以其他用户身份执行操作,您(理想情况下)需要启用无密码 sudo,详细说明 here

但作为 TLDR,您需要将以下内容放入您的 /etc/sudoers 文件中:

ALL ALL = (ALL) NOPASSWD: ALL

我不建议您完全这样做,但请按照我链接的说明进行操作以进行更好的控制。

拥有无密码 sudo 后,您可以执行以下操作:

ssh user@server 'sudo -u user2 "whoami"'

该命令将返回user2

【讨论】:

  • 是的,这行得通。但我需要执行例如command2 as user2 - 这是一个关键点。
猜你喜欢
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多