Ubuntu Server 24.04 LTS
以下是部分安装步骤,其他步骤请直接点击【Done】继续。
网络配置


配置ubuntu存档镜像

自定义存储布局

Ubuntu最佳分区方式:只需要两个分区 / 和 swap 。swap 一般设置为 2 倍或 1.5 倍的 RAM。
下面创建根分区(/),不创建 swap 分区:



配置用户名密码

跳过 Ubuntu Pro
Ubuntu Pro 是 Canonical 推出的 企业级付费支持和增强服务,在普通 Ubuntu 的基础上增加了安全更新、合规性工具和长期支持等功能,主要面向企业或专业用户。
个人用户 / 小团队:
- Ubuntu Pro 对个人用户有免费额度(通常支持 5 台机器免费激活)。
企业用户 / 大规模部署:
- 需要付费订阅,可享受官方 SLA 支持、更多机器数量和附加安全服务。
开启ssh远程

常用的snap包

安装完成后重启
重启
删除安装介质
重启后,Ubuntu 会提示移除安装镜像。
具体操作:取消 虚拟机设置 中的设备 启动时连接,然后按 Enter。
安装中文环境
安装英文版ubuntu,在打开含有中文字符文件时会乱码,有需要给Ubuntu Server装中文环境
1、安装之前,执行 echo $LANG
屏幕显示:en_US.UTF-8
说明现在是英语环境,需要切换到中文环境。
2、安装中文语言包
apt-get update && apt-get install language-pack-zh-hans
3、vim /etc/default/locale
把原来英语 US 的都换成如下的内容,并且注意配置文件中不能有多余的空格 :
1 2 3 4 5 6 7 8 9 10 11 12
| LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_NUMERIC="zh_CN" LC_TIME="zh_CN" LC_MONETARY="zh_CN" LC_PAPER="zh_CN" LC_NAME="zh_CN" LC_ADDRESS="zh_CN" LC_TELEPHONE="zh_CN" LC_MEASUREMENT="zh_CN" LC_IDENTIFICATION="zh_CN" LC_ALL="zh_CN.UTF-8"
|
4、vim /etc/environment
原来有一行 PATH=.. 不要动这一行
另起一行,复制粘贴以下内容,并且注意配置文件中不能有多余的空格:
1 2 3 4 5 6 7 8 9 10 11 12
| LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_NUMERIC="zh_CN" LC_TIME="zh_CN" LC_MONETARY="zh_CN" LC_PAPER="zh_CN" LC_NAME="zh_CN" LC_ADDRESS="zh_CN" LC_TELEPHONE="zh_CN" LC_MEASUREMENT="zh_CN" LC_IDENTIFICATION="zh_CN" LC_ALL="zh_CN.UTF-8"
|
5、重启机器 reboot
CentOS-8.1.1911
以下是部分安装步骤,其他步骤可以根据实际需求自行选择。

软件选择

安装目标位置(自定义分区)



网络和主机名

root密码

