如何在shell脚本中使用ssh命令?
我知道我们应该这样做 sshuser@target 但是我们在哪里指定密码呢如何在shell脚本中使用ssh命令?,ssh,shell,Ssh,Shell,我知道我们应该这样做 sshuser@target 但是我们在哪里指定密码呢 谢谢你的回复。 我的要求是我必须在不同的机器上启动一些服务器。所有服务器都应使用一个shell脚本启动。好吧,每次输入密码似乎都有点糟糕,但我想我将不得不求助于那个选项。我不想保存公钥的一个原因是我可能不会每次都连接到同一台机器。返回并修改脚本以更改目标地址很容易。出于安全原因,这不能通过简单的ssh命令完成。如果您希望在ssh中使用密码路由,下面的链接显示了一些脚本,如果您坚持的话,可以绕过这个问题: 最好的方法是
谢谢你的回复。
我的要求是我必须在不同的机器上启动一些服务器。所有服务器都应使用一个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上设置过很多次了,有时候这可能是一个挑战。如果你在设置时遇到了特殊问题,请在此处发布。我认为链接已断开。我感到困惑:如果你的密钥都在各自的机器上,那么你就有可能在没有密码的情况下调用它们(假设你没有将密码短语与密钥相关联)。这并不意味着你必须用钥匙连接每台机器。