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

236 阅读3分钟

@[TOC]

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

前置配置请参考第一篇文章👀:
editor.csdn.net/md/?article…

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

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

1.1 编写Dockfile脚本

mkdir /home/ssh
vim Dockerfile

🐱‍🚀其中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 创建镜像,启动容器

docker build -t centos7_ssh:test .
docker images
docker run -d -p 23:22 --name=ssh_test_7 centos7_ssh:test
docker ps

在这里插入图片描述

1.3 查看frps管理端

在这里插入图片描述

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

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

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

ssh -p 23 root@公网ip

密码如上面设置的:12345

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

在这里插入图片描述

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

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

  • 1:笔记本系统启动vpn代理,查看代理端口(软件就不说了👀)

在这里插入图片描述

这样,在访问就解决了!

3、其他问题

3.1 ssh缓存问题

在这里插入图片描述

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

在这里插入图片描述

3.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
# 修改/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"]