Skip to content

keontang/ssh-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ssh proxy

ssh proxy 是通过包装 ssh -D 实现的运行在 macOS 上的 ssh 代理. 在 macOS Sierra Version 10.12.5 上验证通过.

我们通常用的多代理是 shadowsocks, 但是在公司或者客户内部, 我们的 shadowsocks 代理通常的都不能用. 因为公司或者客户网络通常对网络端口进行了限制, 而我们买的 shadowsocks 账号端口一般都是非 22443 端口, 比如:240601080, 这些端口根本就出不去. 所以, 我们可以通过 ssh proxy 利用 22 号端口将请求代理到外部的 ssh server 上, 通过 ssh server 向真实的服务发起请求, 最后 ssh server 通过该 ssh 隧道将请求回复返回给用户.

目录结构

ssh-proxy/
├── README.md
├── autoproxy.pac # 自动分流脚本
├── config.sh  # 代理配置文件
├── ssh_proxy.sh # 代理启动关闭脚本
└── system_proxy_configure.sh # 系统网络代理配置

配置

配置在 config.sh 中修改, 下面对几个重要的修改项进行了描述.

  • socks 代理端口

127.0.0.1:port: ssh proxy 将创建一个 socket, 然后侦听本地的 port 端口. ssh proxy 通过 127.0.0.1:port 将用户请求代理到 ssh server.

# SOCKS PROXY PORT
# Notes: It's the same value with the autoproxy.pac
PORT=1090

默认端口配置为 1090.

如果改了默认的端口, 需要同时需要 autoproxy.pac 中设置的端口:

1 // Generated by gfwlist2pac in precise mode
2 // https://github.com/clowwindy/gfwlist2pac
3 
4 var proxy = "SOCKS5 127.0.0.1:1090; SOCKS 127.0.0.1:1090; DIRECT;";
  • 代理服务器

ssh client 需要连接的 ssh server 信息, 包括 ssh server 的主机信息和服务端口信息.

# user@host
SSH_HOST="username@serverip"
# SSH PORT
SSH_PORT=22

SSH_HOSTusername@serverdomain 或者 username@serverip 组成.

SSH_PORT 默认为 22, 如果改为其他值, 可能会由于公司或者客户网络防火墙导致代理连不上 ssh server.

  • interface

这里表示为哪张网卡上的网络请求配置代理服务.

interface

# OSX network service to configure proxy for
NET_INTERFACE="yl"
  • 日志文件
# Log file for ssh proxy
LOG_FILE="${HOME}/sshproxy.log"
  • 不走代理的白名单
# Bypass proxy settings for hosts and domains
BYPASS_DOMAINS="127.0.0.1 localhost 169.254/16 192.168/16"

运行 ssh proxy 代理

bash ./ssh_proxy.sh [on|off|status]

如果我们通过密钥方式连接 ssh server, 执行 ssh_proxy.sh 启动代理的时候不需要任何交互.

如果我们通过密码方式连接 ssh server, 执行 ssh_proxy.sh 启动代理的时候需要输入用户密码.

设置系统网络代理

bash ./system_proxy_configure.sh [on|off|status]

因为该脚本需要修改系统网络代理配置, 所以可能会需要用户输入管理密码.

Notes

  • ssh_proxy.shsystem_proxy_configure.sh 没有严格的先后执行顺序, 前者负责代理程序的管理, 而后者负责系统网络代理的配置.
  • 另外,公司或者客户内部我们通常无法使用微信、QQ 等应用,我们可以通过 Proxifier 软件解决.

Proxifier

About

SSH Tunnel for macOS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published