群晖、NAS、PVE、飞牛、二手品牌机、垃圾佬

每一位热爱生活的垃圾佬都值得敬畏

群晖NAS docker系列教程(四)、利用Docker安装最新版Ubuntu-21.04并远程访问

群晖NAS教程(四)、利用Docker安装最新版Ubuntu-21.04并远程访问 由于前面的写的教程,安装的 […]

群晖NAS教程(四)、利用Docker安装最新版Ubuntu-21.04并远程访问

由于前面的写的教程,安装的Ubuntu版本比较低,所以作为一个追求完美的小伙子,今儿折腾一下最新版的Ubuntu-21.04 。

一、下载Ubuntu-21.04(LTS)最新版本镜像

img

二、运行容器,并配置相关参数

这里只配置了Ubuntu的22端口映射到外网,如果需要80等别的端口也可以外网访问,多增加相关端口映射即可,so easy。

img

img

三、安装ssh

启动容器,打开bash命令行窗口

img

img

执行如下命令

#升级安装包
apt update

#进行安装包的更新
apt upgrade

#安装vim
apt install vim

#安装ssh
apt install openssh-server

#可选项,为了连接别的ssh-server
apt install openssh-client

这里应该是漫长的等待时间,完成之后,修改root密码:

passwd root 123456

修改配置,使得允许root远程登录

img

按字母i进行插入修改操作,按:wq保存并退出。

#将PermitRootLogin的值改为yes,/搜索即可,超级简单
vim /etc/ssh/sshd_config

#重启ssh服务
service ssh restart

四、路由器设置ssh的端口转发到外网

名称 协议 外部端口 内部IP地址 内部端口
5022 TCP 5022 192.168.31.19 5022

名称可以随便填,协议选择TCP,外部端口是外网访问的端口,内部IP地址是群晖的本地IP,内部端口是容器暴露给宿主机的端口号,为了方便我们全部设置成了统一的5022。

五、远程SSH连接测试

这里使用的终端是Terminus,当然也可以使用Xshell、SSH Secure Shell Client等远程访问连接小工具,如果是Mac用户可以直接打开Terminal进行操作。Terminus界面超级好看,而且win、Mac、Linux都有,本人超级喜欢。

img

img

连接成功,大功告成。

六、设置开机自启动SSH

到目前为止,现在还有一个致命的弱点,就是每次机器或者容器重启,都需要进入容器进行启动ssh服务的操作。所以进行开机自启动ssh服务显得尤为重要,其实也超级简单,只需执行命令sudo systemctl enable ssh即可。但是这个容器使用systemctl总是提示没有这个命令,所以还要进行额外的操作,把systemctl成功安装上,网上很多人的各种方法都尝试了,没有成功。我这里的重新安装systemctl可以完美的解决问题。

#升级安装包
apt update

#进行安装包的更新
apt upgrade

#安装systemctl
apt install systemctl

#这时再运行systemctl就不会报错啦
systemctl enable ssh

systemctl的一些操作如下:

#开机自启动
sudo systemctl enable ssh

#关闭ssh开机自动启动
sudo systemctl disable ssh

#单次开启ssh
sudo systemctl start ssh

#单次关闭ssh
sudo systemctl stop ssh

这时虽然可以设置开机自启动ssh,但是貌似没有生效。所以我采用了使用开机脚本/root/.bashrc上,增加一条启动ssh的记录,直接vim /root/.bashrc即可。有两种方案,第一种:

img

此方法是在bashrc的启动文件的末尾,增加一条service ssh start。当然这里也可以使用systemctl start ssh

第二种方案,在bashrc文件末尾增加一个可执行的shell脚本,比如可执行的sh脚本名称叫rebootrun.sh。那么在bashrc的末尾增加如下内容:

#reboot run
if [ -f /root/rebootrun.sh ]; then
      ./root/rebootrun.sh
fi

可以看出,需要在/root/rebootrun.sh这里有对应的shell可执行文件,rebootrun.sh的内容为:

#!/bin/bash
#打开ssh服务
service ssh start

#当然也可以使用这个
systemctl start ssh