你如何在shell脚本中使用ssh?

时间:2008-08-26 22:05:37

标签: bash shell ssh ksh rsh

当我尝试在shell脚本中使用 ssh 命令时,命令就在那里。您是否有一个如何在shell脚本中使用 ssh 的示例?

5 个答案:

答案 0 :(得分:31)

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

ssh user@host command

例如

ssh user@host ls

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

答案 1 :(得分:20)

首先,您需要确保已设置无密码(公钥登录)。至少有两种ssh配置文件格式略有不同。检查系统上的 ssh 联机帮助页,咨询当地的系统管理员或转到How do I setup Public-Key Authentication?

要以批处理模式运行 ssh (例如在shell脚本中),您需要传递要运行的命令。语法是:

ssh host command

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

ssh host "command1; command2"

需要引号来保护分析符不受shell解释器的影响。如果你把它们遗漏了,只有第一个命令可以远程运行,其余的都将在本地机器上运行。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您需要将SSH公钥放入远程主机上的~/.ssh/authorized_keys文件中。然后,您将能够以无密码的方式SSH到该主机。

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

答案 4 :(得分:-2)

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

更复杂的一个意味着当shell命令要求时向stdin添加密码。期待,perl库向用户显示询问密码的提示(至少是交互式的),有很多选择。