slacr_

Just to record my life and thoughts.
笔记/编程/杂乱/极简

[Linux]使用ssh服务管理远程主机

Oct 15, 2023Linux4757 words in 32 min

配置网卡服务

配置网卡参数

nmtui 是 NetworkManager 文本用户界面(Text User Interface)的缩写。它是一个在终端中以交互方式配置网络连接的工具。通过 nmtui,可以查看、添加、编辑和删除网络连接配置,包括有线连接、Wi-Fi 连接、VPN 连接等。

1
nmtui

在RHEL 5、RHEL6系统及其他大多数早期的Linux系统中,网卡的名称一直都是eth0、eth1、eth2…;在RHEL7中则变成了类似于eno16777736、eno33554968这样的名字;而RHEL8系统最新的名称ens160、ens192等等诸如此类,所以经常丰富的运维老手光看网卡名称大致就能猜出系统版本了。

网络连接的配置文件在/etc/NetworkManager/system-connections/

当然也可以通过设置

在REHL9中 /etc/sysconfig/network-scripts/readme-ifcfg-rh.txt 打开这个readme, 提到旧的 ifcfg 格式配置文件的弃用和不再创建, 解释 NetworkManager 如何存储新的网络配置文件。 翻译过来大概是:

在以前,NetworkManager 使用 ifcfg 格式在 /etc/sysconfig/network-scripts/ 目录下存储网络配置文件。然而,ifcfg 格式已经被弃用。默认情况下,NetworkManager 不再创建新的 ifcfg 格式配置文件。
现在,NetworkManager 使用 keyfile 格式存储新的网络配置文件,这些文件以 INI 文件格式存储在 /etc/NetworkManager/system-connections/ 目录下。keyfile 格式的配置文件有许多好处,例如易于解析和生成。
每个 keyfile 格式的配置文件中的每个节对应于 NetworkManager 的一个设置名称,可以在 nm-settings(5) 和 nm-settings-keyfile(5) 手册页中找到。每个节中的键值对是手册页中列出的属性之一。
如果您仍在使用 ifcfg 格式的网络配置文件,请考虑将它们迁移到 keyfile 格式。要一次性迁移所有配置文件,可以使用以下命令:

1
nmcli connection migrate

这个命令将会把所有的 ifcfg 格式配置文件迁移到 keyfile 格式,并将它们存储在 /etc/NetworkManager/system-connections/ 目录下。
另外,如果只想迁移特定的配置文件,可以使用以下命令:

1
nmcli connection migrate <profile_name|UUID|D-Bus_path>

这个命令将会迁移指定的配置文件,并将其存储在 /etc/NetworkManager/system-connections/ 目录下。

创建网络会话

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

1
2
3
nmcli connection -h
nmcli connection show
nmcli connection show ens160

RHEL8系统支持网络会话功能,允许用户在多个配置文件中快速切换(非常类似于firewalld防火墙服务中的区域技术)。如果在公司网络中使用笔记本电脑时需要手动指定网络的IP地址,而回到家中则是使用DHCP自动分配IP地址。这就需要麻烦地频繁修改IP地址,但是使用了网络会话功能后一切就简单多了——只需在不同的使用环境中激活相应的网络会话,就可以实现网络配置信息的自动切换了。

con-name --> connection name

1
2
3
4
nmcli connection add con-name school ifname ens160 autoconnect no type ethernet ip4 192.168.134.128 gw4 192.168.134.2
nmcli connection add con-name house ifname ens160 type ethernet ifname ens160 # DHCP 不用填ip
nmcli connection up school
nmcli connection show

在网络这里也能切换

把VMware网络改成桥接模式看看能不能自动获取到我手机热点的局域网分配的内网IP

1
nmcli connection up house

跟连接手机热点的主机在同一网段.

1
nmcli connection delete house 

绑定两块网卡

nmtui和nmcli 都可以用于网卡配置, 一个是text-user-interface, 一个是command-line-interface. 网卡绑定的理论知识类似于前面学习的RAID硬盘组,我们需要对参与绑定的网卡设备逐个进行“初始设置”。这些原本独立的网卡设备此时需要被配置成为一块“从属”网卡,服务于“主”网卡,不应该再有自己的IP地址等信息。在进行了初始设置之后,它们就可以支持网卡绑定。

  • 创建bond 网卡
1
2
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"
nmcli connection show

这里使用的是balance-rr网卡绑定模式,r是round-robin的缩写,全称也叫轮循模式。round-robin的特点是会根据设备顺序依次传输数据包,提供负载均衡的效果,让带宽变得更大,一旦某个网卡故障马上切换到另外一台设备上,保证网络传输不被中断。而active-backup网卡绑定模式也比较常用,特点是平时只有一块网卡正常工作,另一个设备待命,一旦出现损坏时自动顶替上去,冗余能力比较强,因此也被叫做主备模式。

  • bond0添加从属网卡
1
2
nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens160 master bond0
nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens192 master bond0
  • 配置bond0 网卡信息, 启动
    我使用的是automatic, DHCP自动获取配置

1
2
3
4
5
6
7
8
9
10
# nmcli connection modify bond0 ipv4.addresses 192.168.147.211
# or nmtui
nmcli connection up bond0
nmcli connection device status
# 使用主机ping, 断开一个连接会自动切换
nmcli device disconnect ens192

nmcli connection delete bond0
nmcli connection delete bond0-port1
nmcli connection delete bond0-port2

远程控制服务

配置sshd 服务

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

sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:

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

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

在RHEL8系统中,已经默认安装并启用了sshd服务程序。接下来在客户端使用ssh命令进行远程连接服务器,其格式为“ssh [参数] 主机 IP地址”, 要退出登录则执行exit命令。第一次访问时需要输入yes来确认对方主机的指纹信息

在ssh配置中禁止使用root密码登录

1
2
3
4
5
6
7
8
9
10
vim /etc/ssh/sshd_config
# 取消这行注释, 禁止弱密码而改用公钥验证更安全
PermitRootLogin prohibit-password

systemctl restart sshd
# 停止并重启ssh 服务.
# 或者 systemctl reload sshd,
# 这个命令重新加载SSH服务的配置文件,而不会停止和重新启动整个服务, 通常用于在不中断已建立的连接的情况下应用配置更改。

systemctl enable sshd # 设置自启动

root密码登录失效

一般的服务程序并不会在配置文件修改之后立即获得最新的参数。如果想让新配置文件生效,则需要手动重启相应的服务程序。最好也将这个服务程序加入到开机启动项中,这样系统在下一次启动时,该服务程序便会自动运行,继续为用户提供服务。

windows ssh 工具: Xshell、Putty、SecureCRT、Secure Shell Client

安全密钥验证

采用RSA非对称加密算法, 公钥加密, 私钥解密.

1
2
3
4
5
6
# 在客户端生成密钥对
ssh-keygen
# 把客户端中生成的公钥传送至远程服务器
ssh-copy-id 192.168.128.128

ssh root@192.168.128.128
1
2
3
4
5
# 设置服务器只允许秘钥验证
vim /etc/ssh/sshd_config
...
PasswordAuthentication yes
systemctl reload sshd

远程传输命令

scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令,cp命令只能在本地硬盘中进行文件复制,而scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。其格式为:“scp [参数] 本地文件 远程帐户@远程IP地址 远程目录”
如果想把一些文件通过网络从一台主机传递到其他主机,这两台主机又恰巧是Linux系统,这时使用scp命令就可以轻松完成文件的传递了。

1
2
3
4
5
6
7
# 传输文件到远程终端
echo "test for scp" >> test.scp
scp /root/test/scp 192.169.128.128:/home

# 从远程终端获取文件
scp 192.168.128.128:/etc/redhat-release /root
cat < ./redhat-release

不间断会话服务

Terminal multiplexer是一款能够实现多窗口远程控制的开源服务程序,也叫终端复用器,简称Tmux。简单来说就是为了解决网异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用Tmux服务程序同时在多个远程会话中自由切换,能够做到实现如下功能:

  1. 会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
  2. 多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
  3. 会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
1
dnf install tmux
1
2
3
4
5
6
tmux new -s newsession  # 创建新的会话并指定会话名称, 直接使用tmux默认名称是序号0, 1, 2
tmux detach # 暂时退出会话, 进程未中断, 直接关闭终端该会话也不会消失

tmux ls
tmux attch -t newsession # 恢复会话
exit # 退出会话, 进程中断

在日常的生产环境中,其实并不是必须先创建会话,然后再开始工作。直接使用tmux命令执行要运行的命令,这样在命令中的一切操作也都会被记录下来,当命令执行结束后后台会话也会自动结束。

1
tmux -c 'echo "test" >> ./test.test'

管理多窗格

1
2
3
tmux split-window -v
tmux split-window -h

按下 ctrl-B-direct 能控制窗口大小

上Tmux服务为用户提供了以<Ctrl>+<b>同时按下相关的一系列快捷键。记住,是先同时按下<Ctrl>+<b>按键,然后松手后再按下后续按键,不是一起按下的。

会话共享功能

当多个用户同时控制主机的时候,它可以把屏幕内容共享出来,也就是说每个用户都能够看到相同的内容,还能一起同时操作。

先用一台客户端ssh连接到服务器, tmux创建一个会话, 然后再用另一个客户端ssh连接服务器进入同一个会话, 就可以实现会话共享.

检索日志信息

