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

时间:2010-10-15 01:10:46

标签: ssh shell

我知道我们这样做 ssh user @ target 但是我们在哪里指定密码?


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

6 个答案:

答案 0 :(得分:6)

执行此操作的最佳方法是生成私钥/公钥对,并将公钥存储在远程服务器上。这是一种安全的登录方式,无需每次都输入密码。 Read more here

答案 1 :(得分:2)

出于安全原因,使用简单的ssh命令无法做到这一点。如果你想使用密码路由和ssh,下面的链接会显示一些脚本来解决这个问题,如果你坚持的话:

Scripts to automate password entry

答案 2 :(得分:2)

ssh命令将提示您输入密码。在命令行上指定密码是不安全的,因为执行的完整命令通常是世界可见的(例如ps aux),并且还以明文形式保存在命令历史文件中。任何编写良好的程序(包括ssh)都会在必要时提示输入密码,并禁用电传回传,以便在终端上看不到。

如果您尝试从cron或后台执行ssh,请使用ssh-agent

答案 3 :(得分:2)

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

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

http://linuxproblem.org/art_9.html

答案 4 :(得分:1)

SSH密钥是标准/建议的解决方案。必须为脚本将以其运行的用户设置密钥。

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

如果您没有任何按键设置,则可以运行:

ssh-keygen -t rsa

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

然后,您可以将此文件的内容复制到远程计算机上的〜(remote-user)/。ssh / authorized_keys。

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

ssh remote-user@remote-machine

您应该在没有密码提示的情况下登录。

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

答案 5 :(得分:0)

如果您真的想使用密码验证,可以尝试预期。有关示例,请参阅here