• 《Linux就该这么学》培训笔记_ch09_使用ssh服务管理远程主机


    《Linux就该这么学》培训笔记_ch09_使用ssh服务管理远程主机

    文章最后会post上书本的笔记照片。

    文章主要内容

    配置网络服务

    配置网卡的4种方法:

    1. 修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-enoXXXXXXXX,配置完重启网卡服务;
    2. nmtui(旧版UI界面)
    3. nm-connection-editor(新版UI界面)
    4. Linux系统右上角电脑图标,打开并做相应编辑。

    创建网络会话

    RHEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用nmcli命令来管理Network Manager服务。nmcli是一款基于命令行的网络配置工具,功能丰富,参数众多。

    RHEL7支持网络会话:将网卡配置文件保存成模版实现快速切换。该技术旨在不同的使用环境下实现网络配置信息的快速切换。

    用nmcli命令可以按照“connection add con-name type ifname”的格式来创建网络会话

    具体参数意义:

    • con-name:网络会话名称
    • type:网络类型
    • ifname:网卡名称
    • autoconnect :网络会话默认是否自动激活,yes是no否
    • ip4:ip地址及子网掩码
    • gw4:网关
    • add/delete:添加/删除
    • up/down:启用/禁用

    实例:创建一个指定ip地址和网关的网络回话company(第2行,要指明ip地址和网关)和一个自动获取ip地址的网络回话house(第3行,想从外部dhcp自动获得ip地址,不需要手动指定,因此部分参数无需配置)。

     1 nmcli connection show            #查看已有的网络会话,DEVICE一列有值的那行说明那个会话在启用
     2 nmcli connection add con-name company ifname eno16777728 autoconnect no type ethernet ip4 192.168.10.15/24 gw4 192.168.10.1
     3 nmcli connection add con-name house type ethernet ifname eno16777728
     4 nmcli connection show            #查到刚创建的会话也在这里头了
     5 nmcli connection up house        #启用网络会话house
     6 nmcli connection show            #可以看到名为house的网络会话DEVICE列有显示对应的网卡名称
     7 nmcli connection down house      #关闭网络会话house
     8 nmcli connection show            #可以看到此时所有网络回话DEVICE列均没有值,说明没有任何会话在启用状态
     9 nmcli connection delete house    #删除网络会话house
    10 nmcli connection show            #查看创建的所有网络会话,剩下原有的eno16777728和company

    绑定两块网卡

    网卡绑定技术:对2块以上网卡实施绑定技术,在正常工作中网卡会共同传输数据,网络传输速度更快;当其中一块网卡出现故障,另一块网卡会立即自动顶替,保证网络传输不间断。

    实例:按如下步骤对两块网卡实施网卡绑定技术

    1. 确保有2块以上网卡设备
    2. 配置网卡设备的绑定参数,这些原本独立的网卡设备要被配置成从属网卡(SLAVE,从属网卡不能有自己的ip地址信息),以支持网卡绑定。随后创建主网卡配置文件,编辑ip地址等网卡参数
    3. 让Linux内核支持网卡绑定驱动。常见网卡绑定驱动的模式:
      • mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
      • mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
      • mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。
    4. 重启网络服务后网卡绑定操作即完成
     1 cd /etc/sysconfig/network-scripts/    #切换到网卡配置文件所在目录
     2 vim ifcfg-eno16777728                 #修改网卡eno16777728配置参数
     3 TYPE=Ethernet                         #网卡类型为以太网
     4 BOOTPROTO=none                        #地址分配模式为默认
     5 DEVICE=eno16777728                    #网卡设备名称为eno16777728
     6 ONBOOT=yes                            #是否启用网卡(yes启用no禁用)
     7 USERCTL=no                            #不允许用户通过命令行控制
     8 MASTER=bond0                          #主网卡设备名称(与主网卡绑定)
     9 SLAVE=yes                             #是否为从属网卡(yes是no否)
    10 vim ifcfg-eno33554968 #修改网卡eno33554968配置参数(没有配置文件就创建) 11 TYPE=Ehternet 12 BOOTPROTO=none 13 DEVICE=eno33554968 14 ONBOOT=yes 15 USERCTL=no 16 MASTER=bond0 17 SLAVE=yes 18 vim ifcfg-bond0 #创建主网卡bond0的配置文件,编辑配置参数 19 TYPE=Ethernet 20 BOOTPROTO=none 21 DEVIVE=bond0 22 ONBOOT=yes 23 USERCTL=no 24 IPADDR=192.168.10.10 #ip地址 25 PREFIX=24 #子网掩码,相当于255.255.255.0 26 DNS=192.168.10.1 #DNS地址 27 NM_CONTROLLED=no #NM(Network Manager)让网卡保证能够运行并对网卡进行基本管理。网卡绑定是高级操作,必须让网卡不再受NM控制28 vim /etc/modprobe.d/bond.conf #创建一个用于网卡绑定的驱动文件,使绑定后的主网卡bond0支持绑定技术 29 alias bond0 bonding #让bond0网卡设备支持绑定技术 30 options bond0 miimon=100 mode=6 #定义网卡以mode6模式绑定,且出现故障时自动切换的时间为100毫秒 31 systemctl restart network #重启网卡服务

     用本机执行ping命令测试连通性,然后故意移除一块网卡设备,ping的测试一般来说只会丢一个数据包,ping测试继续连通,说明网卡绑定技术配置成功。

     请务必注意,网卡文件中的DEVICE属性和NAME属性是不一样的,此处必须使用DEVICE属性,否则会导致网卡重启失败(具体表现为,重启网卡服务失败后,执行journalctl -xe查看系统日志,报错关键词为Device does not seem to be present)! 

    远程控制服务

    配置sshd服务

    SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet来进行远程登录。但是因为它们以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中间人攻击,这轻则篡改传输的数据信息,重则直接抓取服务器的账户密码。

    想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,有两种安全验证的方法:

    • 基于口令的验证—用账户和密码来验证登录;
    • 基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。

    老刘四大金句:

    1. Linux中一切都是文件;
    2. 部署服务就是修改服务的配置文件;
    3. 要运行最新参数,就要重启对应的服务
    4. 将配置的服务加入到启动项中,保证重启后依然有效;

    一般来说,服务的配置文件的保存路径及命名:

    1. 主配置文件:/etc/服务名称/服务名称.conf
    2. 普通文件:/etc/服务名称

    sshd服务的配置信息保存在/etc/ssh/sshd_config文件中

    sshd服务配置文件中包含的参数以及作用:

    参数 作用
    Port 22 默认的sshd服务端口
    ListenAddress 0.0.0.0 设定sshd服务器监听的IP地址
    Protocol 2 SSH协议的版本号
    HostKey /tc/ssh/ssh_host_key SSH协议版本为1时,DES私钥存放的位置
    HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私钥存放的位置
    HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私钥存放的位置
    PermitRootLogin yes 设定是否允许root管理员直接登录
    StrictModes yes 当远程用户的私钥改变时直接拒绝连接
    MaxAuthTries 6 最大密码尝试次数
    MaxSessions 10 最大终端数
    PasswordAuthentication yes 是否允许密码验证
    PermitEmptyPasswords no 是否允许空密码登录(很不安全)

    RHEL7默认安装并启用了sshd服务。

    ssh命令:用于进行远程连接。格式:ssh [参数] 主机IP地址。

    实例:RHCSA考题!配置sshd服务,禁止以root管理员身份远程登录服务器

    1 ssh 192.168.10.10           #远程登录主机192.168.10.10,本机也可以用ssh登录本机
    2 exit                        #退出登录
    3 vim /etc/ssh/sshd_config    #修改sshd主配置文件
    4 48 PermitRootLogin no       #修改48行的参数为no,表示不允许root管理员远程登录
    5 systemctl restart sshd      #重启sshd服务
    6 systemctl enable sshd       #把sshd服务加入到开机启动项中
    7 ssh 192.168.10.10           #用root登录,提示Permission denied

    安全密钥验证

    加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本可以直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分。在传输数据前先使用公钥对数据加密处理,然后再行传送。只有掌握私钥的用户才能解密这段数据。黑客即便截获了数据,一般也很难将其破译为明文信息。大大提高信息安全性。

    在生产环境中使用密码进行口令验证终归存在着被暴力破解或嗅探截获的风险如果正确配置了密钥验证方式,sshd服务程序将更加安全

    配置ssh以密钥方式验证步骤:

    1. 在客户端主机(192.168.10.20)生成“密钥对”(生成公钥和私钥)。
    2. 在客户端中把生成的公钥传送给服务端(192.168.10.10)。
    3. 在服务端,修改sshd配置文件,使其只允许密钥验证,拒绝口令验证。修改后重启sshd服务。
    4. 在客户端远程登录服务器测试是否配置成功。
    1 ssh-keygen                      #客户端操作。生成“密钥对”(公钥和私钥)。会有3次确认,直接回车就行
    2 ssh-copy-id 192.168.10.10       #客户端操作。把生成的公钥文件传送给服务端。会提示是否继续连接,yes。还会提示要求输入服务端的root密码
    3 vim /etc/ssh/sshd_config        #服务端操作。修改ssh服务配置文件
    4 78 PasswordAuthentication no    #服务端操作。拒绝口令验证
    5 systemctl restart sshd          #服务端操作。重启sshd服务
    6 ssh 192.168.10.10               #客户端操作。尝试远程登录服务端主机

    远程传输命令

    scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令格式:scp [参数] 本地文件 远程帐户@远程IP地址:远程目录。

    • 上传:scp 文件名 对方主机:/目录
    • 下载:scp 对方主机:/目录/文件名 /本地目录

    scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。

     scp命令中可用的参数及作用

    参数 作用
    -v 显示详细的连接进度
    -P 指定远程主机的sshd端口号
    -r 递归,用于传送文件夹
    -6 使用IPv6协议

    在使用scp命令把文件从本地复制到远程主机时,首先需要以绝对路径的形式写清本地文件的存放位置。如果要传送整个文件夹内的所有数据,还需要额外添加参数-r进行递归操作。然后写上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证了。当前用户名称为root,而密码则为远程服务器的密码。如果想使用指定用户的身份进行验证,可使用用户名@主机地址的参数格式。最后需要在远程主机的IP地址后面添加冒号,并在后面写上要传送到远程主机的哪个文件夹中。只要参数正确并且成功验证了用户身份,即可开始传送工作。由于scp命令是基于SSH协议进行文件传送的,如果客户端和服务端设置好了密钥验证,则在传输文件时,并不需要账户和密码。

    实例:在客户端创建一个文本文件A,上传到服务端,再从服务端新建文本文件B,从客户端中把服务端的B下载下来。

    1 echo "ni ma bi" >> B.txt                               #服务端操作。新建一个文本文档B.txt
    2 echo "cao ni ma" >> A.txt                              #客户端操作。新建一个文本文档A.txt
    3 scp /root/Desktop/A.txt 192.168.10.10:/root/Desktop    #客户端操作。把文件A上传给服务端的/root/Desktop路径下
    4 scp 192.168.10.10:/root/Desktop/B.txt /etc             #客户端操作。把服务端的B文件下载到本机的/etc目录下

    不间断会话服务

    当与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断。

    如果正在使用命令来打包文件,或者正在使用脚本安装某个服务程序中途是绝对不能关闭在本地打开的终端窗口或断开网络链接的,甚至是网速的波动都有可能导致任务中断,否则只能重新进行远程链接并重新开始任务

    screen是一款能够实现多窗口远程控制的开源服务程序,是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用screen服务程序同时在多个远程会话中自由切换,能够做到实现如下功能:

    • 会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
    • 多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
    • 会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。

    安装screen程序(前提是配置好Yum仓库):yum install -y screen

    screen命令:用于管理远程会话。

    常用参数:

    • -S:创建会话窗口
    • -d:将指定会话进行离线处理
    • -r:恢复指定会话
    • -x:一次性恢复所有会话
    • -ls:显示当前已有会话
    • -wipe:把目前无法使用的会话删除

    管理远程会话

    1 screen -S backup             #创建会话backup
    2 screen -ls                   #查看已有会话,发现会话backup处于连接()状态
    3 exit                         #退出会话backup
    4 screen vim memo.txt          #在创建会话的同时执行编辑文件memo.txt的命令,命令执行完毕后screen会话也会自动结束
    5 heheda                       #写入文本内容
    6 screen -S linux              #创建会话linux
    7 tail -f /var/log/messages    #在会话linux里执行该命令,故意强行关闭会话窗口
    8 screen -ls                   #重新打开命令行窗口,查看已有会话,发现会话linux处于断开(Detached)状态
    9 screen -r linux              #恢复会话linux,可以发现刚刚关闭窗口导致中断的命令可以继续执行

    会话共享功能

    screen会话共享:当多个用户同时控制主机的时候,它可以把屏幕内容共享出来,每个用户都可以看到相同的内容。

    实例:客户端A(192.168.10.20)远程登录到服务端(192.168.10.10),创建一个screen会话,然后客户端B(192.168.10.30)远程登录到服务端,执行screen -x(获取远程会话)。两台客户端就可以看到相同内容。

    1 ssh 192.168.10.10    #客户端A操作。远程登录到服务端(192.168.10.10)
    2 screen -S test       #客户端A操作。创建一个screen会话
    3 ssh 192.168.10.10    #客户端B操作。远程登录到服务端
    4 screen -x            #客户端B操作。获取远程会话

    书本笔记

  • 相关阅读:
    Electron踩坑记录
    TypeScript实现设计模式——生成器模式
    在express中使用ES7装饰器构建路由
    微信小程序下载文件(非图片),并校验扩展名。
    防抖与节流
    yarn
    spark
    docker php-fpm中安装GD库
    thinkphp6 多应用路由遇坑记
    CentOS 7 开启SSH远程登录
  • 原文地址:https://www.cnblogs.com/kaminwu/p/10936218.html
Copyright © 2020-2023  润新知