群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

群晖教程3年前 (2022)更新 ypng
106 0 0
​​由于前面的写的教程,安装的Ubuntu版本比较低,所以作为一个追求完美的小伙子,今儿折腾一下最新版的Ubuntu-21.04 。

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

群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

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

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

群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问 群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

三、安装ssh

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

群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

执行如下命令

#升级安装包
apt update

升级安装包遇报错问题

群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

操作如下:

1、复制一份 /etc/apt/sources.list 文件,以作备用,其中 sources-bak.list 是备份文件名;

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

2、打开  /etc/apt/sources.list  文件;

vim /etc/apt/sources.list

3、点击 D 删除里面的所有内容;

4、打开镜像源 阿里云镜像源链接 ;

5、找到 Ubuntu 对应版本的镜像;

执行修改源命令

vim /etc/apt/sources.list

#进行安装包的更新
apt upgrade

#安装vim
apt install vim

#安装ssh
apt install openssh-server

安装openssh-server报依赖错误的解决方法

这是因为,openssh-server是依赖于openssh-client的,ubuntu自带的openssh-client的openssh-client与所要安装的openssh-server所依赖的版本不同,这里所依赖的版本是 1:8.2p1-4

所以要安装对应版本的openssh-client,来降级覆盖掉ubuntu自带的openssh-client:

apt-get install openssh-client=1:8.2p1-4
然后再安装openssh

apt-get install openssh-server

验证是否安装:

dpkg -l |grep ssh

验证是否运行:

ps -e |grep ssh

提示:有的时候,不仅报一个依赖错误,覆盖安装一个之后还会报另外一个依赖错误,这时候依旧采用覆盖安装的方法即可。

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

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

passwd root 

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

群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

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

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

PermitRootLogin  yes

#重启ssh服务
service ssh restart

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

名称协议外部端口内部IP地址内部端口
5022TCP5022192.168.31.195022

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

五、远程SSH连接测试

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

群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问 群晖NAS利用Docker安装最新版Ubuntu-21.04并远程访问

连接成功,大功告成。

六、设置开机自启动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

© 版权声明

相关文章

暂无评论

暂无评论...