OpenWrt上使用SSH代理

要访问远程局域网的内容,或者是想访问某些受限内容,一般说来,VPN是一个很好的解决方案,但是VPN的配置相对复杂,适合企业使用。所以,使用SSH是一个既方便又快捷的解决方案,服务端不需要做复杂的配置,只要稍稍配置客户端部分即可。

在OpenWrt上配置SSH代理,有利于是OpenWrt的LAN网络下的客户端均可使用代理,做到一次配置,多次使用。

要在OpenWrt上使用SSH代理,首先要有一个强大的SSH客户端,由于 OpenWrt 中默认自带的 SSH 服务端和客户端是 Dropbear,Dropbear 作为 SSH 客户端无法满足我们的需要,所以我们要安装 openssh-client。首先到路由器的文件系统中 /usr/bin 目录下,删除 ssh 和 scp。其实这两个文件都是到 Dropbear 的符号链接,所以放心删除。

然后我们打开终端,通过 ssh 登录路由器。登录后,先用:

opkg update

刷新一下软件包。然后安装openssh-client:

opkg install openssh-client openssh-keygen

我们使用 OpenSSH-Client 来登录主机并做端口转发,使用OpenSSH-Keygen生成密钥对,方便客户端不使用密码即可登陆服务端。

安装完之后,我们首先要做的就是设置 SSH 的密钥,这样就可以自动登录,而不用输入密码。

首先用 sh-keygen 来生成密钥对:

ssh-keygen -b 1024 -t rsa

会在/root/.ssh 文件夹下生成 id_rsa 和 id_rsa.pub 两个文件。然后把 id_rsa.pub 公钥上传到 SSH 服务器 ~/.ssh/ 文件夹下,改名为 authorized_keys。然后我们通过路由器SSH登陆我们的SSH服务器,测试是否可以免密码登录。实际上,这种密钥登陆采用加密密钥进行认证,登录过程是十分安全的,比采用密码登录还要安全。如果提示你有关权限问题的话,可能还需要改下 id_rsa 文件的属性。

chmod -rw------- /root/.ssh/id_rsa

 

接下来我们来测试一下

ssh -D 192.168.1.1: [代理端口] [用户名@你的主机地址] -qTfnN

打开浏览器,设置 SOCKS 代理为192.168.1.1和上面设置的端口。浏览器建议使用FireFox(火狐),IE浏览器貌似不支持Socket V5代理,谷歌Chrome浏览器使用Socket代理需要使用插件。成功设置后,代理应该成功了。

如果有FireFix(火狐)下的AutoProxy或者是Chrome下的SwitchySharp插件,可以用来自动管理自己的代理设置,设定指定的网站使用代理,其余的不使用。

接下来我们让路由器开机时自动运行代理。

在路由器 /etc/init.d/ 文件夹下,我们建立个文本文件,名字可以自由命名,比如叫proxy,编辑其中的内容:

 

#!/bin/sh /etc/rc.common # Copyright (C) 2013 zhyaof.net   START=99
 
start() { ssh -D 192.168.1.1: [代理端口] [用户名@你的主机地址] -qTfnN }  
stop() { killall sshd }

 

保存,加上可执行属性:

chmod +x /etc/init.d/proxy

然后使用命令:

/etc/init.d/proxy enable

即可加入开机自动运行了!

网上有些教程推荐在OpenWrt增加使用Autossh软件管理自己的SSH连接,我认为也未尝不可,只是我认为OpenSSH-Client已经可以实现的功能,没必要额外增加软件。

另外,需要注意的是,如果你是njit-client校园网用户,注意开机启动脚本中的START=NUMBER不可以相同,也不宜太接近,因为START参数指明开机启动的顺序,代理的启用必须在认证成功之后,否则网络不可达,但是,njit-client的启动也不宜太前,因为njit-client必须于网卡启动之后才能启动,否则njit-client无法找到网卡。

本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt上使用SSH代理
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