刘刚刚的个人博客

<linux就该这么学>第九章 使用ssh管理远程主机

创建时间:2021-06-27 23:22:14
更新时间:2021-06-27 23:22:14

本文主要介绍了网卡的配置方法,使用sshd进行远程主机管理,使用tmux管理会话。

配置网卡服务

redhat版本网卡名称
5/6eth0,eht1
7eno16777728
8ens160 ens192

配置网卡参数

可以使用以下两个命令进行网卡参数的配置:

# 方式1:图形化界面
nmtui

# 方式2:图形化界面
nm-connection-editor

# 方式3:
[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=97486c86-6d1e-4e99-9aa2-68d3172098b2
DEVICE=ens160
ONBOOT=yes     # 开机启动
HWADDR=00:0C:29:7D:27:BF
IPADDR=192.168.10.10  # ip地址
PREFIX=24 # 网关
IPV6_PRIVACY=no
[root@linuxprobe ~]# nmcli connection reload ens160
[root@linuxprobe ~]# nmcli connection up ens160

创建网络会话

RHEL系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用nmcli命令来管理NetworkManager服务程序。

网络会话的作用是将参数打包为模板,当切换到不同模板的时候,可以实现参数的快速变更。

# 添加一个网络会话
## type 指代ethernet  bluetooth  wifi 等
nmcli connection add con-name {会话名称} ifname {网卡名称} autoconnect {是否自动连接} type ethernet ip4 {ip及子网掩码} gw4 {网关}
# 查看网络信息和状态
[root@localhost ~]# nmcli connection show
NAME       UUID                                  TYPE      DEVICE 
Profile 1  674ce40e-8bc9-420e-874a-336e87a5acc0  ethernet  ens160 
virbr0     29e7ce2a-14a8-4422-aeb6-a155038fb768  bridge    virbr0 

# 添加名称为company的网络会话
[root@localhost ~]# nmcli connection add con-name company ifname ens160 autoconnect no type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1
Connection 'company' (9b4443af-76d6-480a-a57a-b39e0d36822d) successfully added.

# 添加名称为house的网络会话
[root@localhost ~]# nmcli connection add con-name house type ethernet ifname ens160
Connection 'house' (4cbc4e49-9a3b-4b50-be7b-ee5157211e01) successfully added.

[root@localhost ~]# nmcli connection show
NAME       UUID                                  TYPE      DEVICE 
Profile 1  674ce40e-8bc9-420e-874a-336e87a5acc0  ethernet  ens160 
virbr0     29e7ce2a-14a8-4422-aeb6-a155038fb768  bridge    virbr0 
company    9b4443af-76d6-480a-a57a-b39e0d36822d  ethernet  --     
house      4cbc4e49-9a3b-4b50-be7b-ee5157211e01  ethernet  --     

# 切换到company的网络会话
[root@localhost ~]# nmcli connection up company 

绑定两块网卡

使用多块网卡时,需要先创建一个bond网卡,然后让原来的网卡设备服务与bond网卡,原来的网卡不再有自己的ip等信息。

也可以使用 nm-connection-editor 来进行bond的设置,但是必须在root下运行,不能在非root的桌面显示。

创建bond网卡

[root@localhost ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"
Connection 'bond0' (3ce973ee-eccf-4cb8-b76b-c6a82b286db8) successfully added.

网卡绑定模式:

  • balance-rr :轮询模式,实现类似负载均衡的效果,让网卡的带宽更大
  • active-backup:主备模式,正常情况下一块网卡工作,当出现故障后进行切换。

向bond0添加从属网卡

# 向bond网卡添加从属网卡
nmcli connection add type ethernet slave-type bond con-name {从属网卡的名称(可自定义)} ifname {网卡} master {bond网卡的名称}



[root@localhost ~]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.128  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::387b:5385:6651:a978  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:9a:44:c8  txqueuelen 1000  (Ethernet)
        RX packets 626  bytes 65444 (63.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 168  bytes 19025 (18.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens224: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::7bc4:4363:29df:89ba  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:9a:44:d2  txqueuelen 1000  (Ethernet)
        RX packets 628  bytes 65827 (64.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 65  bytes 6544 (6.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
...

[root@localhost ~]# nmcli connection add type ethernet slave-type bond con-name  bond0-ens160 ifname ens160  master bond0
Connection 'bond0-ens160' (6cc2df00-45af-4cf6-a353-e046e171e42b) successfully added.
[root@localhost ~]# nmcli connection add type ethernet slave-type bond con-name  bond0-ens224 ifname ens224  master bond0
Connection 'bond0-ens224' (fcb4a495-09b5-4ec0-9ea0-a613d6b3094a) successfully added.

 配置bond网卡信息

可以在/etc/sysconfig/network-scripts文件夹下修改对应的文件,也可以使用命令

[root@localhost /]# nmcli connection modify bond0 ipv4.address 192.168.20.10/24
[root@localhost /]# nmcli connection modify bond0 ipv4.gateway 192.168.20.1
[root@localhost /]# nmcli connection modify bond0 ipv4.dns 192.168.20.1
[root@localhost /]# nmcli connection modify bond0 ipv4.dns-search linuxprobe.com
[root@localhost /]# nmcli connection modify bond0 ipv4.method manual

启动bond网卡

# 启动
[root@localhost /]# nmcli connection up bond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
# 查看状态
[root@localhost /]# nmcli device status
DEVICE      TYPE      STATE      CONNECTION 
ens224      ethernet  connected  Profile 1  
ens160      ethernet  connected  house      
bond0       bond      connected  bond0      
virbr0      bridge    connected  virbr0     
lo          loopback  unmanaged  --         
virbr0-nic  tun       unmanaged  --     

tip:

  1. 在设置的时候需要注意虚拟机的网络模式
  2. 在启动后,网卡大概需要等半分钟~1分钟的时间才能被ping通

远程控制服务

配置sshd服务

需要记住以下内容:

  1. linux中一切皆文件
  2. 要想配置服务就是修改服务的配置文件
  3. 如果想要配置能够生效,需要重启对应的服务
  4. 将服务加入启动项中,保证下次开机依然运行

在redhat中服务的主配置文件在 /etc/服务名称/服务名称.conf中,非主配置文件一般在/etc/服务名称 文件夹下。

sshd服务实现了ssh服务,其配置文件在/etc/ssh/sshd_config中,提供有两种安全验证的方法:

  1. 基于口令的验证:使用账号和密码来验证登录
  2. 基于密钥的验证:在本地生产密钥对,让后将密钥的公钥上传至服务器,并与服务器中的公钥进行比较。

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

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

使用口令进行登录

# 使用ssh连接
[root@localhost ~]# ssh 192.168.10.20
The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established.
ECDSA key fingerprint is SHA256:+52sip4C6BvWMa5Zf6tXk5qGfYO5U3BaxoYMVWJ9oGY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts.
root@192.168.10.20's password: 
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu Jun 24 16:05:13 2021 from 192.168.10.10
[root@localhost ~]# ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe58:cf5e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:58:cf:5e  txqueuelen 1000  (Ethernet)
        RX packets 2193  bytes 241831 (236.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 451  bytes 56851 (55.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
# 退出ssh连接
[root@localhost ~]# exit
logout
Connection to 192.168.10.20 closed.

使用密钥对进行登录:

# 生成密钥
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cBgRE/mR7ZLa/V4sYKnTMU3gXDtJKRNIXij57L+ZOao root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|      *B.=+.o.   |
|      +==+++.o   |
|      o=o+oo=    |
|       o* .+ .   |
|       +So* .    |
|      . o+.+ .   |
|        o.... o  |
|         .o+.o   |
|      E...=+.    |
+----[SHA256]-----+

# 上传密钥到想登陆的服务器
[root@localhost ~]# ssh-copy-id 192.168.10.20
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.20's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.10.20'"
and check to make sure that only the key(s) you wanted were added.

# 登录时不需要密码
[root@localhost ~]# ssh 192.168.10.20
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Fri Jun 25 14:08:58 2021 from 192.168.10.20
tip:

使用ssh-copy-id 上传公钥到服务器的时候,会记录到目标服务器的 ~/.ssh/authorized_key文件中。

远程传输命令

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

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

上传文件

# 命令格式
scp [参数] 本地文件 远程帐户@远程IP地址:远程目录

[root@localhost ~]# touch a.txt
# 上传成功后即可在远程看到
[root@localhost ~]# scp  a.txt root@192.168.10.20:~
a.txt                                                 100%    0     0.0KB/s   00:00    

下载文件

# 命令
scp [参数] 远程用户@远程IP地址:远程文件 本地目录

[root@localhost ~]# scp root@192.168.10.20:~/b.txt ./
b.txt                                                 100%    0     0.0KB/s   00:00    
[root@localhost ~]# ll b.txt
-rw-r--r--. 1 root root 0 Jun 25 15:05 b.txt

不间断会话服务

tmux有如下功能:

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

安装

dnf install tmux

使用

# 进入会话窗口
tmux

# 退出会话窗口
exit

# 创建一个会话窗口并指定名称
[root@localhost media]# tmux new -s backup

# 将会话隐藏到后台(在tmux的控制台中输入)
tmux detach
[detached (from session backup)]

# 查看后台的会话 
[root@localhost media]# tmux ls
backup: 1 windows (created Fri Jun 25 16:30:12 2021) [88x23]

# 恢复名称为backup的会话
[root@localhost media]# tmux attach -t backup

# 在实际工作中并不需要开一个会话再进行工作,可以直接使用会话执行命令,命令执行结束,会话即结束
tmux new "vim memo.txt"

image-20210625162615227

会话共享

image-20210625164225533

当两台客户端同事登陆一台服务器,然后使用tmux进入同一个会话时,即可实现会话共享的共功能

日志查看

RHEL8中的日志服务程序默认时rsyslog

常见的日志文件保存路径

文件路径及命令作用
/var/log/boot.log系统开机自检事件及引导过程等信息
/var/log/lastlog用户登录成功时间、终端名称及IP地址等信息
/var/log/btmp记录登录失败的时间、终端名称及IP地址等信息
/var/log/messages系统及各个服务的运行和报错信息
/var/log/secure系统安全相关的信息
/var/log/wtmp系统启动与关机等相关信息

journalctl命令中常用按键以及作用

参数作用
-k内核日志
-b启动日志
-u指定服务
-n指定条数
-p指定类型
-f实时刷新(追踪日志)
--since指定时间
--disk-usage占用空间

日志信息等级分类

日志等级说明介绍
emerg系统出现严重故障,内核崩溃等情况
alert应立即修复的故障,数据库损坏等情况
crit危险较高的故障,硬盘损坏导致程序运行失败的情况
err一般危险的故障,某个服务启动或运行失败的情况
warning警告信息,某个服务参数或功能错误的情况
notice一般无危险的故障,只是需要处理的情况
info通用性消息,给用户提示一些有用信息
debug调试程序所产生的信息
none没有优先级,不做日志记录
# 查看最后5条日志
[root@localhost ~]# journalctl -n 5 
-- Logs begin at Wed 2021-06-23 20:18:10 CST, end at Fri 2021-06-25 17:34:13 CST. --
Jun 25 17:34:13 localhost.localdomain dnf[8363]: Unable to read consumer identity
Jun 25 17:34:13 localhost.localdomain dnf[8363]: This system is not registered to Red H>
Jun 25 17:34:13 localhost.localdomain dnf[8363]: Failed determining last makecache time.
Jun 25 17:34:13 localhost.localdomain dnf[8363]: There are no enabled repos.
Jun 25 17:34:13 localhost.localdomain systemd[1]: Started dnf makecache.



# 实时刷新日志最新内容
[root@localhost ~]# journalctl -f

# 查看不同等级的日志
[root@localhost ~]# journalctl -p crit
-- Logs begin at Wed 2021-06-23 20:18:10 CST, end at Fri 2021-06-25 17:34:13 CST. --
Jun 23 20:18:10 localhost.localdomain kernel: Detected CPU family 6 model 142 stepping >
Jun 23 20:18:10 localhost.localdomain kernel: Warning: Intel Processor - this hardware >
Jun 23 20:18:15 localhost.localdomain smartd[883]: DEVICESCAN failed: glob(3) aborted m>
Jun 23 20:18:15 localhost.localdomain smartd[883]: In the system's table of devices NO >
lines 1-5/5 (END)


# 根据时间查询日志
[root@linuxprobe ~]# journalctl --since today
[root@linuxprobe ~]# journalctl --since "-1 hour"
[root@linuxprobe ~]# journalctl --since "12:00" --until "14:00"
[root@linuxprobe ~]# journalctl --since "2020-07-01" --until "2020-08-01"


# 根据服务名称查询日志
[root@localhost ~]# journalctl _SYSTEMD_UNIT=sshd.service
-- Logs begin at Wed 2021-06-23 20:18:10 CST, end at Fri 2021-06-25 17:34:13 CST. --
Jun 23 20:18:17 localhost.localdomain sshd[1008]: Server listening on 0.0.0.0 port 22.
Jun 23 20:18:17 localhost.localdomain sshd[1008]: Server listening on :: port 22.
[root@localhost ~]# 
我的名片

昵称:shuta

职业:后台开发(python、php)

邮箱:648949076@qq.com

站点信息

建站时间: 2020/2/19
网站程序: ANTD PRO VUE + TP6.0
晋ICP备18007778号