代码之家  ›  专栏  ›  技术社区  ›  Jon Ericson Homunculus Reticulli

如何在shell脚本中使用ssh?

  •  19
  • Jon Ericson Homunculus Reticulli  · 技术社区  · 17 年前

    当我尝试使用 抑制性消减杂交 命令在shell脚本中,命令就放在那里。你有如何使用的例子吗 抑制性消减杂交 在shell脚本中?

    5 回复  |  直到 16 年前
        1
  •  31
  •   Mats Fredriksson    17 年前

    这取决于你想做什么,以及你如何使用它。如果你只想在另一台机器上远程安全地执行命令,只需使用

    ssh user@host command
    

    例如

    ssh user@host ls
    

    为了安全地完成此操作,您需要在运行时向用户询问密码,或者在远程主机上设置密钥。

        2
  •  20
  •   Community CDub    8 年前

    首先,您需要确保设置了无密码(公钥登录)。至少有两种风格的ssh,配置文件格式略有不同。检查 抑制性消减杂交 您系统上的手册页,请咨询您当地的系统管理员或前往 How do I setup Public-Key Authentication? .

    运行 抑制性消减杂交 在批处理模式下(例如在shell脚本中),您需要传递要运行的命令。语法为:

    ssh host command
    

    如果要同时运行多个命令,请使用引号和分号:

    ssh host "command1; command2"
    

    需要引号来保护分号免受shell解释器的攻击。如果将它们排除在外,则只有第一个命令将远程运行,其余命令将在本地计算机上运行。

        3
  •  0
  •   whoan    9 年前

    您需要将SSH公钥放入 ~/.ssh/authorized_keys 远程主机上的文件。然后,您将能够以较少的密码通过SSH连接到该主机。

    或者,您可以使用 ssh-agent 。我建议不要将密码存储在脚本中。

        4
  •  0
  •   whoan    9 年前

    您可以使用 expect 命令填充用户名/密码信息。

        5
  •  -2
  •   gmuslera    17 年前

    最简单的方法是为运行脚本的用户使用证书。

    更复杂的是,当shell命令要求输入密码时,需要在stdin中添加密码。Expect、perl库会向用户显示询问密码的提示(至少是交互式的),有很多选择。

    推荐文章