群晖NAS教程(四)、利用Docker安装最新版Ubuntu-21.04并远程访问
由于前面的写的教程,安装的Ubuntu版本比较低,所以作为一个追求完美的小伙子,今儿折腾一下最新版的Ubuntu-21.04 。
一、下载Ubuntu-21.04(LTS)最新版本镜像
二、运行容器,并配置相关参数
这里只配置了Ubuntu的22端口映射到外网,如果需要80等别的端口也可以外网访问,多增加相关端口映射即可,so easy。
三、安装ssh
启动容器,打开bash命令行窗口
执行如下命令
#升级安装包
apt update
#进行安装包的更新
apt upgrade
#安装vim
apt install vim
#安装ssh
apt install openssh-server
#可选项,为了连接别的ssh-server
apt install openssh-client
这里应该是漫长的等待时间,完成之后,修改root密码:
passwd root 123456
修改配置,使得允许root远程登录
按字母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都有,本人超级喜欢。
连接成功,大功告成。
六、设置开机自启动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
即可。有两种方案,第一种:
此方法是在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