1、传统ssh公私密钥授信,免密登录;
网上文档一堆,不罗嗦了
2、expect交互登录
- #!/bin/expect
- set timeout 30
- spawn ssh -l jikuan.zjk 10.125.25.189
- expect "password:"
- send "zjk123\r"
- interact
在运行脚本时候要expect file,不能sh file了
上面语句第一句是设定超时时间为30s,spawn是expect的语句,执行命令前都要加这句
expect "password:"这句意思是交互获取是否返回password:关键字,因为在执行ssh时会返回输入password的提示:jikuan.zjk@10.125.25.189's password:
send就是将密码zjk123发送过去
interact代表执行完留在远程控制台,不加这句执行完后返回本地控制台
3、sshpass带密码登录
sshpass -p user_password ssh user_name@192.168..1.2
PS1、对于sshpass,不用担心ps会显示密码,ps显示出来的密码全是zzzzzz
PS2、sshpass不能像ssh那样跟<<EOF 执行一系列操作,一般的做法是将需要执行的操作写入本地sh脚本,scp到远程主机,然后以sshpass ...... @host "sh xxx.sh"的方式执行,执行结束再删除sh脚本,如果有日志需要取回的话再scp取回日志。
4、其他:重定向、管道
参考:
https://blog.csdn.net/zhangjikuan/article/details/51105166
http://www.bubuko.com/infodetail-1871760.html