docker nginx ssh 内网穿透
时间: 2023-09-15 07:15:24 浏览: 181
SSH端口转发实现内网穿透的实现
5星 · 资源好评率100%
要在 Docker 容器中运行 Nginx 并使用 SSH 进行内网穿透,可以采用以下步骤:
1. 在 Docker 中运行 Nginx
可以使用以下命令来运行一个 Nginx 容器:
```
docker run -d --name nginx -p 80:80 nginx
```
这将在 Docker 中创建一个名为 “nginx” 的容器,并将容器内的 80 端口映射到宿主机的 80 端口。可以通过访问宿主机的 IP 地址来访问 Nginx。
2. 安装 SSH 服务
在 Nginx 容器中安装 SSH 服务,可以使用以下命令:
```
docker exec -it nginx bash
apt-get update
apt-get install ssh
```
这将在容器内安装 SSH 服务。
3. 配置 SSH 服务
编辑 SSH 配置文件 `/etc/ssh/sshd_config`,将以下内容添加到文件末尾:
```
GatewayPorts yes
```
这将启用 SSH 网关端口转发功能,以便可以从公共网络访问 Docker 容器中的服务。
4. 启动 SSH 服务
使用以下命令启动 SSH 服务:
```
service ssh start
```
5. 配置内网穿透
使用 ngrok 等工具,将宿主机的 SSH 端口映射到公共网络上。然后,使用 SSH 客户端连接到公共网络上的 ngrok 服务器,并将流量转发到 Docker 容器中的 SSH 服务。
例如,假设 ngrok 将宿主机的 SSH 端口映射到 `tcp://0.tcp.ngrok.io:12345`,则可以使用以下命令连接到 Docker 容器中的 SSH 服务:
```
ssh -p 12345 -o "ProxyCommand=nc -X 5 -x 127.0.0.1:1080 %h %p" root@localhost
```
请注意,上述命令中的 `-o "ProxyCommand=nc -X 5 -x 127.0.0.1:1080 %h %p"` 部分是用于 SOCKS5 代理的,如果不需要代理,则可以省略此部分。
以上就是在 Docker 中运行 Nginx 并使用 SSH 进行内网穿透的步骤。
阅读全文