当我尝试在shell脚本中使用 ssh 命令时,命令就在那里。您是否有一个如何在shell脚本中使用 ssh 的示例?
答案 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库向用户显示询问密码的提示(至少是交互式的),有很多选择。