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

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


三、安装ssh
启动容器,打开bash命令行窗口


执行如下命令
#升级安装包
apt update
升级安装包
遇报错问题

操作如下:
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远程登录

按字母i进行插入修改操作,按:wq保存并退出。
#将PermitRootLogin的值改为yes,/搜索即可,超级简单
vim /etc/ssh/sshd_config
PermitRootLogin yes
#重启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