基于LXD搭建实验室GPU服务器(一)——宿主机的基本配置
从零搭建服务器是一个看似简单实则有些繁琐的操作,本文旨在记录并整合这些操作,使得后续搭建可以成为一个流水线般简单流程的过程。
操作系统的安装过程网络上资源非常多,本文不再赘述。
本文将对刚安装的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时的密码,点击确认即可完成登录。
防火墙配置
为了方便调试,暂不配置防火墙,待后续规划好端口后开启防火墙统一开放端口,此处仅存放一些常用指令便于以后查阅。
需要注意的是,开启防火墙时需要保证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驱动的安装。