我们如何在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解释器的影响。如果我们忽略它们,则仅第一个命令将在远程计算机上运行,其余所有命令将在本地计算机上运行。