Last active
December 18, 2015 14:09
-
-
Save JinnLynn/5795224 to your computer and use it in GitHub Desktop.
使用autossh建立SSH通道,实现本地socks代理,系统需安装autossh(如果是OSX,还需要安装watch)。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# MacOSX-Kits: https://github.com/JinnLynn/MacOSX-Kits/blob/master/shell/inc/ssh.sh | |
JPROXY_SERVER_USR="YOUR SSH SERVER USERNAME" | |
JPROXY_SERVER="YOUR SSH SERVER" | |
JPROXY_SERVER_KEY="YOUR SSH KEY FILEPATH" | |
JPROXY_SOCKS_PORT="9527" | |
# 输出检查结果字符串 | |
# 使用方法: 判断语句; _kits_check "说明文字" | |
# 如: [[ 0 -eq 0 ]]; _kits_check "0=0?" | |
function _kits_check() { | |
ret=$? | |
ok="\033[32m✔\033[39m" | |
fail="\033[31m✘\033[39m" | |
for (( i = 0; i < 40; i++ )); do echo -n " "; done | |
[[ $ret -eq 0 ]] && echo -en "$ok" || echo -en "$fail" | |
[[ ! -z "$1" ]] && echo -e "\r$1" | |
} | |
# ssh代理 | |
function kits_ssh_proxy() { | |
mp="55000" | |
case "$1" in | |
"start" | "restart" ) | |
kits_ssh_proxy stop | |
autossh -M $mp -f -N -D $JPROXY_SOCKS_PORT -i "$JPROXY_SERVER_KEY" $JPROXY_SERVER_USR@$JPROXY_SERVER | |
;; | |
"stop" ) | |
# 杀死SSH进程 | |
for p in `ps aux | grep ssh | grep $mp:127.0.0.1:$mp | awk '{print $2}'`; do | |
[[ ! -z "$p" ]] && kill -9 $p | |
done | |
# 如果SSH没有成功连接, 前述的进程将不存在,需手动杀死autossh进程 | |
for p in `ps aux | grep autossh | grep $mp | awk '{print $2}'`; do | |
[[ ! -z "$p" ]] && kill -9 $p | |
done | |
;; | |
"alive" ) | |
# 查找autossh进程 | |
ret=`ps aux | grep autossh | grep -c $mp` | |
[[ $ret -gt 0 ]]; _kits_check "autossh" | |
ret=`lsof -i:$JPROXY_SOCKS_PORT` | |
[[ ! -z "$ret" ]]; _kits_check "SOCKS[127.0.0.1:$JPROXY_SOCKS_PORT]" | |
;; | |
"watch" ) | |
watch -n 1 "lsof -i:$JPROXY_SOCKS_PORT" | |
;; | |
* ) | |
;; | |
esac | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment