想实现ssh自动输入密码登录,网上搜了一下,主要有两种方法:1、生成公钥。2、编写expect脚本。
这两种方法,用起来都有点复杂,偶然发现一个sshpass,其实sshpass的用法很简单。
sshpass简介:
ssh登陆不能在命令行中指定密码,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
centos6安装 sshpass安装:
源码下载地址:http://sourceforge.net/projects/sshpass/
tar -zxvf sshpass-1.05.tar.gz
cd sshpass-1.05
./configure
make && make install
或者
cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo
yum install sshpass
安装完成后输入sshpass出现如下提示即安装成功:
[root@test ~]# sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
用法:
sshpass 参数 SSH命令(ssh,sftp,scp等)。
参数:
-p password //将参数password作为密码。
-f passwordfile //提取文件passwordfile的第一行作为密码。
-e //将环境变量SSHPASS作为密码。
比如说:
sshpass abc@192.168.1.5:/home/test /root 这个命令的作用是将服务器端文件test传到本地文件夹/root下。
利用sshpass,假设密码为efghi,则可写作:
sshpass -p efghi scp abc@192.168.1.5:/home/test /root
另外,对于ssh的第一次登陆,会提示:“Are you sure you want to continue connecting (yes/no)”,这时sshpass不好用了,可以在ssh命令后面加上 -o StrictHostKeyChecking=no来解决。
比如说上面的命令,就可以写作sshpass -p efghi scp abc@192.168.1.5:/home/test /root -o StrictHostKeyChecking=no
于是把sshpass和ssh命令集合就能实现ssh登录的时候加入密码了,这样把登录某台计算机的命令写成shell脚本,后面就十分的方便了
#!/bin/bash
sshpass -p "XXX" ssh user@IP
#sshpass -p "1234" ssh -p 22 root@192.168.35.12 'ls'
————————————————
版权声明:本文为CSDN博主「念念不忘的旧情人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a1010256340/article/details/90234763