Linux系统拥有十分强大且灵活的日志系统,保存了几乎日常中所有的操作记录和服务运行状态,并且按照报错、警告、提示和其他等标注进行了分类,让运维管理员可以根据所需的信息进行检索,快速找出想要的信息,对于了解系统运行状态有着不错的帮助作用。
在最新版的RHEL8系统中日志服务程序默认是rsyslog,相比于此前的syslogd服务,实际上可以理解成是增强版本,更加注重日志的安全性和性能指标。不同的日志信息会被写入到不同的文件中,便于日后的检索,常见的日志文件如表所示:

从理论上讲,日志文件分为三种类型。第一种叫系统日志,主要是记录系统的运行情况和内核信息;第二种叫用户日志,主要记录用户的访问信息,包含用户名、终端名称、时间、来源和执行过的操作等等;第三种叫程序日志,一般稍微大一些的服务都会保存一份与其同名的日志文件,记录着服务运行过程中各种事件的信息,每个服务程序自己有独立的日志文件,但是格式相差的比较大。

journalctl命令用于检索和管理系统日志信息,英文全称为:“journal control”.

1
2
3
4
5
# 查看最后5条日志
journalctl -n 5

# 实时刷新日志最新内容, 相当于 tail -f /var/log/message
journalctl -f

在rsyslog服务程序中,日志根据重要程度被分为了九个等级

1
2
# 查看critial 级别的系统日志
journalctl -p crit
1
2
3
4
5
6
7
8
9
10
journalctl --since today

journalctl --since '-1 hour'

journalctl --since '14:00' --until '18:00'

journalctl --since '2023-10-16' --until '2023-10-17'

# 查看某项服务的日志信息, 服务名称后面.service 是标准服务名称的写法
journalctl _SYSTEMD_UNIT=sshd.service

其他

关于windows防火墙

操作的时候发现我主机能正常ping通虚拟机, 而虚拟机ping不通主机IP而能ping通同网段的IP. 虚拟机的防火墙策略是没有任何阻挡的, 说明我的Windows防火墙拒绝了虚拟机的ICMP请求. 大概是为了防DDOS攻击吧.

只需要在window defender防火墙中添加一条允许虚拟机ICMPv4的规则就行了.

telnet 和 ssh

Telnet是一种基于文本的协议,用于在网络上远程登录到远程计算机并执行命令。它是一种早期的远程登录协议,通常用于在不安全的网络中进行远程管理或调试。通过使用Telnet,您可以通过命令行界面(CLI)连接到远程主机并执行命令,就像在本地计算机上一样。然而,由于Telnet是明文传输,不提供加密,因此它的使用已逐渐减少,并被更安全的协议如SSH所取代。

SSH(Secure Shell)是一种加密的网络协议,用于在网络上安全地进行远程登录和传输数据。SSH通过使用加密算法对通信进行加密,从而提供了更高的安全性。它允许您在远程计算机上以安全的方式执行命令,并在本地和远程系统之间传输文件。SSH还提供了身份验证机制,例如使用密码或公钥加密进行身份验证,以确保只有授权用户可以访问远程系统。

关于守护进程(Daemon)

守护进程(Daemon)是在计算机系统后台运行的一种特殊进程。它通常在系统启动时启动,并一直运行,直到系统关闭或显式停止。
守护进程的主要特点是它们在后台运行,没有与用户交互的界面。它们通常不与终端或控制台连接,也不接收用户输入。相反,守护进程在系统级别提供服务或执行特定的任务,例如网络服务、服务器、后台作业、自动任务等。
守护进程的设计目的是在系统启动时自动启动,并在后台持续运行,而不需要用户的干预。它们通常以特权(root或系统管理员)身份运行,以便能够执行需要更高权限的任务。
守护进程在操作系统中发挥着重要的作用,它们可以提供各种服务,如网络服务(如Web服务器、FTP服务器)、数据库服务、定时任务(如计划任务)、日志记录等。它们通常以单独的进程形式运行,通过监听网络端口或接收系统事件来响应请求。

在Linux系统中,许多服务名称的后缀 “d” 表示 “daemon”,它用于标识运行在后台的系统服务。比如httpd, sshd, ftpd, ntpd. “Daemon” 是一个在Unix和类Unix系统中常见的术语,它指的是在系统启动时自动在后台运行的程序。这种命名约定有助于区分普通的用户程序和后台运行的系统服务。通过将守护进程的名称与普通用户程序区分开来,可以更清楚地了解哪些进程是系统任务,以及它们的作用。

参考

  1. Linux就该这么学
  2. [鸟哥linux基础学习篇4th]
  3. linux命令
  4. 开源许可证总览
  5. LSB标准
  6. 硬盘结构
  7. RHCSA学习
  8. RHEL订阅
  9. 如何在 RHEL 9 上创建本地 Yum/DNF 仓库
  10. VDO github地址
  11. RHEL9 VDO文档
  12. Fedora官方下载
  13. FedoraProject镜像
  • Author:

    slacr_

  • Copyright:

  • Published:

    October 15, 2023

  • Updated:

    October 15, 2023

Buy me a cup of coffee ☕.

1000000