本文中远程访问配置仅限于路由器在内网(校园网)中IP不变的情况,使用的路由器为TP-LINK系列
硬件环境和系统配置
服务器为Dell Precision 7920,操作系统Ubuntu 20.04 server,系统安装过程,换源,ssh基本配置,CUDA和驱动安装等内容见上一篇博客:《Dell Precision 7920 Ubuntu 20.04 server 关于深度学习环境配置的一些问题(一)》
硬盘挂载
在Linux下,未挂载的设备无法直接访问其中存储的文件。所谓挂载,指的是将设备(通常是硬盘等存储设备)挂接到已存在的目录上,可以简单理解成将该已存在的目录指向根目录下的/dev文件夹中的硬件设备,从而访问硬件设备中的存储内容。若该目录非空,则以前的内容将不可访问。在Windows中,系统挂载(分配盘符)的工作通常在装机时就已经完成,后续开机不再需要手动操作,而Linux默认情况下每次开机都需要手动挂载硬盘,相对而言比较麻烦。
下面的方法可以实现硬盘的自动挂载。
df
命令(disk free)查看文件系统的整体磁盘使用量。使用df -h
以人们较易阅读的GB, MB, KB 等格式显示使用量;
其中/dev/sda1
和/dev/sdb1
是服务器上的两块硬盘,此时已挂载到/home/tom_cat/workdir
和/home/tom_cat/private
目录下。
fdisk
是磁盘分区命令,fdisk -l
列出系统设备。
这里截取了一段,设备为/dev/sda
,分区为/dev/sda1
- 以上是基本信息查询,接下来执行自动挂载。通过命令
sudo blkid /dev/sda1
查询设备的UUID和磁盘格式(本文中的硬盘已事先格式化分区为NTFS);
sudo vim /etc/fstab
在文件末尾添加如下内容:
其中第二项是需要硬盘挂载到的目录,第三项是文件系统,除了NTFS另有ext2和ext4等等,根据硬盘情况调整。第四项是挂载选项,第五项是dump(备份)选项(用一个数字表示),第六项(接下来的数字)表示文件系统检查选项,见fstab文件的详细说明。简要地说,第四项没有特殊需求defaults即可,第五项选0,若文件系统无需在启动时扫描检查,则设置第六项字段为0,否则为2。- 保存退出重启查看效果。
更新:
如果需要将硬盘格式化为Linux支持的ext4类型,则应执行如下操作:
- 磁盘物理分区
使用fdisk
工具,执行sudo fdisk /dev/nvmeOn1
,其中参数为设备名,磁盘分区命令参数此处不赘述。d
逐个删除已存在的分区;n
创建新分区,全部选项取默认值即可;t
选择分区格式为Linux filesystem一项(如果创建的新分区不为此项则修改为此,否则无需改动);w
写入,在写入操作前务必确保数据安全!
- 建立逻辑文件系统
mkfs -t ext4 /dev/nvme0n1p1
其中最后一个参数为需要创建文件系统的分区,而非设备名。
注: ext4类型的好处在于可以支持Ubuntu下的文件权限控制。在NTFS格式下,文件系统无法支持该功能,即在NTFS下如果设置了某个目录对某用户无权限,该用户实际上仍能访问此目录。
远程访问配置
在上一篇博客中我已经配置好在本地网络上访问服务器的基本设置,然而忽略了一点,即如果不给服务器分配静态的IP,每一次路由器重启服务器IP都会变,这给访问带来了极大的麻烦。
本文中远程访问配置仅限于路由器在内网(校园网)中IP不变的情况,使用的路由器为TP-LINK系列
静态IP分配
该部分介绍在路由器下如何给服务器配置一个静态的IP,防止其在路由器重启后IP改变从而需要调整用户客户端的很多设置(.ssh文件、IDE默认配置等)。
第一步,服务器不联网
- 首先确定一个在局域网中没有被其他设备使用过的IP地址。进入TP-LINK管理界面
192.168.1.1
,软件版本为最新3.0.0
,应用管理-IP与MAC绑定
- 选择地址池中一个未使用的IP作为服务器静态IP,这里假设
192.168.1.150
还未绑定任何设备,将其添加到绑定设置。
填入主机名,服务器网卡的MAC地址和192.168.1.150
。服务器网卡MAC地址通过ifconfig
查看
配置完后路由器上显示cortex
已经绑定到192.168.1.150
上。
- 重启路由器。
第二步,服务器联网
ifconfig enp0s31f6 192.168.1.150
可以手动设置服务器IP地址,子网掩码、网关默认即可。- 将此命令配置为开机启动,见Ubuntu 20.04 配置开机自启动脚本。打开
rc.local
配置文件内容如下:
执行systemctl start rc-local
和systemctl enable rc-local
,重启。
该部分作为保险策略,也作为开机命令的学习笔记。
其他
- 注意路由器设置好后一定要重启,作者配置时遇到同一MAC地址即使已绑定,在联网后路由器仍然分配了另一个IP地址给服务器的问题(主机仍在DHCP设备列表内,且IP与MAC映射表中对应同一MAC地址有两项记录),非常头疼,考虑可能是路由器配置没有更新,导致服务器联网时路由器未执行绑定的策略。
端口映射
本文中远程访问配置仅限于路由器在内网(校园网)中IP不变的情况,使用的路由器为TP-LINK系列
端口映射指的是将服务器的某端口映射到路由器的某端口上,从而在大局域网中通过访问路由器IP及对应端口即可实现等同于访问服务器及其端口的效果。
和前一节相似,在TP-LINK管理界面中选择虚拟服务器应用
IP地址设置为服务器在本地网络中的地址,这样就可以在校园网内通过ssh tom_cat@10.68.11.93
在学校里的其他校园网接入点访问实验室服务器了,其中10.68.11.93
是路由器在校园网中的IP。
重点: 外部端口指的是当远程客户端连接到路由器IP地址时选择的路由器上的端口号;而内部端口指的是对应路由器端口的服务器上的某端口。例如设置端口映射如下:
注意到SSH连接使用TCP协议,监听22端口。当我们ssh -p 1532 tom_cat@10.68.11.93
时,意味着这样的过程:客户端SSH在客户端22端口连接到路由器上的1532号端口,通过端口映射,该访问被转接到服务器上的22端口,而服务器启动时已经开启了SSH服务,此时接到客户端的SSH连接请求,三次握手建立连接。
关于SSH配置文件
使用VSCode打开ssh配置文件,可以看到如下内容:
事实上这是有误导性的,Host
字段实际上指的是一个假名,而HostName
才是真正的目标IP地址,建议改为:
防止后续修改配置时发生混淆的情况。
Port
指连接到的目标端口号,User
指登录用户名。