如何使用bash输入ssh密码?

Pro*_*tak 82 ssh bash

每天我都通过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
$
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash          
ssh user@my.server.com
echo mypassword
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也试过send而不是echo,但它也没有用.请告知是否可以.

mic*_*has 177

如果您无法使用钥匙,请仔细检查.

否则使用期望:

#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact
Run Code Online (Sandbox Code Playgroud)

  • 它的目的是:匹配`Password`和`password`. (195认同)
  • 呃......"assword"是一个错字还是打算? (119认同)
  • 哈哈在"呃..."的评论 (21认同)
  • 我在TextExpander中试过这个,但是我得到`spawn:command not found`.我尝试了没有关键字,但没有任何反应. (5认同)
  • @jowie你应该用`sudo apt-get install expect`安装`expect`然后你将拥有spawn命令 (5认同)
  • 我总是把我的“asswords”搞混 (2认同)

mic*_*has 94

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

ssh-keygen
Run Code Online (Sandbox Code Playgroud)

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

ssh-copy-id user@my.server.com
Run Code Online (Sandbox Code Playgroud)

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

ssh user@my.server.com
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是OSX或其他没有`ssh-copy-id`的操作系统,则可以使用单行替代方案[这里](http://www.commandlinefu.com/commands/view/188/copy-您-SSH-公钥到一个服务器 - 从-A-机器是 - 犯规 - 有-SSH拷贝-ID). (7认同)
  • 哦,快!lmao @Prostak.我竭尽全力将我的问题提炼到最低限度,以便回答者/评论者不会将他们的内裤放在一堆关于与实际问题无关的事情上. (5认同)
  • 因此,关键是您对管理员已锁定安全性的服务器的访问权限非常有限,并且您希望在计算机上以明文形式保留密码,因为服务器所有者的安全问题对您来说很麻烦.我做对了吗?你为什么不问系统管理员他对你的剧本的看法? (4认同)
  • @Chev另外,`ssh-copy-id`可以从Homebrew获得. (4认同)