Android原生OpenVPN使用方法 & Linux SSH帐号权限限制

Android原生OpenVPN使用方法

现在Cyanogenmod和MIUI的ROM都已经原生自带OpenVPN,但是使用方法不是那么方便,前几个月折腾过,今天把方法记录下,需要的人也可以尝试下

我这里以MIUI ROM为例介绍,其实Cyanogenmod也是完全相同的,MIUI也是基于Cyanogenmod开发出来的

原生的OpenVPN设置的最大问题就是证书选择,很多人不知道怎么导入证书

android支持的证书类型是PKCS#12,所以之前我把生成的crt证书放到手机内存块根目录或openvpn文件夹下都找不到

做这些的前提是你有服务器或VPS,并安装了openvpn,或者你购买了Openvpn,并提供商可以帮忙制作PKCS#12证书

我是用自己的VPS安装了openvpn来测试的,这里我不具体说openvpn的安装方法了,网上教程非常多,今天主要说的是如何生成PKCS#12证书,并在手机上设置openvpn

进入到openvpn的证书生成文件夹,通常在/etc/openvpn/easy-rsa/2.0/keys

这里假设你生成的根证书名为ca.crt,而你自己的用户证书为client.crt,私钥为client.key

在目录下运行指令

openssl pkcs12 -export -in client.crt -inkey client.key -certfile ca.crt -out client.p12

运行指令会提示你输入一个export passwd,随便设置一个就行

开始我没设置,直接为空,但是android导入证书时就有问题了,不允许无密码解开PKCS#12证书

其实这指令就是把根证书和你自己的证书和私钥合并到一个PKCS#12证书中,然后把该证书传到手机导入

这里有两个办法,直接把证书放到你的apache或nginx等web服务器的文档目录下,然后直接用手机访问下载地址

这样手机会直接弹出导入证书提示,要求输入导入密码,就是之前运行指令时要求输入的密码
image
输入后确定,会要求为证书命名,默认是一串字符,你可以取一个方便你区分的证书名字,确定即可
image
另一种导入方法是把PKCS#12证书传到手机SD卡根目录,然后设置——》个人——》安全和隐私,找到凭证存储
image
使用安全凭证,默认是没设置过密码的,这里会要求你先设置一个密码,相当于手机报密码一样,只是用处不同
image
然后下面有一个从SD卡安装,选择这个选项,会弹出一个选择框,让你选择需要导入的证书,同样会要求为证书命名,确定后就导入成功了

使用第一种方法,如果你之前未设置过存储凭证的密码,也会先提示设置一个密码

证书导入的步骤就完成了,下面是设置VPN了
image
进入设置——》系统——》VPN——》添加虚拟专用网,选择“添加VPN “OpenVPN””
image
名称随你自己设一个,服务器设置为OpenVPN服务器的ip或者域名
image
用户认证根据你生成用户证书的时候是否选择输入密码,具体方法这里没有提及,我因为讨厌输入密码,没有设置,所以这里不需要开启

设置CA证书,选择后会弹出选择框,里面有你之前导入的证书,选择它
image
设置用户证书,同样选择你之前导入的证书

DNS搜索范围,可设置为8.8.8.8,Google的DNS

然后按下menu,选择高级设置
image
服务端口改为你的OpenVPN端口,默认为1194,很多人装OpenVPN把端口改为53端口,具体原因不在这里解释

使用协议,OpenVPN支持TCP和UDP协议,根据你的OpenVPN服务器设置选择相同的协议

使用设备,一般都是用tun网卡,不需修改

LZO压缩,大部分OpenVPN都会打开这个压缩,如果服务器开启了LZO压缩,手机也必须开启

重定向网关,根据你自己需求而定

远程设置地址,默认开启,由服务器为手机分配一个ip地址

下面的密码算法,密钥大小等不需修改,返回后保存

在VPN设置里多了你刚才设置的VPN账户,点击连接即可

补充一点,如果你的VPN设置里需要TLS验证,无法使用原生OpenVPN

如果要更好的使用OpenVPN,推荐在菜市场里搜索openvpn setting下载安装

因为MIUI本来就支持OpenVPN,也就是本来就有openvpn的库文件,不需要下载openvpn install,这个程序的功能是按照openvpn的库文件,安装一次后即可删除

但是如果你使用Cyanogenmod或者MIUI的ROM,你不需要安装它,直接安装OpenVPN Setting即可

当然你也可以下载安装看看,它会先检测是否已经有openvpn库了,一般都在/system/xbin/openvpn

本文不具体介绍OpenVPN Setting的使用方法了,如果不会设置的朋友可以留言,我改天有空了整理下写出来

作者:小峰JoysBoy@小峰网络遨游记
原文地址:http://xfeng.me/android-original-openvpn-guide/

====================================================================

Linux SSH帐号权限限制

在天朝用SSH来Proxy是家常便饭了,别跟我说你不知道怎么用

我自己也经常在vps上开一些ssh帐号给朋友用,一般都把shell设置为nologin,这样来禁止他们登入服务器

不过有一点很麻烦,密码只能由我设,当然也只能设个简单的,朋友不可能把自己平常用的密码随便告诉我,改密码也只能由我操作

今天看到有人说把这种帐号的shell设置为passwd,登录服务器只能修改密码,其他啥都做不了

试了一下,非常给力啊,这里记录下,顺便也分享一下

首先需要把/usr/bin/passwd加入到/etc/shells中

echo "/usr/bin/passwd" >> /etc/shells

新建账户的方法非常简单

useradd -M -s /usr/bin/passwd username

如果已经建好账户,修改/etc/passwd,把对应帐号最后面的shell改为/usr/bin/passwd即可

搞定,这些账户如果登录服务器,将直接提示修改密码,当然它也只能不停的修改密码

Last login: Mon Aug 15 20:35:17 2011 from *.*.*.*
Could not chdir to home directory /home/xxx: No such file or directory
Changing password for user xxx.
Changing password for xxx
(current) UNIX password:

这里会有个小报错,不过没关系,是由于我在新建账户时加了-M参数,不建立用户目录,的确也没必要建这个目录,所以这里warn忽略好了

如果你也有vps,也有这种给朋友开ssh帐号的事情,非常简易你尝试下

作者:小峰JoysBoy@小峰网络遨游记
原文地址:http://xfeng.me/linux-ssh-account-access-limit/

  1. uxfred
    2012年7月26日18:47

    请问,设置CA证书那个选项是不是就是直接导入文中的ca.crt即可,导入用户证书是导入pkcs12证书还是文中的client.crt证书?谢谢。

    • iGFW
      2012年7月26日21:09

      应该是pkcs12那个

  2. v2ex
    2011年9月17日14:45

    关于OpenVPN for Android,这里有一个详细的说明,可以参考一下: