场景
在外面要连接自己家里的电脑(Linux/MacOS),实现内网穿透
设备
- 一台能上网的Linux/MacOS主机
- 一台拥有公网IP的服务器
命令
- ssh -L 本地端口转发,访问本地的某个端口如同访问服务器的端口
- ssh -R 远程端口转发,访问服务器的某个端口如同访问本地的端口
- ssh -D 动态端口转发,用于代理
步骤
1 2
| sudo echo "GatewayPorts yes" >> /etc/ssh/sshd_confg sudo systemctl restart sshd
|
- 一步到位:在本地主机上设置远程端口转发。服务器开始监听2222端口,访问服务器2222端口如同访问本地主机22端口
1
| ssh -R 2222:localhost:22 user@server -N
|
- 在任意可上网主机上连接以上本地主机。其中user对应本地主机的用户名,server是服务器地址。连接成功即OK。
使用本地主机上网
在任意可上网主机执行如下命令即可连接到本地主机,并将当前主机的2222端口设置为socks5代理端口。
1
| ssh -D 3333 user@server -p 2222 -N
|
使用chrome浏览器的SwitchyOmega插件可以设置socks5代理,将代理设置为localhost:3333即可使用以上本地主机的网络环境上网,同样可以直接访问所有在本地主机网域内的其他主机。
可能遇到的问题
Connection refused
- 本地主机未开启sshd服务,若是Linux,直接运行
1
| sudo systemctl start sshd
|
即可启动ssh服务
若是MacOS,请自行查阅相关资料
- 本地主机sshd服务未监听0.0.0.0(所有IP),需要修改配置文件/etc/sshd_config
1 2
| sudo echo "ListenAddress 0.0.0.0" >> /etc/ssh/sshd_confg sudo systemctl restart sshd
|