Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在shell脚本中使用ssh命令?_Ssh_Shell - Fatal编程技术网

如何在shell脚本中使用ssh命令?

如何在shell脚本中使用ssh命令?,ssh,shell,Ssh,Shell,我知道我们应该这样做 sshuser@target 但是我们在哪里指定密码呢 谢谢你的回复。 我的要求是我必须在不同的机器上启动一些服务器。所有服务器都应使用一个shell脚本启动。好吧,每次输入密码似乎都有点糟糕,但我想我将不得不求助于那个选项。我不想保存公钥的一个原因是我可能不会每次都连接到同一台机器。返回并修改脚本以更改目标地址很容易。出于安全原因,这不能通过简单的ssh命令完成。如果您希望在ssh中使用密码路由,下面的链接显示了一些脚本,如果您坚持的话,可以绕过这个问题: 最好的方法是

我知道我们应该这样做 sshuser@target 但是我们在哪里指定密码呢


谢谢你的回复。
我的要求是我必须在不同的机器上启动一些服务器。所有服务器都应使用一个shell脚本启动。好吧,每次输入密码似乎都有点糟糕,但我想我将不得不求助于那个选项。我不想保存公钥的一个原因是我可能不会每次都连接到同一台机器。返回并修改脚本以更改目标地址很容易。

出于安全原因,这不能通过简单的ssh命令完成。如果您希望在ssh中使用密码路由,下面的链接显示了一些脚本,如果您坚持的话,可以绕过这个问题:


最好的方法是生成私钥/公钥对,并将公钥存储在远程服务器上。这是一种安全的登录方式,每次不输入密码。
ssh命令将提示输入密码。在命令行上指定密码是不安全的,因为执行的完整命令通常是全世界可见的(例如ps aux),并且在命令历史文件中以纯文本形式保存。任何编写良好的程序(包括ssh)都会在必要时提示输入密码,并会禁用电传打字回音,使其在终端上不可见


如果您试图从cron或后台执行ssh,请使用。

我过去的做法就是设置一对身份验证密钥

这样,您就可以登录,而无需指定密码,并且可以在shell脚本中工作。这里有一个很好的教程:


如果您确实想使用密码验证,可以尝试expect。请参阅以获取示例,SSH密钥是标准/建议的解决方案。必须为脚本将作为其运行的用户设置密钥

对于该脚本用户,请查看是否在~/.ssh/中设置了任何密钥/(密钥文件将以.pub扩展名结尾)

如果没有任何密钥设置,则可以运行:

ssh-keygen -t rsa
它将生成~/.ssh/id_rsa.pub(-t选项也有其他类型)

然后,您可以将此文件的内容复制到远程计算机上的~(remote user)/.ssh/authorized_密钥

作为脚本用户,您可以通过以下方式测试它是否工作:

ssh remote-user@remote-machine
您应该在没有密码提示的情况下登录


同样,现在当您的脚本从该用户运行时,它可以自动SSH到远程计算机。

对于windows上的用户,我建议使用“putty”工具集。对于这种情况,pageant工具将处理密钥管理。pglombardo给出了在*nix上使用公钥身份验证的概述。我已经在linux上设置过很多次了,有时候这可能是一个挑战。如果你在设置时遇到了特殊问题,请在此处发布。我认为链接已断开。我感到困惑:如果你的密钥都在各自的机器上,那么你就有可能在没有密码的情况下调用它们(假设你没有将密码短语与密钥相关联)。这并不意味着你必须用钥匙连接每台机器。