如何从 shell 脚本使用 ssh 而不等待密码?

如何从 shell 脚本使用 ssh 而不等待密码?

我不能使用公钥方法。我也不想使用期望脚本。我在这个网站上搜索解决方案,但每个人都在谈论这些解决方案。

还有其他方法吗,例如 ssh 命令的命令行参数(例如 --password='asdf')或输入重定向(“<”)?

答案1

我会说使用 RSA 密钥或者尝试这个:http://bash.cyberciti.biz/security/expect-ssh-login-script/ 请记住,您需要安装expect工具

但既然你有话说对于 RSA 和expect,唯一的方法是利用 Twisted 的conch(http://twistedmatrix.com/projects/conch/documentation/examples/)或任何其他提供 SSH 实现的平台,例如 ruby​​ 或 Perl

答案2

您可以尝试基于主机的身份验证来登录没有密码。在这种情况下,您不需要用户的私钥。但您仍然需要主机密钥。这对您来说是一个可行的解决方案吗?

ssh 的手册页说:

基于主机的身份验证的工作原理如下:如果用户登录的计算机在远程计算机上的 /etc/hosts.equiv 或 /etc/ssh/shosts.equiv 中列出,并且双方的用户名相同,或者如果文件 ~/.rhosts 或 ~/.shosts 存在于远程计算机上的用户主目录中,并且包含一行,其中包含客户端计算机的名称和该计算机上的用户的名称,则考虑该用户登录。此外,服务器必须能够验证客户端的主机密钥(请参阅下面 /etc/ssh/ssh_known_hosts 和 ~/.ssh/known_hosts 的描述)才能允许登录。此身份验证方法可弥补由于 IP 欺骗、DNS 欺骗和路由欺骗而造成的安全漏洞。[管理员注意:/etc/hosts.equiv、~/.rhosts 和 rlogin/rsh 协议通常本质上是不安全的,如果需要安全性,应将其禁用。]

答案3

如果你熟悉 Python,你可以尝试波拉米科

答案4

在 debian 及其衍生版本中,有一个名为 sshpass 的软件包(网站在这里) 就是为此而设计的。

相关内容