详细介绍可参考:十章———远程访问及控制(应用——linux高级管理)
密钥连接登录步骤
[root@C7--01 ~]# ssh-keygen -t ecdsa #生成root密钥 Generating public/private ecdsa key pair. Enter file in which to save the key (/root/.ssh/id_ecdsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_ecdsa. Your public key has been saved in /root/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:Rx4X1bEG7hyP5AZKCAG7rf/EmtTaAv/3GnrNXCdzljY root@C7--01 The key's randomart image is: +---[ECDSA 256]---+ | ..o. .o.o.| | . . . ... o| | . . .o..+ o | | o .o.o* = | | . . S.o * ..| | .. o . .+ E | | .o. + .+ . B .| | oo* .o.+ | | =+=o.o. | +----[SHA256]-----+ [root@C7--01 .ssh]# scp /root/.ssh/id_ecdsa.pub root@192.168.1.2:/root #上传到1.2机器上id_ecdsa.pub 文件 The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established. ECDSA key fingerprint is SHA256:iKbLEhg8UfqGICLymBBNoZqynedjXefz3LSjpQlcREg. ECDSA key fingerprint is MD5:c9:5e:dc:c2:eb:b9:19:88:2e:6d:56:e9:ca:cf:33:4d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts. root@192.168.1.2's password: id_ecdsa.pub 100% 173 97.9KB/s 00:00 #在1.2机器上查看 [root@C7--02 ~]# ls anaconda-ks.cfg id_ecdsa.pub yum.sh [root@C7--02 ~]# mkdir -p /root/.ssh [root@C7--02 ~]# cat id_ecdsa.pub >> /root/.ssh/authorized_keys [root@C7--01 .ssh]# ssh 192.168.1.2 #验证可以没有密码连接 Last login: Tue Nov 2 03:27:45 2021 from 192.168.1.1 [root@C7--02 ~]# ip a 1: lo:二、sshpass连接登录mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:18:f4:54 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::7627:d369:e086:2468/64 scope link valid_lft forever preferred_lft forever
1、安装sshpass工具在虚拟机中 *** 作
[root@C7--02 ~]# yum provides */sshpass #在本地yum仓库查找sshpass软件包 已加载插件:fastestmirror Loading mirror speeds from cached hostfile aaa/filelists_db | 3.1 MB 00:00:00 No matches found
1.1、添加一个网卡(设置为桥接模式)发现没有sshpass软件包
1.2、先在虚拟机上安装wget可以测试“ping”一下”百度“或者”京东“测试是否已经连接到互联网
[root@C7--01 ~]# yum -y install wget1.3、在浏览器中搜索 mirrors.aliyun.com 网站
找到网络上的yum源
1.4、复制找到的yum源[root@C7--01 ~]# wget -O /etc/yum.repos.d/CentOS-base.repo https://mirrors.aliyun.com/repo/Centos-7.repo --2021-11-01 20:14:51-- https://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 183.232.15.100, 120.237.196.241, 183.232.15.101, ... 正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|183.232.15.100|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:2523 (2.5K) [application/octet-stream] 正在保存至: “/etc/yum.repos.d/CentOS-base.repo” 100%[===========================================================================>] 2,523 --.-K/s 用时 0s 2021-11-01 20:14:51 (1002 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-base.repo” [2523/2523])1.5、安装
[root@C7--01 ~]# yum -y install sshpass 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 正在解决依赖关系 --> 正在检查事务 ---> 软件包 sshpass.x86_64.0.1.06-2.el7 将被 安装 ............... .....2、创建文件保存用户信息
done[root@C7--01 ~]# vim usr_info 192.168.1.2 root 123.com 保存
编写sshpass脚本
[root@C7--01 ~]# vim ssh_02.sh #!/bin/basd ip=`awk '{print }' usr_info` user=`awk '{print }' usr_info` pass=`awk '{print }' usr_info` command= /usr/bin/sshpass -p $pass ssh -o StrictHostKeyChecking=no $user@$ip $command
验证:
[root@C7--01 ~]# bash ssh_02.sh ifconfig ens33: flags=4163三、expect连接登录 1、安装expect软件包mtu 1500 inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::7627:d369:e086:2468 prefixlen 64 scopeid 0x20 ether 00:0c:29:18:f4:54 txqueuelen 1000 (Ethernet) RX packets 1153 bytes 117098 (114.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 827 bytes 96911 (94.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 648 bytes 52368 (51.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 648 bytes 52368 (51.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
注意 /etc/yum.repos.d/CentOS-base.repo 尽量剪切或删除到其他地方
[root@C7--01 ~]# yum -y install expect 已加载插件:fastestmirror Loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 expect.x86_64.0.5.45-14.el7_1 将被 安装 --> 解决依赖关系完成 依赖关系解决 .......... ....2、先写一个expect的脚本
[root@C7--01 ~]# vim user.expect #!/usr/bin/expect set ip [lindex $argv 0] #定义变量 set usr [lindex $argv 1] #定义变量 set pass [lindex $argv 2] #定义变量 set command [lindex $argv 3] #定义变量 if { $argc != 4 } { puts "错误:检查user.expect 文件 中的 ip usr pass command" ecit 1 } set timeout 30 spawn ssh $usr@$ip expect { "(yes/no)" {send "yesr"; exp_continue} "password:" {send "$passr"} } expect "$usr@*" {send "$commandr"} expect "$usr@*" {send "exitr"} expect eof3、写sshpass脚本
[root@C7--01 ~]# vim expect.sh #!/bin/bash ip=$(awk '{print }' usr_info) usr=$(awk '{print }' usr_info) pass=$(awk '{print }' usr_info) command= expect user.expect $ip $usr $pass $command5、测试
[root@C7--01 ~]# bash expect.sh ifconfig spawn ssh root@192.168.1.2 root@192.168.1.2's password: Last login: Tue Nov 2 05:47:14 2021 from 192.168.1.1 [root@C7--02 ~]# ifconfig ens33: flags=4163mtu 1500 inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::7627:d369:e086:2468 prefixlen 64 scopeid 0x20 ether 00:0c:29:18:f4:54 txqueuelen 1000 (Ethernet) RX packets 1403 bytes 148606 (145.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1078 bytes 133681 (130.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 715 bytes 57756 (56.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 715 bytes 57756 (56.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@C7--02 ~]# exit 登出 Connection to 192.168.1.2 closed. spawn_id: spawn id exp6 not open while executing "interact" (file "user.expect" line 22)
结论:不使用免登的情况下,可以使用sshpass进行免交互 或 expect进行免交互
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)