【问题标题】:Shell script for remote SSH远程 SSH 的 Shell 脚本
【发布时间】:2012-11-01 15:37:50
【问题描述】:

我是 shell 脚本的新手,我正在运行 centos。我想写一个ssh远程机器的shell脚本并执行一堆命令。我面临的问题是如何为连接远程机器的命令提供用户名、密码、远程机器地址和私有访问密钥。

我在 Google 上找到了一些脚本,但它们都需要一个名为 expect 的实用程序,我不想安装任何实用程序,只是为了运行我的脚本。有没有办法做到这一点?

【问题讨论】:

  • 您可以使用public key自动登录。
  • ssh 公钥是执行此操作的“正确”方法,正如 Victor Hugo 已经建议的那样。除此之外:expect 是一个相当古老、流行且成熟的实用程序,您有什么不想安装它的原因吗?
  • 是的,因为只有一个脚本不想安装任何实用程序。我将不得不为此说服网络人员。

标签: linux bash shell unix ssh


【解决方案1】:

您可以在ssh 调用中传递您需要的所有内容,执行以下操作:

ssh -i private_key_path user_name@remote_machine "command"

如果您要多次使用此连接,并希望保持其配置,请将以下行添加到您的 .ssh/config 文件中:

Host host_alias
    User user_name
    HostName remote_machine
    IdentityFile private_key_path

然后访问远程机器,并执行你想要的命令,方法是:

ssh host_alias "command"

请注意,命令 AFAIK 必须用引号括起来,因为它必须被 ssh 视为唯一的一个参数。

【讨论】: