SSH 远程服务

远程服务概念介绍

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

远程服务连接原理

客户端:发送建立连接通讯请求
服务端:回复密钥确认信息
客户端:进行密钥信息确认
服务端:将公钥信息进行发送传递
客户端:接受公钥进行保存,并发送确认信息 (当前用家目录下.shh目录 ~/.ssh/known_hosts)
服务端:发送密码验证信息
客户端:输入密码信息
数据连接建立完毕,后续可以传输数据(加密处理)

远程服务连接方式

基于密码方式远程连接
基于密钥方式远程连接
实现方式:
linux系统    --> linux系统 
1)管理端建立密钥对
    ssh-keygen -t rsa (密钥类型)
2)由管理端传输公钥信息
    ①   将公钥发送到受控端
            scp -rp /root/.ssh/id_ras.pub 172.16.1.7:/root/.ssh/
        受控端公钥文件权限更改
            chmod 600 id_ras.pub
        将文件进行改名
            mv id_ras.pub authorized_keys
    ② ssh-copy-id -i(指定分发的密钥) /root/.ssh./id_rsa.pub 172.16.1.7
3)进行远程连接测试
    ssh 10.0.0.7
    ssh 10.0.0.7 ip a s eth0

windos系统 --> linux系统
1)管理端建立密钥对
    打开xshell--工具--新建密钥向导
2)将公钥信息进行传输,将本地生成的公钥文件添加进linux系统中authorized_keys文件
3)修改连接会话设置
    以public key方式远程连接,并且加载密钥信息
如何批量基于密钥方式管理多台主机
批量分发公钥脚本:

解决问题:如何实现面交互
1)需要连接时输入yes信息        -o 参数 StrictHostKeyChecking=no
2)需要连接时输入密码信息        借助工具sshpass
    ① yum -y install sshpass    以免交互方式提供ssh连接密码信息
    ② sshpass -p123456 ssh 172.16.1.7
3)需要连接时输出端口信息
    ssh -p 加端口信息
for ip in {7,8,31,41}
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.1.$ip -o StrictHostKeyChecking=no &> /dev/null
if [ $? -eq 0 ]
then
        echo "$ip分发成功"
else
        echo "$ip分发失败"
fi

done
批量分发检查的脚本
#!/bin/bash
for ip in {7,8,31,41}
do
        ssh 172.16.1.$ip $1
done

远程服务配置文件

/etc/ssh/sshd_config
17P        Port 22     (注释状态为默认22端口)
19P        ListenAddress   默认监听地址  (允许什么网络通过哪个网卡进行连接)
                172.16.1.7 PS:监听地址一定是本地网卡上拥有的地址
39P        PermitRootLogin yes  是否允许root用户远程连接
64P        PermitEmptyPasswords no  是否允许空密码登录
65P     PasswordAuthentication yes  是否支持密码方式远程连接
79P        GSSAPI      no              是否关闭GSSAPI认证
115P    UseDNS      no              是否关闭DNS反向解析

远程入侵防范策略

1)    用密钥登录系统,不使用密码登录 VPN/堡垒机
2)    解决SSH安全问题
        a 防火墙封闭SSH,指定源IP限制  80  443
        b 开启SSH只监听本地内网IP (ListenAddress 172.16.1.61)
3)    尽量不给服务器外网IP
4)    最小化(软件安装-授权)
5)    给系统重要文件或命令做一个指纹
6)    重要文件上锁  chattr +i +a

远程传输数据方法

方法一:利用scp命令实现传输数据
scp -rp    -P端口 数据信息   地址信息:目标路径
方法二:利用sftp命令实现传输数据
    1)sftp + 主机信息
    2)get 目标文件的路径及文件名,cd切换目录,ls查看目录内容
      put 需上传的文件路径 + 需要保存到的目录   lcd切换本地目录,lls查看本地目录内容
     help获取帮助信息     quit退出