当我尝试在shell脚本中使用ssh命令时,该命令只是停在那里。您有使用ssh在shell脚本中的例子吗?
这取决于您想要做什么,以及如何使用它。如果您只想在另一台机器上远程安全地执行一个命令,只需使用
ssh user@host command
例如
ssh user@host ls
为了安全地执行此操作,您需要在运行时要求用户输入密码或在远程主机上设置密钥。首先,您需要确保已设置无密码登录(公钥登录)。SSH至少有两种不同的配置文件格式。请查看系统上的 SSH 手册,咨询本地系统管理员或访问如何设置公钥身份验证?
要在批处理模式下运行 SSH(例如在 shell 脚本中),您需要传递要运行的命令。语法如下:
ssh host command
ssh host "command1; command2"
引号的作用是保护分号免受Shell解释器的影响。如果省略了它们,只有第一个命令会在远程运行,其余所有命令都将在本地机器上运行。
~/.ssh/authorized_keys
文件中。然后,您就可以使用SSH无需密码访问该主机。ssh-agent
。我建议不要在脚本中存储密码。最简单的方法是为运行脚本的用户使用证书。
更复杂的方法是在 shell 命令要求密码时将其添加到 stdin 中。Expect、perl 库可以向用户显示提示要求输入密码(如果至少是交互式的),有很多选择。