欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

综合架构(远程服务)

程序员文章站 2022-04-23 23:50:32
...

一. 远程管理

1)远程连接概念介绍:
远程服务可以实现远程连接管理主机
远程服务可以实现远程下载传输数据

利用SSH  telnet服务实现远程连接
SSH		:加密传输数据方式(安全性更高,复杂性更高)   经过互联网连接   访问端口:22   默认支持root用户远程连接
telnet	:明文传输数据方式(安全性更低,复杂性更低)   经过局域网连接   访问端口:23   默认禁止root用户远程连接
2)远程连接连接原理:
客户端:发送建立连接通讯请求
服务端:回复**信息确认
客户端:进行**信息确认
服务端:将公钥信息进行发送传递
客户端:接收公钥进行保存, 并发送确认信息 (~/.ssh/known_hosts)
服务端: 发送密码验证信息  (加密处理)
服务端:输入密码信息    (加密处理)
数据连接建立完毕
传输数据(加密处理)
3)远程连接连接方式:
a. 基于密码方式远程连接:
步骤:
①:ssh+IP地址
②:输入用户名(主机名称)
③:输入密码(相应主机名称的密码)

例如:
①:ssh 10.0.0.8
②:root
③:oldboy123

图解:
综合架构(远程服务)
综合架构(远程服务)

b. 基于**方式远程连接:
1. linux系统    --> linux系统 
	第一个历程: 管理端建立**对
	ssh-****** -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

	还有一些提前需要配合实现脚本的文件
	cat /server/scripts/ip_list.txt
	例如:
	172.16.1.7
	172.16.1.8
	172.16.1.31
	172.16.1.411)批量分发公钥脚本:
	# cat distribute_public_key.sh 
    #!/bin/bash
    for ip in $(cat /server/scripts/ip_list.txt)
    do
       sshpass -p654321 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

(2)批量分发验证脚本
	  #!/bin/bash
      for ip in $(cat /server/scripts/ip_list.txt)
      do
          ssh $ip $1
      done

2. windows系统(xshell)  --> linux系统 
      第一个历程: 管理端建立**对 
	  xshell工具---新建**向导  
	  第二个历程: 将公钥信息进行编辑
	  id_rsa_2048.pub  -信息编辑到-  linux主机authorized_keys
	  第三个历程: 修改连接会话设置
	  以pubic key方式连接  --- 加载**信息
==========================================================================
	  在批量分发公钥信息时:
	  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	  
	  
	  编写主机信息文件
	  cat /server/scripts/ip_list.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
	  
	  编写批量分发公钥文件
	  #!/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
==========================================================================
4)远程服务配置文件:
   /etc/ssh/sshd_config
17  #Port 65531                 --- 指定服务启动端口信息  (默认注释状态 默认端口为22)	
19  #ListenAddress 0.0.0.0      --- 允许哪个网络通过哪个网卡进行连接    ******
	PS: 监听地址一定是本地网卡上拥有地址
20  #PermitRootLogin yes        --- 是否允许root用户远程连接
21  #PermitEmptyPasswords no    --- 是否允许空密码登录
22  PasswordAuthentication yes  --- 是否支持使用密码方式远程连接
79  GSSAPIAuthentication no     --- 是否关闭GSSAPI认证方式
115 UseDNS no                   --- 是否开启DNS反向解析 
5)远程入侵方法策略:
1、用**登录,不用密码登陆   VPN/堡垒机
2、解决SSH安全问题
   a.防火墙封闭SSH,指定源IP限制    80  443
   b.开启SSH只监听本地内网IP(ListenAddress 172.16.1.61)。
3、尽量不给服务器外网IP
4、最小化(软件安装-授权)
5、给系统的重要文件或命令做一个指纹   /etc/profile  /etc/rc.local
6、重要文件锁上 chattr +i   +a

6) 远程传输数据方法
    方法一: 利用scp命令实现传输数据
	scp -rp  -P端口  数据信息   地址信息:/目标路径
    方法二: 利用sftp命令实现传输数据
    获取远程主机数据:
    sftp  主机地址
    cd 目录       --- 切换远程主机目录信息
    ls 文件       --- 查看远程主机数据信息
    get 路径/文件 --- 将重要文件信息下载

    	
    上传本地主机数据:
	lcd 目录      --- 本地主机切换目录
	lls 文件      --- 查看本地主机数据信息
	put 文件 路径 --- 将重要文件信息上传
7) 远程传输常见问题
利用while read line 读取文件信息时, 循环突然中断
分析点01: 不用ssh命令时,循环是正确
分析点02: 只要ssh命令后,拥有标准输入,循环就正确
分析点03: 将循环方式进行改变,循环正确
分析点04: 将ssh命令放入后台执行, 循环就正确 

利用cat命令读取一个文件时, 会将所有信息放入到内存buffer中,
但是while read 读取buffer每行信息时, 正常是逐行读取
while read line  +  ssh  一下将buffer读取空

综合架构(远程服务)

相关标签: 远程连接