【问题标题】:How to enter ssh password using bash? [duplicate]如何使用 bash 输入 ssh 密码? [复制]
【发布时间】:2013-05-31 10:47:08
【问题描述】:

每天我都通过 ssh 连接到服务器。我经历了这个例程:

IC001:Desktop user$ ssh user@my.server.com
user@my.server.com's password: 

Last login: Tue Jun  4 10:09:01 2013 from 0.0.0.0
$

我想自动化这个过程并创建一个 bash 脚本来为我做这件事。我不关心安全性,可以在脚本中公开存储我的密码。我也可以在脚本执行时在屏幕上公开输入它。所以我创建了这个:

#!/bin/bash          
ssh user@my.server.com
echo mypassword

但它不起作用。我也尝试过send 而不是echo,但也没有用。请告知是否可以这样做。

【问题讨论】:

标签: bash ssh


【解决方案1】:

仔细检查您是否无法使用密钥。

否则使用期望:

#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact

【讨论】:

  • 呃...“assword”是错字还是故意的?
  • 目的:匹配Passwordpassword
  • 我在 TextExpander 中试过这个,但我得到了spawn: command not found。我在没有关键字的情况下尝试过,但没有任何反应。
  • @jowie 你应该安装 expectsudo apt-get install expect 例如然后你就会有 spawn 命令
  • 在“呃...”评论中大声笑
【解决方案2】:

创建一个新的密钥对:(使用默认值)

ssh-keygen

将公钥复制到服务器:(最后一次的密码)

ssh-copy-id user@my.server.com

从现在开始,服务器应该识别你的密钥,不再要求你输入密码:

ssh user@my.server.com

【讨论】:

  • 所以关键是您对管理员已锁定安全性的服务器的访问权限非常有限,并且您希望将密码以明文形式保留在您的计算机上,因为服务器所有者的安全问题对您来说很麻烦。我做对了吗?你为什么不问问那个系统管理员他对你的脚本感觉如何?
  • 需要:ssh-agent bash && ssh-add 如此处所示solomonson.com/content/… 才能使其工作。
  • 哦,快! lmao @Prostak。我竭尽全力将我的问题提炼到最低限度,这样回答者/评论者就不会因为与实际问题无关的事情而陷入困境。
  • 如果您使用的是 OSX 或其他没有 ssh-copy-id 的操作系统,则可以使用单行替代方法 here
  • @Chev 另外,ssh-copy-id 可从 Homebrew 获得。
猜你喜欢
  • 2023-03-28
  • 2017-01-30
  • 1970-01-01
  • 2014-09-29
  • 2021-11-29
  • 1970-01-01
  • 2015-05-03
  • 2023-03-09
  • 2018-07-07
相关资源
最近更新 更多