SSH正向代理

实验室里有一台服务器C,我在实验室里有一台和服务器在同一局域网的电脑B,我自己的笔记本A在寝室。我想在A电脑上直接访问C的网站,那么该如何实现呢? ssh-正向与反向代理 - tanoak - 博客园 (cnblogs.com)

示意图.png

使B能访问在C上运行的Jupyter notebook

我直接在C上打开了Jupyter notebook(可以百度一下jupyter 远程访问),但是C并没有开放8888端口(jupyter默认是8888端口),只开放了常用的端口,如22端口等。那么首先需要解决的是使B能访问到C端的jupyter网页,这时只需要在B上配置ssh,使用ssh的端口转发的功能来访问C的8888端口

代码语言:javascript
复制
ssh -L 4000:localhost:8888 username@192.168.1.66 -p port

这样就能直接在B的电脑上输入localhost:4000来访问C服务器上jupyter通过8888端口开放的服务

使A能通过B来访问C开放的jupyter服务

这时只需要在B上做如下配置:

代码语言:javascript
复制
ssh -CfNg -R 4000:localhost:4000 usrname@123.123.999.xxx

这样就能直接在A电脑上输入localhost:4000来直接访问C中开启的服务了

SSH常用参数
代码语言:javascript
复制
-N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-C 表示压缩数据传输
-f 告诉SSH客户端在后台运行
-q Quiet mode. 安静模式,忽略一切对话和错误提示
-g:允许远程主机连接主机的转发端口
-L port:host:hostport 做本地映射端口(正向隧道,监听本地port)
需要使用的本地端口号
需要访问的目标机器IP地址(IP: 234.234.234.234)
需要访问的目标机器端口(端口: 21)
-R。port:host:hostport 该参数的三个部分的含义分别(反向隧道,监听远程port)
远程机器使用的端口(2222)
需要映射的内部机器的IP地址(127.0.0.1)
需要映射的内部机器的端口(22)
栗子 -R X:Y:Z 就是把我们内部的Y机器的Z端口映射到远程机器的X端口上
-D port 指定一个本地机器 ``动态的 应用程序端口转发
备注

上图中A和B电脑都是win10系统,win10系统开启要手动开启OpenSSH服务才能使用ssh登录,开启的方法是先在设置中打开应用->可选服务然后添加OpnenSSH服务,之后再在开始菜单中搜索服务,在服务中打开与OpenSSH相关的两个服务就行。

image.png