<linux就该这么学>第九章 使用ssh管理远程主机
本文主要介绍了网卡的配置方法,使用sshd进行远程主机管理,使用tmux管理会话。
配置网卡服务
配置网卡参数
可以使用以下两个命令进行网卡参数的配置:
# 方式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分钟的时间才能被ping通
远程控制服务
配置sshd服务
需要记住以下内容:
linux中一切皆文件
要想配置服务就是修改服务的配置文件
如果想要配置能够生效,需要重启对应的服务
将服务加入启动项中,保证下次开机依然运行
在redhat中服务的主配置文件在 /etc/服务名称/服务名称.conf
中,非主配置文件一般在/etc/服务名称
文件夹下。
sshd服务实现了ssh服务,其配置文件在/etc/ssh/sshd_config
中,提供有两种安全验证的方法:
基于口令的验证:使用账号和密码来验证登录
基于密钥的验证:在本地生产密钥对,让后将密钥的公钥上传至服务器,并与服务器中的公钥进行比较。
sshd服务配置文件中包含的参数以及作用
使用口令进行登录
# 使用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命令中可用的参数及作用
上传文件
# 命令格式
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有如下功能:
会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
安装
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"
会话共享
当两台客户端同事登陆一台服务器,然后使用tmux进入同一个会话时,即可实现会话共享的共功能
日志查看
RHEL8中的日志服务程序默认时rsyslog
常见的日志文件保存路径
journalctl命令中常用按键以及作用
日志信息等级分类
# 查看最后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 ~]#