Open licoded opened 2 years ago
Ubuntu 命令行下,先挂上VPN,再通过 ssh 登录内网服务器
另外,在 ~/.ssh/vpn.sh 中实现了 VPN 即用即启,用完自动关闭
~/.ssh/vpn.sh
问题: 挂上 VPN 后 ssh 无法使用 原因: VPN "劫持" 了主机上的所有网络流量/请求 方案: 使用 ocproxy 使 OpenConnect 仅处理用户专门从代理请求的网络活动
/etc/systemd/system/myVpn.service
[Unit] Description=My Vpn Connection After=network.target [Service] Type=simple Environment=password=correcthorsebatterystaple ExecStart=/bin/sh -c "echo <vpn-password> | sudo openconnect --protocol=pulse <vpn-host-url> --user=<vpn-username> --passwd-on-stdin --script-tun --script 'ocproxy -D 9052 -v'"
#!/bin/bash sudo systemctl start myVpn sleep 2 # kill connection on exit function cleanup { sudo systemctl stop myVpn } trap cleanup EXIT nc -X 5 -x 127.0.0.1:9052 $1 $2
~/.ssh/config
Host myserver User <server-user> ProxyCommand $HOME/.ssh/vpn.sh <server-url> 22
赋予 ~/.ssh/vpn.sh 可执行权限
sudo chmod 777 ~/.ssh/vpn.sh sudo chmod +x ~/.ssh/vpn.sh
低版本 (<8.04) 默认不支持 pulse 协议
pulse
sudo add-apt-repository ppa:dwmw2/openconnect sudo apt-get update sudo apt install openconnect
sudo apt install ocproxy
ssh myserver
敏感信息配置项(必需)
<vpn-password>
<vpn-host-url>
<vpn-username>
<server-user>
<server-url>
其他可配置项
9052
myVpn.service
myVpn
myserver
ssh <hostname>
~/.ssh/vpn.sh 首行误写成 #!/bin/sh 导致出错
#!/bin/sh
原因:What is the difference between #!/bin/sh and #!/bin/bash?
最终效果
Ubuntu 命令行下,先挂上VPN,再通过 ssh 登录内网服务器
问题: 挂上 VPN 后 ssh 无法使用 原因: VPN "劫持" 了主机上的所有网络流量/请求 方案: 使用 ocproxy 使 OpenConnect 仅处理用户专门从代理请求的网络活动
创建配置文件
/etc/systemd/system/myVpn.service
~/.ssh/vpn.sh
~/.ssh/config
其他
赋予
~/.ssh/vpn.sh
可执行权限openconnect 高版本安装
ocproxy 安装
使用
注意事项
敏感信息配置项(必需)
<vpn-password>
: VPN密码<vpn-host-url>
: VPN域名<vpn-username>
: VPN用户名<server-user>
: 内网服务器登录用户名<server-url>
: 内网服务器域名其他可配置项
9052
为本地 SOCKS 代理端口号,可更改为其他没有被占用的端口号myVpn.service
中的服务名myVpn
可自定义,但在~/.ssh/vpn.sh
中使用时需保持一致~/.ssh/config
中的主机名myserver
可自定义,但使用ssh <hostname>
时需保持一致~/.ssh/vpn.sh
的文件名和位置也可自定义,但在~/.ssh/config
中使用时需保持一致,并且不要忘记赋予可执行权限参考链接