安装完成后重启
重启
删除安装介质
重启完成后操作:取消 虚拟机设置 中的设备 启动时连接。
解锁root用户
1 2 3 4 5 6 7
| sudo passwd -S root # 查看 root 状态 sudo passwd -l root # -l → Locked(锁定用户) sudo passwd -u root # -u → unlock(解锁用户) sudo passwd -d root # 删除 root 的密码(删除 /etc/shadow 里的加密串) sudo passwd root # 设置root用户的密码
su root # 测试是否可以进入 root 用户
|
开启root用户远程登录
安装SSH
先检查是否安装
1 2
| dpkg -l | grep ssh rpm -qa | grep ssh
|
开放本机 SSH 服务,请安装服务端:
1 2
| apt install openssh-server dnf install openssh-server
|
连接远程主机,请安装客户端:
1 2
| apt install openssh-client dnf install openssh-client
|
查看SSH服务
1 2 3
| ps -ef | grep ssh systemctl status ssh # Ubuntu 上服务名是 ssh systemctl status sshd # CentOS 上服务名是 sshd
|
SSH配置文件
ssh 有两个主要的配置文件,它们的作用和针对的对象不同:
| 特性 |
ssh_config |
sshd_config |
| 角色 |
客户端配置 |
服务端配置 |
| 进程 |
ssh (当使用 ssh 远程连接时会看到该进程) |
sshd (SSH Daemon 是一个守护进程,它一直在监听连接请求) |
| 控制 |
客户端如何发起连接 |
服务器如何接受连接 |
| 位置 |
/etc/ssh/ssh_config 或 ~/.ssh/config |
通常是 /etc/ssh/sshd_config |
| 生效 |
立即生效(客户端读取) |
需要重启服务 (sshd) |
客户端配置手册:https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
服务端配置手册:https://manpages.debian.org/trixie/openssh-server/sshd_config.5.en.html
客户端常用配置项
| 配置项 |
作用 |
常用值/说明 |
Host |
定义一个别名或模式,其后的配置将对该别名生效。 |
别名如 myserver,模式如 * 或 192.168.1.*。 |
HostName |
远程主机的实际地址(IP 或域名)。 |
如果与 Host 别名不同时才需要设置。 |
User |
连接远程主机时默认使用的用户名。 |
省略则使用本地用户名。 |
Port |
远程主机的端口。 |
如果远程服务器端口不是默认的 22,则在此设置。 |
IdentityFile |
用于公钥认证的私钥文件路径。 |
例如 ~/.ssh/id_rsa。可以为不同主机指定不同的密钥。 |
ServerAliveInterval |
客户端向服务器发送“保活”消息的间隔时间(秒)。 |
设为 60 可防止本地网络闲置导致的连接中断。 |
ConnectTimeout |
SSH 连接建立的最大等待时间(秒)。 |
避免因网络问题导致长时间卡死。 |
ProxyCommand |
【高级】 通过执行一个外部命令来建立与远程服务器的连接。 |
例如:ProxyCommand ssh -p 22 -W %h:%p jumpbox。 常用于通过 SOCKS 代理或老版本跳板机。
-p 22:连接跳板机的port。
-W %h:%p:转发选项,告诉 SSH 客户端:建立连接后,请在远程主机上执行一个转发操作到 %h:%p。%h 是目标主机,%p 是目标端口。
jumpbox:连接的跳板机的IP |
ProxyJump |
【推荐】 指定一个或多个跳板机(Bastion Host)。 |
例如:ProxyJump jump.example.com。功能上取代了大部分 ProxyCommand 的跳板用途。 |
服务端常用配置项
| 配置项 |
作用 |
常用值/说明 |
Port |
指定 SSH 服务监听的端口。 |
默认为 22。为了安全,常改为其他端口(如 2222)。 |
ListenAddress |
指定 SSH 服务绑定的网络接口 IP。 |
默认为 0.0.0.0(所有接口)。可设为特定 IP 以限制访问。 |
PermitRootLogin |
是否允许 root 用户直接通过 SSH 登录。 |
推荐设为 no。应使用普通用户登录后再切换到 root(su 或 sudo)。 |
PasswordAuthentication |
是否允许使用密码进行身份验证。 |
推荐设为 no。当使用公钥认证时,禁用密码可以大大提高安全性。 |
PubkeyAuthentication |
是否允许使用 公钥 进行身份验证。 |
通常设为 yes。这是最安全的登录方式。 |
AllowUsers / DenyUsers |
明确允许或拒绝某些用户登录。 |
例如:AllowUsers user1 user2@192.168.1.10 |
MaxAuthTries |
每个连接允许的最大认证尝试次数。 |
默认为 6。较低的数值可以阻止暴力破解。 |
ClientAliveInterval |
服务器向客户端发送“保活”消息的间隔时间(秒)。 |
默认为 0(不发送)。设为 30 或 60 可防止连接因超时而被关闭。 |
允许Root用户远程登录
编辑服务端配置文件:vim /etc/ssh/sshd_config
找到并修改:
1 2 3 4
| #PermitRootLogin prohibit-password PermitRootLogin yes # 允许root用户登录
#PasswordAuthentication yes
|
重新加载配置:
1 2 3
| systemctl reload ssh # 仅重新加载配置,不中断现有会话 # 或 systemctl restart ssh # 重启服务,会断开现有会话
|
测试登录
从远程机器执行:
卸载无用的系统服务
1 2 3 4
| # 查看所有正在运行的服务 systemctl list-units --type=service --state=running # 查看开机启动的服务 systemctl list-unit-files --type=service --state=enabled
|
禁用swap分区
https://man.archlinux.org/man/swapoff
https://man.archlinux.org/man/swapon
临时禁用(立即生效,重启失效)
1 2 3 4
| cat /proc/swaps swapoff -a # 禁用 /proc/swaps 中的所有 swaps swapon --show free -h
|
永久禁用 Swap 自动挂载
1 2 3 4
| # 编辑 /etc/fstab 文件 vim /etc/fstab # 找到包含 swap 关键字的行,并注释掉。 #/swap.img none swap sw 0 0
|
删除Swap分区
略…
删除Swap文件(针对 Swap 文件用户)
1 2 3
| # 如果您的Swap不是一个分区,而是一个文件(例如 /swap.img),您还需要删除该文件。 # 如果Swap是一个分区,您也可以尝试删除它,但这可能需要更复杂的LVM 操作。 rm -rf /swap.img
|
换源
https://developer.aliyun.com/mirror/ubuntu
https://developer.aliyun.com/mirror/centos
ubuntu 查看源
1 2 3 4 5
| cat /etc/apt/sources.list # 主配置文件 cat /etc/apt/sources.list.d/ubuntu.sources # 主配置文件,24.04 之后 ll /etc/apt/sources.list.d/*.sources # 主配置文件+额外软件源(第三方 PPA、软件商提供的源) grep -rh "URIs:" /etc/apt/sources.list.d/*.sources # 查看已启用的软件源文件 apt-cache policy # 查看已配置的所有源(启用+禁用)
|
centos 查看源
1 2 3 4
| ll /etc/yum.repos.d/*.repo # 仓库配置文件 dnf repolist --help dnf repolist --enabled # 显示已经启用的仓库(默认) dnf repolist --all # 显示所有的软件仓库(启用+禁用)
|
更新和升级
ubuntu
1 2 3 4 5 6 7 8 9 10 11 12
| apt-get update # 从配置的软件源获取最新的软件包列表信息(元数据),更新本地的软件包索引和缓存。
apt-get upgrade # 只更新已安装的软件包。会安装新的依赖包。如果升级某个包需要移除其他已安装的包,会跳过升级,避免破坏现有系统环境。 apt-get dist-upgrade # 升级时智能处理依赖关系。会安装新的依赖包、移除不再需要/冲突的包、更换核心软件包。用于跨版本升级或内核升级。
apt-get autoclean # 清除旧的已安装的包缓存文件 apt-get autoremove --purge # 移除不再需要的软件包及其配置文件。--purge 参数的作用是同时删除残留配置文件 apt-get clean # 清除所有已下载的包缓存文件
# apt 选项 --purge:可和 remove、autoremove 等组合,用于卸载软件并删除残留配置文件 # apt 子命令 purge:卸载软件并删除残留配置文件 apt purge pkg 等价于 apt remove --purge pkg
|
centos
1 2 3 4 5 6 7 8 9
| dnf makecache # 下载软件包仓库中的软件包列表和其他元数据到本地缓存,以便快速查找和安装软件。是一个准备操作
dnf check-upgrade # 查询系统已安装的软件包在仓库中是否有新版本。不下载、不安装,只显示更新信息。 dnf -y update # 更新系统中已经安装的软件包到可用的最新版本。默认只升级已经安装的软件,不会删除任何包。请使用 upgrade。 dnf -y upgrade # 与 update 不同的是,它会处理包依赖变化,有时会自动移除不需要的旧包。“更彻底的更新”。推荐!!!
dnf clean packages # 删除所有缓存的软件包文件(通常是 .rpm 文件)。 dnf clean metadata # 删除所有仓库的元数据文件(XML 格式,包含软件包列表、版本、依赖关系等信息)。 dnf clean all # 清理所有缓存文件,包括软件包、元数据 等等。
|
发行版
/etc/*-release 文件,它们用来 识别和描述操作系统发行版信息。
1 2
| find /etc | grep -E ".*-release" cat /etc/os-release # 现代 Linux 统一标准文件(systemd 之后几乎都有)
|
内核
1 2 3 4
| # 查看当前使用的内核版本 uname -r # 仅显示内核版本号(最常用)。 uname -a # 显示所有内核信息,包括内核版本、操作系统、主机名、架构等。 cat /proc/version # 这个文件记录了 Linux 内核的版本、用于编译内核的 gcc 的版本、内核编译的时间,以及内核编译者的用户名。
|
内核清理
ubuntu
1 2 3 4 5 6 7 8
| # 查看系统已安装的内核 dpkg -l | grep linux-image dpkg --get-selections | grep linux-image
# 删除旧内核 apt-get autoremove --purge # 系统一般会保留 2~3 个旧内核以防万一 # 手动删除 apt-get purge linux-image-6.8.0-45-generic linux-headers-6.8.0-45-generic
|
centos
1 2 3 4 5 6 7 8 9
| # 查询系统已安装的内核 rpm -qa | grep kernel dnf list installed | grep kernel
# 删除旧内核 dnf autoremove dnf remove --oldinstallonly # 一键删除旧内核 # 手动删除 dnf remove kernel-modules-core-5.14.0-522.el9.x86_64 kernel-core-5.14.0-522.el9.x86_64
|
网关、IP、DNS
1 2 3 4 5 6 7 8 9
| ip route # 查看网关地址 ip addr show # 显示系统中所有网络接口的IP地址和相关配置信息,包括MAC地址、接口状态和网络配置。
# resolvectl 是一个在较新的Linux系统中用于管理和查询系统DNS解析配置的命令行工具,它是 systemd-resolved 服务的一部分。 resolvectl status # 显示每个网络接口(网卡)的详细配置。全面状态 resolvectl dns # 是 resolvectl status 输出内容的子集。聚焦DNS服务器 resolvectl dns <interface> <DNS server> # 为指定的网络接口(例如 ens33)设置静态DNS 服务器地址(例如 8.8.8.8) resolvectl query www.baidu.com # 执行DNS查询,获取百度的IP地址,它会报告查询使用的协议和网络接口。 resolvectl flush-caches # 清除DNS缓存。当DNS记录发生变化时,使用此命令清楚本地DNS缓存,强制系统重新查询DNS服务器。
|
从DHCP改为固定IP
使用 ip addr 命令查看您的网络接口名称(例如 eth0 或 ens33)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| root@localhost:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:7d:6c:a0 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.0.102/24 metric 100 brd 192.168.0.255 scope global dynamic ens33 valid_lft 6189sec preferred_lft 6189sec inet6 fe80::20c:29ff:fe7d:6ca0/64 scope link valid_lft forever preferred_lft forever root@localhost:~# root@localhost:~# ls /etc/netplan 50-cloud-init.yaml
|
备份原配置 sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
编辑 Netplan 配置文件 sudo vim /etc/netplan/50-cloud-init.yaml 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 保持缩进正确:Netplan 使用 YAML 格式,缩进必须用空格,不能用 Tab network: version: 2 ethernets: ens33: # 网卡名称 dhcp4: no addresses: - "192.168.0.7/24" # /24 是CIDR表示法,表示子网掩码,也就是该IP所在网络的大小。将IPv4转换为32位整数值,前24位是网络号,剩下的8位是主机号。 routes: - to: "default" # default 是 0.0.0.0/0 的简写,表示 IPv4 默认路由,“匹配所有目的地址的流量”,即所有未匹配到其他路由的包都走这里” via: "192.168.0.101" # 查看网关 ping tplogin.cn metric: 100 # 路由优先级,数字越小优先级越高。如果系统存在多条默认路由,内核会根据 metric 选择哪条路由发送流量。默认写 100 就可以,一般不需要改动,除非你有 多网卡 / 多路由策略。 nameservers: addresses: - 114.114.114.114 - 114.114.115.115 search: [] # 默认DNS搜索域
|
保存文件后执行
1 2 3 4
| # 系统会应用新的网络设置,可通过 ip addr 或 ping -c 4 www.runoob.com 测试网络是否可用 netplan apply # 如果 apply 出错,请重启网络服务 systemctl restart systemd-networkd
|
修改hostname
主机名是用于标识网络上设备的标签,在同一网络上,你不应有两台或更多台具有相同主机名的计算机。
hostnamectl
hostnamectl 是 systemd 系统和服务管理器套件的一部分,用于查询和修改系统主机名。
Linux 系统通常涉及三种不同类型的主机名,hostnamectl 可以分别或同时进行管理:
- 静态主机名 (Static hostname): 这是保存在配置文件(通常是
/etc/hostname)中的标准主机名。它在系统启动时被初始化。永久的。
- 瞬态主机名 (Transient hostname): 由内核在运行时维护的主机名。DHCP 客户端、云平台(比如 OpenStack、AWS)分配主机名时常用它。临时的,重启失效。默认与静态主机名相同。
- “美观”主机名 (Pretty hostname): 一个更友好、供人类阅读的主机名,可以包含空格和特殊字符(例如:”My Laptop”)。保存在
/etc/machine-info 。
你可以使用 --static、--transient 或 --pretty 选项来单独查询或设置这些主机名。
1 2 3 4 5 6 7
| hostnamectl --help hostnamectl status # 查看系统主机名
hostnamectl set-hostname halbin-dev-zhaolq.halbin.mars.com # 会同时更新 静态主机名 和 瞬态主机名 hostnamectl set-hostname halbin-dev-zhaolq.halbin.mars.com --static # 静态主机名,永久的 hostnamectl set-hostname halbin-dev-zhaolq.halbin.mars.com --transient # 瞬态主机名,临时的,重启失效 reboot
|
hostname 是一个传统的命令行工具,属于 inetutils 或 net-tools 包。它修改的是 瞬态主机名。
1 2
| hostname # 查看系统主机名 hostname halbin-dev-zhaolq.halbin.mars.com # 瞬态主机名,临时的,重启失效
|
修改配置文件(老方法)
1 2 3
| cat /etc/hostname cat /etc/hosts reboot
|
防火墙
192.168.0.0/24:表示一个包含 256 个地址(从 192.168.0.0 到 192.168.0.255)的子网,其中 192.168.0.0 是网络地址,192.168.0.255 是广播地址,192.168.0.1 到 192.168.0.254 是可分配的设备 IP 地址。
192.168.0.1/24:表示子网 192.168.0.0/24 中的第一个有效 IP 地址,通常被分配给网关或路由器。
Ubuntu
在 Ubuntu 系统中,最常用和推荐的防火墙管理工具是 UFW (Uncomplicated Firewall)。
UFW 是一个对标准 Linux 防火墙工具 iptables 进行封装的前端工具,它大大简化了配置规则的复杂性,让用户可以轻松管理网络连接。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #************************************ UFW 状态检查与管理 ufw status # 查看 UFW 的当前状态(active 或 inactive)和已配置的规则。 ufw status verbose # 显示更详细的信息,包括默认策略和日志级别。 ufw enable # 启用 UFW,系统启动时会自动运行。注意:在启用前,请确保您已允许 SSH 端口,以防失去远程连接。 ufw disable # 完全禁用 UFW。 ufw reset # 清除所有规则,将默认策略设置为拒绝 (deny),并将状态设置为禁用 (inactive)。谨慎使用!
#************************************ 配置默认策略 ufw default deny incoming # 拒绝所有传入的连接(入站规则)。服务器和安全桌面的标准配置。这意味着除了您明确允许的端口(如 SSH、HTTP、HTTPS)外,所有外部或内部尝试连接您的机器的请求都会被拒绝。 ufw default allow incoming ufw default deny outgoing # 拒绝所有传出的连接(出站规则)。严格安全环境或特定应用服务器。这会阻止您的机器主动发起任何网络连接,除非您明确允许(例如,允许您的服务器连接到外部 DNS 或更新服务器)。这通常会使日常桌面使用变得困难。 ufw default allow outgoing # 允许所有传出的连接(出站规则)。服务器和安全桌面的标准配置。
#************************************ 添加允许(Allow)规则(拒绝请使用deny) # 基于 服务名、端口号、协议 来允许流量通过。 ufw allow ssh # 按服务名。允许 SSH 连接(自动解析为 TCP 端口 22)。 ufw allow 80 # 按端口号。允许所有协议(TCP/UDP)的 80 端口(HTTP)流量。 ufw allow http # 允许 80/tcp ufw allow https # 允许 443/tcp ufw allow 443/tcp # 按端口和协议。仅允许 TCP 协议的 443 端口(HTTPS)流量。 ufw allow 6000:6007/udp # 按端口范围。允许 6000 到 6007 之间的 UDP 端口。 ufw allow from 192.168.0.0/24 # 特定子网。允许来自 192.168.0.0/24 子网的所有传入(Incoming)连接。 ufw allow from 192.168.0.100 # 特定IP地址。允许来自特定 IP 地址的所有流量。 ufw allow from 192.168.0.100 to any port 25 # IP和端口。仅允许该 IP 地址访问本机的 25 端口(SMTP)。
#************************************ 添加拒绝(Deny)和限制(Limit)规则 ufw deny 23 # 拒绝所有尝试连接到 23 端口(Telnet)的流量。 ufw limit ssh # 允许 SSH 连接,但在 30 秒内如果同一 IP 尝试连接超过 6 次,则阻止该 IP 地址。这是防止暴力破解的推荐做法。 ufw reject 143/tcp # 拒绝连接请求,但发送一个拒绝响应(如 ICMP port unreachable),而不是直接丢弃数据包(deny行为)。
#************************************ 删除规则 # 按规则内容删除 (推荐):直接在命令前加上 delete 关键字,内容与添加规则时完全相同。 ufw delete allow 80/tcp # 删除允许 80 端口的规则 # 按编号删除 (适用于规则多且复杂的情况) ufw status numbered # 先查看带有编号的规则列表 sudo ufw delete 2 # 然后使用编号删除
|
Centos
CentOS 7及更高版本默认使用 firewalld 作为防火墙管理工具,它采用**区域(Zone)**的概念来管理网络连接和接口的信任级别。
以下是使用 firewall-cmd 命令管理防火墙的一些常用操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #************************************ firewalld 服务管理 systemctl status firewalld # 检查 firewalld 服务是否正在运行。 systemctl start firewalld # 启动 firewalld 服务。 systemctl stop firewalld # 停止 firewalld 服务。 systemctl enable firewalld # 设置 firewalld 开机自启。 systemctl disable firewalld # 禁止 firewalld 开机自启。
#************************************ 常用防火墙配置命令 firewall-cmd --help # 查看帮助 firewall-cmd --version # 查看版本 firewall-cmd --get-default-zone # 查看当前默认的区域(通常是 public)。 firewall-cmd --get-active-zones # 查看区域信息 firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口所属区域信息 firewall-cmd --list-all # 查看默认区域的运行时所有规则(服务、端口等)。 firewall-cmd --zone=public --list-all # 查看 public 区域的所有运行时规则。 firewall-cmd --reload # 应用永久配置,使更改立即生效,且不中断现有连接。
#************************************ 区域(Zone)概念 # 区域是 firewalld 的核心概念,用于根据网络环境定义不同的信任级别: # 区域名称 信任级别 默认行为 # trusted(信任) 最高 允许所有网络连接。 # home(家庭) 中高 信任网络上的大多数计算机,允许少量入站连接。 # work(工作) 中 信任工作环境中的计算机,允许少量入站连接。 # public(公共) 低 默认区域,不信任网络上的其他计算机,只接受选定的入站连接(例如您手动开放的服务)。 # drop(丢弃) 最低 丢弃所有入站数据包,不回复任何信息,只允许出站连接。 firewall-cmd --set-default-zone=public # 修改默认区域
#************************************ 开放/关闭端口或服务,默认情况在 public 区域进行配置 # firewalld 的配置分为 运行时(runtime)和永久(permanent) 两种。 # 运行时配置立即生效,但在服务重启或系统重启后会丢失。 # 永久配置需要使用 --permanent 标志,并且需要重新加载防火墙才能生效。!!!!!! firewall-cmd --zone=public --add-service=ssh --permanent # 添加服务(永久生效) firewall-cmd --zone=public --remove-service=ssh --permanent # 关闭服务(永久生效) firewall-cmd --zone=public --list-ports # 查看指定区域所有开放的端口号 firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放端口(永久生效) firewall-cmd --zone=public --remove-port=80/tcp --permanent # 关闭端口(永久生效) firewall-cmd --zone=public --add-port=18881:65534/tcp --permanent # 开放指定范围的端口号
#************************************ 紧急模式 # 紧急模式是一个极端的安全措施,用于在系统检测到攻击或严重威胁时,立即丢弃(drop)所有网络数据包。 firewall-cmd --panic-on # 开启紧急模式。立即丢弃所有传入和传出的网络数据包。通常在系统遭受拒绝服务(DoS)攻击或检测到严重入侵企图时使用,以完全隔离服务器。 firewall-cmd --panic-off # 关闭紧急模式。停止丢弃所有数据包,恢复到正常运行时的防火墙规则。在安全威胁解除后,用于恢复正常的网络连接。 firewall-cmd --query-panic # 查询紧急模式状态。检查 firewalld 当前是否处于紧急模式。返回 yes 或 no。
|
Git环境变量
参考官网,编译安装
1 2 3 4 5
| grep -qxF 'export PATH=/data/local/git/bin:$PATH' /etc/profile || \ echo 'export PATH=/data/local/git/bin:$PATH' >> /etc/profile
source /etc/profile git -v
|
JDK环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 若存在 JAVA_HOME 行就替换,不存在就添加 grep -q "^export JAVA_HOME=" /etc/profile \ && sed -i 's|^export JAVA_HOME=.*|export JAVA_HOME=/data/local/java/jdk-17.0.14+7|' /etc/profile \ || echo 'export JAVA_HOME=/data/local/java/jdk-17.0.14+7' >> /etc/profile
# -q: 找到匹配项后不会向标准输出打印任何内容。 # -x: 强制仅匹配整行。这意味着模式必须匹配从行首到行尾的全部内容,该行的前后不会有任何其他内容。 # -F: 确保搜索模式中的所有字符(特别是 $、/、: 等)都按字面意思匹配,而不是被误认为是正则表达式的特殊含义。 grep -qxF 'export PATH=$JAVA_HOME/bin:$PATH' /etc/profile || \ echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile java -version
|
Maven环境变量
1 2 3 4 5
| grep -qxF 'export PATH=/data/local/apache-maven-3.9.11/bin:$PATH' /etc/profile || \ echo 'export PATH=/data/local/apache-maven-3.9.11/bin:$PATH' >> /etc/profile
source /etc/profile mvn -v
|
Gradle环境变量
https://gradle.org/install/
1 2 3 4 5
| grep -qxF 'export PATH=/data/local/gradle-7.6.6/bin:$PATH' /etc/profile || \ echo 'export PATH=/data/local/gradle-7.6.6/bin:$PATH' >> /etc/profile
source /etc/profile gradle -v
|
执行环境变量脚本
1 2 3 4 5 6 7
| grep -qxF 'source /data/local/env/ideps-env.sh' /etc/profile || \ echo 'source /data/local/env/ideps-env.sh' >> /etc/profile
grep -qxF '. /data/local/env/ideps-env.sh' /etc/profile || \ echo '. /data/local/env/ideps-env.sh' >> /etc/profile
source /etc/profile
|