基于LXD搭建实验室GPU服务器(一)——宿主机的基本配置

发布时间 2023-08-26 15:48:06作者: treasurew_wang

从零搭建服务器是一个看似简单实则有些繁琐的操作,本文旨在记录并整合这些操作,使得后续搭建可以成为一个流水线般简单流程的过程。

操作系统的安装过程网络上资源非常多,本文不再赘述。

本文将对刚安装的ubuntu20.04.06操作系统进行基本配置。

换源

由于GFW的存在,因此需要先对apt进行换源操作以确保后续流程顺畅。

首先备份原来的源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后修改apt源的文件

# 修改apt源的文件
sudo vim /etc/apt/sources.list

# 可以修改为aliyun源或者其它国内源
# 默认注释了源码仓库,如有需要可自行取消注释
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse 
#deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse 
#deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse 
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse 
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse 
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse 
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

更新apt cache以及升级包

sudo apt update
sudo apt upgrade # 可选

安装必要的包

# build-essential 包括了很多开发必要的软件包,避免了一个个安装的麻烦
sudo apt install build-essential

# 使用ifconfig查看网络配置需要
sudo apt install net-tools

# 好用的命令行编辑工具
sudo apt install vim

sshd配置

我们一般使用ssh连接服务器,而在客户端,我们需要部署ssh(一般默认包含),在服务端,我们部署的是sshd。

sshd安装

sudo apt install openssh-server

sshd配置

编辑sshd配置文件

sudo vim /etc/ssh/sshd_config

部分常用配置如下

# 更换ssh端口
Port 22

# 是否允许密码登录,将PasswordAuthentication设置为no可以禁用密码登录
# 为了安全起见,此处禁用密码登录,采用ssh密钥登录
PasswordAuthentication no

# 默认禁止root登录,将prohibit-password改成yes可以允许root登录
PermitRootLogin prohibit-password

# 最大尝试登录次数
MaxAuthTries 6

# 是否允许ssh密钥认证登录
PubkeyAuthentication yes

配置ssh密钥免密登录

ssh密钥介绍

通常情况下,我们使用密码登录,但是容易遇到被暴力破解的问题。博主实验室的GPU服务器就遭遇暴力破解且部署挖矿程序的经历,因此我们需要使用更加安全的登录方式——ssh密钥登录。

密钥的原理大致可以理解为:利用密钥生成器生成一对密钥(分别为私钥和公钥)。我们将公钥添加到某个服务器的某个账户上,客户端持有公钥即可完成认证登录,由于ssh密钥几乎无法破解,因此只有在服务器上注册了公钥的客户端才可登录服务器。

下面我们将介绍如何配置ssh密钥登录。

ssh服务端配置

密钥一般存储在用户目录~.ssh目录下,其中包含了authorized_keys文件,我们需要将公钥写入authorized_keys文件中,即可完成注册。但是刚安装的操作系统可能没有该目录和文件,因此我们需要创建并赋予600权限。

# 创建.ssh文件夹
mkdir ~/.ssh

# 创建authorized_keys文件,并赋予600权限
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

我们配置好了服务端后,需要在客户端生成一对密钥,并在服务端注册公钥即可完成ssh密钥登录。

ssh客户端配置

以win11平台连接为例(其余平台大同小异)。

若之前没有生成过ssh密钥,可以在cmd中运行以下命令生成。

C:\User\<your_name>> ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (C:\User\<your_name>/.ssh/id_rsa): <== 密钥存储路径,默认即可
Created directory 'C:\Users\<your_name>/.ssh'.               
Enter passpharase (empty for no passpharase):                          <== 密钥密码,在使用时需要输入,可以留空

此时我们进入刚才选择的密钥存储路径,默认为C:\User\<your_name>/.ssh,即可看见公钥和私钥,一般公钥命名为id_rsa.pub,私钥命名为id_rsa。私钥我们自己持有,公钥可以通过ftp服务上传至服务器的~/.ssh文件夹下,然后运行以下指令将公钥写入authorized_keys文件:

cat id_rsa.pub >> authorized_keys

然后重启sshd服务

sudo systemctl restart sshd

随后就可以使用ssh密钥登录了。

ssh密钥登录

此处以xshell为例,输入完登录名后,用户密钥处选择私钥路径,密码选择生成ssh-key时的密码,点击确认即可完成登录。
image

防火墙配置

为了方便调试,暂不配置防火墙,待后续规划好端口后开启防火墙统一开放端口,此处仅存放一些常用指令便于以后查阅。

需要注意的是,开启防火墙时需要保证ssh端口(默认22)处于开启状态,否则可能导致ssh中断并且无法连接。

# 查看防火墙状态
sudo ufw status verbose

# 开启/关闭防火墙
sudo ufw enable/disable

# 放行端口
sudo ufw allow <port_number>/<protocal>

# 禁用端口
sudo ufw delete allow <port_number>

# 重置防火墙
sudo ufw reset

# 重启防火墙
sudo ufw reload

# 查看端口是否开放
lsof -i:<port_number>

至此,宿主机的基本配置完成,后续将进行cuda和nvidia驱动的安装。