美文网首页
远程连接

远程连接

作者: 肥四_F4 | 来源:发表于2022-12-07 22:34 被阅读0次

一、远程服务概念介绍

· 远程服务可以实现远程连接管理主机
· 远程服务可以实现远程下载传输数据
利用SSH telnet服务实现远程连接主机
SSH   :  加密传输数据方式(安全性更高,复杂性较高)  经过互联网连接  访问端口22  默认支持root用户远程连接
telnet:  明文传输数据方式(安全性更低,复杂性较低)  经过局域网连接  访问端口23  默认禁止root用户远程连接

二、远程服务连接原理

客户端:  发送建立连接通讯请求
服务端:  回复密钥确认信息
客户端:  进行密钥信息确认
服务端:  将公钥信息进行发送传递
客户端:  接收公钥进行保存, 并发送确认信息 (~/.ssh/known_hosts)
服务端:  发送密码验证信息  (加密处理)
客户端:  输入密码信息      (加密处理)
数据连接建立完毕
传输数据(加密处理)

三、远程服务连接方式

a 基于密码方式进行远程连接
b 基于密钥方式进行远程连接
  实现方式:
  linux系统    --> linux系统 
  第一个历程: 管理端建立密钥对
  ssh-keygen -t rsa
  第二个历程: 管理端传输公钥信息
  ssh-copy-id -i /root/.ssh/id_rsa.pub  10.0.0.7
  第三个历程: 进行远程连接测试
  ssh 10.0.0.7
  ssh 10.0.0.7 ip a s eth0

四、编写脚本

编写脚本思路
  如何批量基于密钥方式管理多台主机:
  管理主机 m01  10.0.0.61  管理   41  31  7   8 
  
  批量分发公钥脚本:
  解决问题: 如何实现免交互
  1) 需要连接时输入yes信息
     ssh 172.16.1.31 -o StrictHostKeyChecking=no

  2) 需要连接时输入密码信息
     yum install -y sshpass
     sshpass - noninteractive ssh password provider
               以免交互方式提供SSH连接密码信息
     sshpass -p654321 ssh 172.16.1.31
        
  3) 需要连接时输入端口信息  65535
     ssh 172.16.1.7 -p65535
脚本内容

基于端口和密码一致

vim /server/scripts/ip_list.txt
172.16.1.7
172.16.1.8
172.16.1.9
172.16.1.31
172.16.1.41


vim  /server/scripts/distribute_public_key.sh 
#!/bin/bash
for ip in $(cat /server/scripts/ip_list.txt)
do
    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_rsa.pub $ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ]
then
    echo  "to $ip distribute_key "
    echo  "public key distribute ok"
    echo  ""
 else
    echo  "to $ip distribute_key"
    echo  "public key distribute no"
    echo  ""
fi
done

vim /server/scripts/distribute_public_key_check.sh
#!/bin/bash
for ip in $(cat /server/scripts/ip_list.txt)
do
    ssh $ip $1
done

基于端口和密码不一致

在批量分发公钥信息时:
1) 如果受控端主机 密码信息不一致
2) 如果受控端主机 端口信息不一致
3) 如果受控端主机 用户信息不一致()
      
企业环境:
m01    root  654321  ssh服务端口22
web01  root  123123  ssh服务端口65531
web02  root  321321  ssh服务端口65532
nfs01  root  123456  ssh服务端口65533
backup root  654321  ssh服务端口65534

vim /server/scripts/ip_list2.txt 
172.16.1.7:123123:65531
172.16.1.8:321321:65532
172.16.1.31:123456:65533
172.16.1.41:654321:65534

vim /server/scripts/distribute_public_key_new.sh
#!/bin/bash
for host in $(cat /server/scripts/ip_list.txt)
do
  host_ip=$(echo $host|awk -F ":" '{print $1}')
  host_pass=$(echo $host|awk -F ":" '{print $2}')
  host_port=$(echo $host|awk -F ":" '{print $3}')
  sshpass -p$host_pass ssh-copy-id -i /root/.ssh/id_rsa.pub $host_ip -o StrictHostKeyChecking=no -p$host_port  &>/dev/null
  if [ $? -eq 0 ]
  then
     echo  "to $host_ip distribute_key "
     echo  "public key distribute ok"
     echo  ""
  else
     echo  "to $host_ip distribute_key"
     echo  "public key distribute no"
     echo  ""
  fi
done

相关文章

网友评论

      本文标题:远程连接

      本文链接:https://www.haomeiwen.com/subject/fthofdtx.html