我们如何在Shell脚本中使用ssh?

时间:2020-03-05 18:43:33  来源:igfitidea点击:

当我尝试在Shell脚本中使用ssh命令时,该命令就坐在那儿。我们是否有一个如何在Shell脚本中使用ssh的示例?

解决方案

回答

我们可以使用" expect"命令来填充用户名/密码信息。

回答

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

ssh user@host command

例如

ssh user@host ls

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

回答

我们需要将SSH公钥放入远程主机上的〜/ .ssh / authorized_keys文件中。然后,我们无需密码即可使用SSH到该主机。

另外,我们可以使用ssh-agent。我建议不要将密码存储在脚本中。

回答

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

一种更复杂的方法是在shell命令要求输入密码时将密码添加到stdin中。期望,Perl库向用户显示询问密码的提示(至少是交互式的),有很多选择。

回答

首先,我们需要确保设置了无密码(公共密钥登录)。至少有两种ssh,配置文件格式略有不同。检查系统上的ssh联机帮助页,咨询本地sysadmin或者转到"如何设置公共密钥身份验证?"。

要以批处理模式(例如在Shell脚本内)运行ssh,我们需要传递要运行的命令。语法为:

ssh host command

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

ssh host "command1; command2"

需要使用引号来保护分号不受shell解释器的影响。如果我们忽略它们,则仅第一个命令将在远程计算机上运行,​​其余所有命令将在本地计算机上运行。