非交互 SSH 密码验证 sshpass 基本使用教程
文章目录
ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。
sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。
1、基本使用
sshpass -p password ssh username@192.168.0.1 '<command>'
2、不在命令行显示密码
为了防止在屏幕上显示密码,可以使用 -e 标志,并将密码作为 SSHPASS 环境变量的值输入,如下所示:
export SSHPASS='my_pass_here'
echo $SSHPASS
sshpass -e ssh username@192.168.0.1 '<command>'
注意:在上面的示例中,SSHPASS 环境变量仅用于临时目的,并将在重新启动后删除。
要永久设置 SSHPASS 环境变量,打开 /etc/profile 文件,并在文件开头输入 export 语句:
export SSHPASS='my_pass_here'
保存文件并退出,接着运行下面的命令使更改生效:
$ source /etc/profile
另外,也可以使用 -f 标志,并把密码放在一个文件中。 这样,您可以从文件中读取密码,如下所示:
sshpass -f password_filename ssh username@192.168.0.1 '<command>'
3、 特别说明
3.1、 将 sshpass 用于批量传输文件
sshpass -f password_filename scp /Users/demo username@192.168.0.1:/demo_path
如果拷贝文件失败是因为第一次ssh让你输入yes
把 StrictHostKeyChecking no加到/etc/ssh/ssh_config可以让ssh客户端自动接受新主机的hostkey,不用 每次在ssh新主机时都自己输入yes
echo 'StrictHostKeyChecking no'>>/etc/ssh/ssh_config
3.2、 sshpass 安装
- Ubuntu:
apt-get install sshpass
- CentOS:
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz
tar xvzf sshpass-1.05.tar.gz
cd sshpass-1.05.tar.gz
./configure
make
make install
文章作者 honour
上次更新 2018-10-15