@[TOC]

  • 环境配置:一台公网服务器(腾讯云)、一台笔记本电脑、WSL子系统
  • 涉及知识:docker、Frp

前置配置请参考第一篇文章👀:  https://editor.csdn.net/md/?articleId=135937212

1、WSL2机器部署centos镜像并开放ssh端口

接着上篇文章,这里我们实现在WSL2机器上利用docker部署基础的centos镜像,开放其ssh端口,然后利用公网ip进行访问ssh登录访问!

1.1 编写Dockfile脚本

mkdir /home/ssh
vim Dockerfile
  • 1.
  • 2.

🐱🚀其中Dockfile内容如下:

FROM centos:7
# 升级 yum 源,全选 yes
RUN yum -y update
# 安装openssh-server
RUN yum -y install openssh-server
# 修改/etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

# 生成sshkey
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

# 变更root密码
RUN echo "root:12345"|chpasswd
# 开放22端口
EXPOSE 22
# 运行脚本,启动sshd服务
CMD    ["/usr/sbin/sshd", "-D"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

1.2 创建镜像,启动容器

docker build -t centos7_ssh:test .
docker images
docker run -d -p 23:22 --name=ssh_test_7 centos7_ssh:test
docker ps
  • 1.
  • 2.
  • 3.
  • 4.

利用Frp实现内网穿透-ssh登录功能(docker实现)_centos

1.3 查看frps管理端

利用Frp实现内网穿透-ssh登录功能(docker实现)_centos_02

✨✨✨注:这里外网端口开放的是23端口,映射到内网容器的22端口,对于公网(腾讯云)需要开放此端口。

1.4 在其他机器进行ssh登录WSL2机器的ssh_test_7(docker容器)

这里我选的WSL2的宿主机,笔记本电脑,打开cmd进行连接,其中命令如下:

ssh -p 23 root@公网ip
  • 1.

密码如上面设置的:12345

结果如下图:成功进入容器!

利用Frp实现内网穿透-ssh登录功能(docker实现)_docker_03

2、WSL2机器无法访问github的解决方案

有时候在WSL2子系统需要直接访问github,但是会报403超时等错误,我这里的解决方案如下:

  • 1:笔记本系统启动v代理,查看代理端口(软件就不说了👀)
  • 利用Frp实现内网穿透-ssh登录功能(docker实现)_sed_04

  • 2:在WSL2子系统中查看笔记本主机IP:cat /etc/resolv.conf
  • 3:在WSL2子系统中配置代理:export ALL_PROXY="http://第二步查看到的IP:代理的端口"

这样,在访问就解决了!

3、其他问题

3.1 ssh缓存问题

利用Frp实现内网穿透-ssh登录功能(docker实现)_docker_05

出现这个错误的原因是,本地的ssh和服务器的ssh对不上只需要删除本地如下对应的ssh缓存信息,然后重新连接即可。

利用Frp实现内网穿透-ssh登录功能(docker实现)_sed_06

3.2 配置未开启远程连接

利用Frp实现内网穿透-ssh登录功能(docker实现)_centos_07

需要将上面的Dockfile内容修改如下:

FROM centos:7
# 升级 yum 源,全选 yes
RUN yum -y update
# 安装openssh-server
RUN yum -y install openssh-server
# 修改/etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# 修改/etc/ssh/sshd_config,这是新增的,之前第一步完成是没有问题的,后面在连接就报错了,加上这行就可以了
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config

# 生成sshkey
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

# 变更root密码
RUN echo "root:12345"|chpasswd
# 开放22端口
EXPOSE 22
# 运行脚本,启动sshd服务
CMD    ["/usr/sbin/sshd", "-D"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.