当我尝试在 shell 脚本中使用ssh命令时,该命令就在那里。你有一个如何在 shell 脚本中使用ssh的例子吗?
Jon Ericson
问问题
36830 次
5 回答
38
取决于你想做什么,以及你如何使用它。如果您只想在另一台机器上远程安全地执行命令,只需使用
ssh user@host command
例如
ssh user@host ls
为了安全地执行此操作,您需要在运行时向用户询问密码,或者在远程主机上设置密钥。
于 2008-08-26T22:19:48.573 回答
23
首先,您需要确保已设置无密码(公钥登录)。至少有两种配置文件格式略有不同的 ssh。检查系统上的ssh手册页,咨询本地系统管理员或前往如何设置公钥身份验证?.
要以批处理模式(例如在 shell 脚本中)运行ssh,您需要传递一个要运行的命令。语法是:
ssh host command
如果要同时运行多个命令,请使用引号和分号:
ssh host "command1; command2"
需要引号来保护分号免受 shell 解释器的影响。如果您将它们排除在外,则只有第一个命令将远程运行,其余所有命令将在本地计算机上运行。
于 2008-08-26T22:34:57.350 回答
2
您需要将 SSH 公钥放入~/.ssh/authorized_keys
远程主机上的文件中。然后,您将能够通过 SSH 连接到该主机而无需密码。
或者,您可以使用ssh-agent
. 我建议不要将密码存储在脚本中。
于 2008-08-26T22:23:45.940 回答
1
您可以使用expect
命令来填充用户名/密码信息。
于 2008-08-26T22:18:30.557 回答
-2
最简单的方法是为运行脚本的用户使用证书。
一个更复杂的方法是在 shell 命令要求时将密码添加到标准输入。期望,perl 库,向用户显示询问密码的提示(如果是交互式的,至少),有很多选择。
于 2008-08-26T22:26:43.157 回答