下载:ubuntu-24.04.2-live-server-amd64.iso
一、安装,CLI步骤:官方、网友
- 没有中文,所以第一步选择语言,默认英语回车
- 键盘布局,默认回车
- 选择最小安装
- 配置网络,默认自动开启DHCP,可手工改为静态
- Subnet:格式为 x.x.x.0/24 /24代表255.255.255.0
- Name Server:就是DNS
- 选择代理,回车
- 选择镜像,改为阿里云 http://mirrors.aliyun.com/ubuntu/
- 磁盘分区,默认是全盘,默认会启用逻辑卷组(LVM group,默认容量一半未使用;在虚拟机中可以考虑关闭,dg的按文件克隆磁盘方式,不支持lvm),且确认。
- 根目录/ 在lv上,只有vg的一半,可以手工调整lv使用所有vg空间;或才安装后调整。
- 另外,EFI 和 Boot 分区空间比较大,实际上efi有100M够了,boot有500够了。这二个分区安装后,调整大小有点麻烦。
- 输入机器名,用户名 pick a name,还有密码
- 选中安装 openssh-server,可以看到默认支持密码认证
- 选择预环境,看中哪个勾哪个,都最小安装了,直接回车
- 系统开始安装,下面出现 Reboot Now,表示可以重启了,后还有一次提示弹出CDROM,回车就是。
- 重启后,就安装完成了,出现登记界面。
二、配置,注意:在ubuntu里是ssh,不是sshd。
sudo systemctl poweroff|reboot #立即关机或重启 sudo shutdown -P|-r 0
sudo passwd root #设置root账户的密码网卡配置
ip addr show1: 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:d7:7a:74 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.138.10/24 brd 192.168.138.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed7:7a74/64 scope link
valid_lft forever preferred_lft forever
上面的网卡名为ens33,网址与掩码是192.168.138.10/24
ip routedefault via 192.168.138.2 dev ens33 proto static
192.168.138.0/24 dev ens33 proto kernel scope link src 192.168.138.10
上面网关为192.168.138.2
sudo vi /etc/netplan/50-cloud-init.yaml
DHCP
network:
version: 2
ethernets:
ens33:
dhcp4: true静态IPv4
network:
version: 2
ethernets:
ens33:
addresses:
- "192.168.138.10/24"
nameservers:
addresses:
- 191.168.138.2
search: []
routes:
- to: "default"
via: "192.168.138.2"DNS
resolvectl status # 查看本机配置的DNS服务器信息
临时DNS配置 /etc/resolv.conf
nameserver 172.0.0.53
- 修改后立即生效,但关机后被废弃。
- 一行一条 nameserver记录,按顺序来查询,上一条失败,才会使用下一条。
lrwxrwxrwx 1 root root 39 Sep 21 19:20 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
永久DNS配置 /etc/systemd/resolved.conf
[Resolve]
# 指定 DNS 服务器,以空白分隔,支持 IPv4 或 IPv6 位置
DNS=192.168.138.2 x.x.x.x
# 备用 DNS 服务器
FallbackDNS=8.8.8.8 x.x.x.x
为什么搞这么复杂?实际上systemd-resolved服务生成二个运行中文件:
-
/run/systemd/resolve/stub-resolv.conf:由systemd-resolved服务开机会自动生成,配置使用DNS stub解析器。应用程序的解析:(只需要向127.0.0.53查询)由stub解析器转发给systemd-resolved,避免了紧耦合。 /run/systemd/resolve/resolv.conf:由systemd-resolved服务开机会自动生成(restart也会刷新),其内容由/etc/systemd/resolved.conf配置文件提供。
总结:
- 永久配置改
/etc/systemd/resolved.conf,临时配置改/etc/resolv.conf。 - 避免紧耦合,就保持默认链接的
/etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf不变。 - 不想看到 172.0.0.53,就改链接为
/etc/resolv.conf -> /run/systemd/resolve/resolv.conf;但又来了个169.254.169.254,就是另外一个故事了。
mv /etc/resolv.conf /etc/resolv.conf.stub
ln -s /run/systemd/resolve/resolv.conf /etc/
DNS具体值:最佳使用本IDC中心的DNS,因为响应时间更短。
| 厂商 | IPv4 主力DNS | IPv4 备用DNS |
|---|---|---|
| 阿里云DNS | 223.5.5.5 | 223.6.6.6 |
| 腾讯DNSPod | 119.29.29.29 | 182.254.116.116 |
| 114 DNS | 114.114.114.114 | 114.114.115.115 |
| Google DNS | 8.8.8.8 | 8.8.4.4 |
| Cloudflare DNS | 1.1.1.1 | 1.0.0.1 |
| IBM Quad9 DNS | 9.9.9.9 | 149.112.112.112 |
配置生效
sudo netplan apply # 网卡配置应用
sudo systemctl restart systemd-resolved # 永久DNS配置应用,默认是开机自启动更换为阿里云的源
cat /etc/apt/sources.list # 确认是不是阿里云的源
cat /etc/apt/sources.list.d/ubuntu.sources # 替换默认的 http://archive.ubuntu.com/ 为 https://mirrors.aliyun.com/安装基本工具,比如:ping、vim
sudo apt update # 先更新下资源列表
# ping 命令是 iputils 包的一部分,nslookup 在 dnsutils 包中,但有自带的 host y.z 或 dig y.z 替代。
sudo apt install iputils-ping vim 7zip tree lsof net-tools telnet traceroute dnsutils报错提示:E: Unable to locate package vim,是没有先运行apt update。
vim配置:sudo vim /etc/vim/vimrc
- 在最后增加行
set number,注意路径与centos/rocky是不一样的; - 另外,vim的语法高亮,在黑底下显示效果很费眼睛,将以下两行注释移除就可以了。
set background=dark
filetype plugin indent on
启用sshd
sudo systemctl status ssh #查看sshd状态
sudo apt install openssh-server #没有安装,就安装openssh-server,一般默认安装了。
sudo systemctl enable ssh #开机自动启动
sudo systemctl start ssh #现在启动sshd,重启使用 restart;此支持密码登陆。
sudo systemctl status uwf #查看防火墙状态,默认是关闭状态。
sudo ufw allow 22/tcp #在防火墙里开放ssh范了过往经验的错:在ubuntu里是ssh,不是sshd,改为 systemctl start/enable ssh 就可以了。
$ sudo systemctl start sshd
Failed to start sshd.service: Unit sshd.service not found.
$ sudo systemctl enable sshd
Failed to enable unit: Unit file sshd.service does not exist.
ssh证书生成与rocky一样,只是默认证书文件名是id_ed25519 ;虚拟机增强与rocky一样。
ssh-keygen [-t rsa] # 连续三次回车,ssh1 只支持 rsa1,ssh2 支持所有的。会在~/.ssh目录里生成id_rsa(私钥)和id_rsa.pub(公钥)文件
mv ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys # 注意:使用PUTTYGEN.exe生成的公钥,会提示证书错误,因为被分行。
C:\>scp username@ip:~/.ssh/id_ed25519 d:\ # Host上,下载私密文件 scp、pscp,使用puttygen转换证书格式,再使用putty连接
rm -f ~/.ssh/id_rsa # 下载成功后,从服务器上将删除私钥
sudo vi /etc/ssh/sshd_config # vi查找 ?Pub 回车后,按n找下一个。Ctrl+G 显示当前光标所在行的%及总行数,再输入数字11回车,光标会向下移11行。 将光标移到第11行:11GPubkeyAuthentication yes # 开启证书登录
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 确认证书连接成功后,再关闭密码认证。
PermitEmptyPasswords no # 禁用空密码登录
sudo grep -E ^[^#] /etc/ssh/sshd_config # 内容确认
sudo systemctl restart sshd.service # 确认无误后,重启不使ssh-keygen,而是已有的ssh公钥证书(从Win客户机里上传到服务器):
C:\>scp d:\id_ed25519.pub username@ip:~/.ssh/authorized_keys
会自动处理 .ssh/authorized_keys 目录与文件的权限,如果没有需要手工chmod配置;上传成功后,就可以使用私钥或密码登录了,不需要ssh密码方式,需要配置禁用。
如果在上传时,报错提示:@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

请删除 C:\Users\xxx/.ssh/known_hosts 文件中,当前主机ip地址的行记录。
最后:卸载unattended-upgrades与snapd
sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades
sudo apt remove --purge unattended-upgrades # 类似于WIN自动更新,和Win一样,在自动更新过程中,会不让Ubuntu关机/安装程序。snapd在服务器版上也存在,有点无语,虽然 snap list 没有记录。卸载snap应用:
sudo snap list
snap remove --purge <name>卸载snapd本身
sudo systemctl disable snapd.service
sudo systemctl disable snapd.socket
sudo systemctl disable snapd.seeded.service
sudo apt remove --purge snapd
sudo apt autoremove --purge
sudo rm -rf /var/cache/snapd/
sudo rm -rf /snap/
sudo rm -rf /var/lib/snapd/
rm -rf ~/snap/阻止安装snapd
sudo vim /etc/apt/preferences.d/nosnap.pref内容如下:
Package: snapd
Pin: release a=*
Pin-Priority: -10
最后
sudo apt update
sudo apt upgrade
free -m #使用内存 332M
sudo df -h #硬盘使用5G,还是最小安装;比rocky的最小安装3.3G要大。
sudo hostnamectl set-hostname {newHostName} && sudo systemctl reboot # 改主机名+重启其他
在命令过程中,以下内容为提示,忽略就是了。
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
使用lvm中所有空间,见安装过程中第7步。
sudo df -h 只看到一半的硬盘空间,是因为lvm中,vg给lv只有一半,还有一半未分配。
- 使用
sudo vgdisplay命令查看发现 Free PE / Size 为未分配的空间 - 使用
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv调整逻辑卷的大小。 /dev/mapper/ubuntu--vg-ubuntu--lv为df -h看到的Filesystem 值- 使用
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv调整文件系统的大小。 sudo df -h就可以看到所有空间了
vim ~/bin/clean.sh
# /bin/bash
PASSWD=vmuser
echo "${PASSWD}" | sudo -S apt-get check
sudo apt-get clean
sudo apt-get autoremove --purge
sudo journalctl --vacuum-time=2d
sudo rm /var/crash/*在vim中使用:!bash开启shell,后使用exit退出返回到vim。
:!bash
mkdir ~/bin
exitsh文件保存后,添加执行权限
chmod u+x ~/bin/clean.sh如果$PATH中没有~/bin,就需要手工在~/.bashrc中添加后,执行source ~/.bashrc生效。
PATH=~/xxx:$PATH
export PATH 添加普通用户,使用SSH连接
- 添加普通用户与创建$HOME目录
# /bin/bash
UN=std # 用户名变量
sudo useradd $UN && sudo passwd $UN
# 如果首次登录,能自动创建主目录(一般只有本地机器),就不需要执行后面的内容;而远程ssh连接,通常则需要手工提前创建。
sudo mkdir /home/$UN
sudo cp ~/.bash_logout /home/$UN/.bash_logout
sudo cp ~/.bashrc /home/$UN/.bashrc
sudo cp ~/.profile /home/$UN/.profile
sudo chown -R $UN:$UN /home/$UN
sudo chmod -R u=rwx,g=rx,o= /home/$UN
sudo chmod u=rw,g=r,o=r /home/$UN.bashrc
sudo chmod u=rw,g=r,o=r /home/$UN.profile
sudo chmod u=rw,g=r,o=r /home/$UN.bash_logout如果不先创建$HOME目录,在使用su - std时,报错:su: warning: cannot change directory to /home/std: No such file or directory
- 切换用户,生成普通用户的公钥与私钥
su - std
ssh-keygen
mv ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys
cat ~/.ssh/id_ed25519不需要调整/etc/ssh/sshd_config内容,这个用户就可以使用ssh连接了。
发表回复