如何使用 bash 输入 ssh 密码?

每天我都通过 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,但它也没有工作。请告知是否可以做。

413894 次浏览

Create a new keypair: (go with the defaults)

ssh-keygen

Copy the public key to the server: (password for the last time)

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

From now on the server should recognize your key and not ask you for the password anymore:

ssh user@my.server.com

Double check if you are not able to use keys.

Otherwise use expect:

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