【问题标题】:ssh connect to user on another server and execute shell commands as that userssh 连接到另一台服务器上的用户并以该用户身份执行 shell 命令
【发布时间】:2016-10-24 00:30:57
【问题描述】:

当我使用ssh 连接到另一台服务器时,我正在使用“EOF”标记在远程服务器中执行一些命令。但是他们无法在远程服务器上执行命令。

同样当无密码ssh连接未开启时,如何在不要求用户输入密码的情况下从脚本中输入密码?

$ su - oracle < passwd.txt
standard in must be a tty

【问题讨论】:

  • 请添加任何错误信息和实际执行的命令(复制粘贴,不要重新输入)。
  • 添加了 ssh 连接到另一台服务器时遇到的错误。
  • 考虑使用sshpassexpect。看到这个post
  • 错误信息显示输入重定向不能输入密码。如果您通过设置无密码身份验证或使用sshpassexpect 来解决密码问题,那么带有EOF 标记的document-here 将按预期工作。
  • 是的,但我正在尝试这样做。通过将密码保存在没有人可以访问的文件中,这样我就可以保持安全。我想用这个密码文件登录

标签: linux bash shell unix ssh


【解决方案1】:

最好的方法是为该命令设置一个无密码的 sudo。

如果你没有sudo命令,请安装它,然后用visudo命令修改sudoers文件,并添加这样一行:

youruser    ALL=(oracle) NOPASSWD: the command you want to launch

例如

girish    ALL=(oracle) NOPASSWD: /bin/stop-process

然后,在您的脚本中,执行以下操作:

ssh girish@myserver 'sudo -u oracle /bin/stop-process'

并且不会询问密码。

【讨论】:

  • 嗨。我知道使用此示例脚本与无密码连接。但我正在寻找一种方法来将密码保存在脚本中或操作系统中的单独文件中。在我们的服务器中,这是一项安全措施,即不为任何命令启用无密码连接。
  • 安全性是不要将您的密码以明文形式保存在脚本中。使用 ssh 密钥创建一个可以执行此操作的特殊用户帐户,您将尽可能安全。
  • 在我展示的示例中,我将密码保存在一个文本文件中,只有当前用户可以打开该文件,并且只有我知道位置,所以它是安全的。我正在尝试找到一种使用该文本文件登录的方法
  • 这不是一个好主意。请前往 security.stackexchange.com 了解更多关于这是一个非常糟糕的主意的信息。
【解决方案2】:

如果没有启用密码较少的连接(假设启用了密钥身份验证 - 更安全..),那么在机器之间使用密钥.. 使用 ssh-keygen 生成密钥并使用 ssh-copy-id 将其复制到远程服务器

【讨论】:

  • 我正在尝试在不启用无密码连接的情况下执行此操作
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多