shell脚本实现ssh登录(shell脚本ssh登录服务器)
大家好!今天让创意岭的小编来大家介绍下关于shell脚本实现ssh登录的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
ChatGPT国内免费在线使用,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
本文目录:
一、【shell】CentOS7.x上sshpass的安装使用
OpenSSH 自带的 ssh 客户端程序(也就是 ssh命令)默认不允许你以非交互的方式传递密码。
很多时候我们在确定安全的情况下,对ssh的交互登录"深恶痛绝",所以就需要进行免密登录。
ssh登陆不能在命令行中指定密码,sshpass的出现,解决了这一问题。
sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码(本机known_hosts文件中有的主机才能生效)。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
ssh命令, 没有指定密码的参数. 以至于在脚本中使用ssh命令的时候, 必须手动输入密码, 才能继续执行. 这样使得脚本的自动化执行变得很差, 尤其当ssh对应的机器数很多的时候, 会令人抓狂.使用非交互式样有两种方式: 一种借助expect脚本, 一种借助sshpass来实现。
# wget https://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
# tar zxf sshpass-1.06.tar.gz
# cd sshpass-1.06
# ./configure --prefix=/usr/local/
# make && make install
# yum -y install sshpass
# yum info sshpass
注:如果用rpm的方式安装ansible,sshpass是作为依赖安装的。
# sshpass -h
# sshpass -p "123456" ssh -o 'StrictHostKeyChecking=no' root@192.168.1.100
# sshpass -p "123456" ssh -o 'StrictHostKeyChecking=no' root@192.168.1.100 -v
注:第一次登陆务必加上 -o 'StrictHostKeyChecking=no' 选项,或者保险起见,每次加上
non-interactive ssh password auth
https://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
sshpass 用法举例
https://www.cnblogs.com/nf01/articles/10756100.html
Linux ssh命令详解
https://www.cnblogs.com/ftl1012/p/ssh.html
sshpass的使用方法
https://www.cnblogs.com/misswangxing/p/10637718.html
用expect做服务器的批量互信
https://www.jianshu.com/p/632e7efb59f5
二、Linux。。shell 脚本中经常要用到ssh。可是ssh又要交互式输密码。怎么能不交互的输密码呢?
1、登录A机器
2、ssh-keygen -t [rsa|dsa],将会在~/.ssh下生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了(直接运行 #ssh 192.168.1.100 )
面交互输入,就得使用expect脚本,例:
#!/bin/bash
passwd='123456'
/usr/bin/expect <<-EOF
set time 30
spawn ssh root@192.168.1.100
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect "*#"
send "cd /home/trunk\r"
expect "*#"
send "ls\r"
expect "*#"
send "exit\r"
interact
expect eof
EOF
三、怎么在一个shell脚本中执行远程主机的另一个shell脚本?? ssh已经可以无密码登录了。
假设你要操作的是远程服务器
IP为:1.1.1.1
操作的脚本是 :/home/a.sh
操作命令为
ssh 1.1.1.1 “/bin/bash /home/a.sh”
四、如何使用shell脚本修改linux的登陆密码
编写mssh.sh脚本
内容如下
1.
#!/usr/bin/expect
-f
2.
#auto
ssh
login
3.
set
timeout
30
4.
set
sshhost
[lindex
$argv
0]
5.
spawn
ssh
-llizongbo
-p13800
$sshhost
6.
expect
“password:”
7.
send
“lizongbo_618119\r”
8.
interact
给文件加上可执行权限
chmod
+x
./mssh.sh
如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行
chmod
700
./mssh.sh
测试成功:
./mssh.sh
618119.com
直接登录到了
618119.com
以上就是关于shell脚本实现ssh登录相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: