分类 [ 操作系统 ] 下的全部文章

之前用蓝灯,免费版不稳定,收费版太贵;后来搭建shadowsocks梯子,不错,但是好景不长,在今年的5月35日之前,马上被和谐了,被几个中国学者攻破了,能识别85%的ss通道,它们为此发表了一篇论文,无耻学者;再后来采用shadowsocksr做梯子,大概用了半年,国家70大寿之际又被断了;现在干脆走ssh隧道,用ssh建立起来的隧道是加密的,很难再识别什么特征码了,只能针对ip统计流量了,当同一ip的ssh流量达到一个阈值时开始干扰:降低速度、不定期断开、彻底封死,所以即使使用ssh,也建议定期更换服务器的ip地址。

1、原理

原理很简单,见下图:

 

就是在墙内的客户机上采用ssh工具(如Linux的ssh,windows上的putty.exe、plink.exe等)与墙外的机器上的ssh服务器建立动态连接,形成一个加密的通道(或称隧道),这个通道可以通过长城防火墙(防火墙只看到存在一个ssh连接,但不知道通道里的内容,ssh连接一般会放行),防火墙会统计从墙内到达墙外某个ip地址的加密流量,当在一段时间内,流量到达一个阈值,就会强行封掉这个ip,所以良好的习惯是定期更换墙外机器的ip地址。

前提是你必须在墙外有一台开启了ssh服务的机器,比如租用一台vps,然后安装Linux操作系统,再安装openssh-server就可以了。

2、在windows 上采用plink.exe工具建立隧道

把plink.exe下载到本地硬盘的一个目录下,比如C:\ssh,然后用记事本编辑一个批处理文件plink.bat,此文件也放在c:\ssh目录下,文件内容就是下面一行:

C:\ssh\plink.exe  -batch  -C  -N   -pw  Pass87654321  sunshine@38.84.133.187  -D  127.0.0.1:8070

其中38.84.133.187为墙外机器的ip地址,sunshine为用户名,Pass87654321为密码,8070为本地监听的端口,参数-N指明本链接不是用于交互,-C指明吃药压缩传输,-batch完全杜绝交互,参数-D很关键,开启了动态转发功能,即只要本地到达127.0.0.1:8070的数据包都通过隧道转发到墙外的机器,墙外机器收到数据包再访问互联网,回来的数据按原路返回。为了便于启动,建议在桌面上建立快捷方式,指到c:\ssh\plink.bat。

隧道建立之后,墙内电脑上会监听127.0.0.1:8070,socket5格式,当然具体的端口8070可以随便修改,最好大于1024。电脑上的浏览器设置为socket5的代理,同时DNS查询也走隧道,比如windows 10上的firefox浏览器设置如下(点击右上角的“三”图标,然后点击“Options",滚到屏幕到最后,点击Network Setting下的“Settings...”):

现在你应该可以用火狐浏览器畅真正的游互联网了,比如www.google.com、twitter.com、www.youtube.com什么的。强烈建议你把firefox设置成无痕模式,这样就不会记录任何浏览历史了:点击“三”、“选项”、“隐私和安全”、在历史下面选择“不记录历史”,然后重启浏览器就可以。另外建议在安装chrome浏览器,设置成不用代理上网,专门上国内的网站。

整个通讯过程可以这样描述:你在火狐浏览器里输入网址www.google.com并回车,浏览器回向127.0.0.1:8070发送DNS请求解析网址,plink.exe程序收到从8070端口发来的数据包,经过加密后发向墙外的机器38.84.133.187:22,数据包到达长城防火墙时被检查,发现是ssh通信包,但是不知道里面是什么东西,放行通过,墙外机器收到数据包后经过解密发现是DNS请求,于是向墙外的DNS服务器请求解析,DNS服务器返回www.google.com对应的ip地址,墙外机器把解析到的Ip地址打包加密后发向墙内的电脑,中途到达长城防火墙时又被检查,发现不了问题,于是放行通过,墙内电脑上的plink.exe程序收到数据包后经解密,然后发给浏览器,浏览器拿到谷歌网址的ip后正式向谷歌网站服务器发浏览网页的请求,请求包到达127.0.0.1:8070后被plink.exe程序收到,plink.exe经过加密后发向墙外的机器38.84.133.187:22,中途被长城防火墙检查后放行,墙外电脑收到数据包后解密发现是请求谷歌网站,于是向谷歌网站服务器发起浏览网站的请求,谷歌服务器返回网站内容,墙外电脑收到谷歌返回的数据后加密并发回墙内电脑,中途再次被长城防火墙检查后放行,然后墙内电脑上的plink.exe程序收到数据包,经解密后发给浏览器,浏览器于是显示谷歌网站,哦耶,终于看到了谷歌网站了!

也许有同学问,长城防火墙为什么不能解密ssh协议的数据包呢?告诉你,要破解经ssh协议加密过的数据包,目前的电脑要经过上百年的计算才行,除非用量子计算机!

3、在墙内Linux机器上采用ssh命令建立隧道

Linux操作系统上不用额外安装任何软件,直接采用ssh命令就可以了,命令格式如下:

ssh  -C   -nNT  sunshine@38.84.133.187  -D  127.0.0.1:8070

-C参数开启压缩功能,可以节省流量,-n参数让ssh后台运行,-N参数不执行远程命令,只转发端口,-T参数指示服务器不分配伪tty。

4、通过密钥方式验证身份

上面都是采用用户名加密码的方式登录墙外电脑的,密码很容易泄密,下面讲讲采用对称密钥登录,这是非常安全的了。

首先要在墙外电脑上产生对称密钥,公钥就放在墙外电脑中,而私钥放在墙内电脑中。用sunshine用户登录墙外电脑并执行下面的命令:

ssh-keygen -t rsa -b 4096                                     -----产生密钥对。后面一路回车,直到本命令结束

cat .ssh/id_rsa.pub >>.ssh/authorized_keys                              ----把公钥附加在.ssh/authorized_keys文件的后面

chmod 600 ~/.ssh/authorized_keys

 

把私钥(即文件.ssh/id_rsa)下载到墙内电脑中的C:\ssh目录下(对于windows系统)或~/.ssh目录下并改名为sunshine.key(对于Linux系统),然后在windows上要运行程序puttygen.exe转换私钥格式(Linux系统不要转换),操作如下图所示:

假设转换后的私钥文件名为C:\ssh\plink.ppk,那么在windows上的批处理文件内容改为:

C:\ssh\plink.exe  -batch  -C  -N  -i   C:\ssh\plink.ppk  sunshine@38.84.133.187  -D  127.0.0.1:8070

在Linux操作系统上,先要把~/.ssh/sunshine.key的权限改为600,以后运行下面的命令免密码登录:

ssh  -f  -N  -i  ~/.ssh/sunshine.key  sunshine@38.84.133.187  -D  127.0.0.1:8070

 


注意:如果上面的地址127.0.0.1更换成电脑网卡的ip地址,那么就开启了局域网全代理,其他电脑可以直接使用本机的代理。如果你有一台openwrt路由器,就可以在路由器上运行下述命令(假设局域网的网关是192.168.0.1):

ssh  -qTfnN  sunshine@38.84.133.187 -D  192.168.0.1:8070

这样局域网内的其他设备代理地址采用192.168.0.1,对于苹果手机和平板电脑,可以这样设置:在openwrt路由器的/www目录下放置一个文件proxy.pac,文件内容如下:

function FindProxyForURL(url, host)
{
           return "SOCKS 192.168.0.1:8070";
}

然后在手机的wifi连接上点击右侧的圆圈中一个i的图标,然后滚到屏幕最下面,点击“http代理”下方的“自动”,再输入URL网址:

http://192.168.0.1/proxy.pac

保存即可。


 

 

5、在andriod手机上实现ssh隧道

How to Unlock and Root the Google Pixel 2

1、问题:

远端机安装了ubuntu server 14.04 x64,本地机器安装了windows 8.1,现在要实现从本地机器上登陆到远端机器的图形桌面,实现远程ide软件开发。

2、解决方法:

在远端机器上安装轻量级桌面xfce,如果是局域网内,也可以考虑安装其他重量级图形桌面软件,如gnome。具体操作如下:

如果没有设置机器名,那么先设置机器名:
echo "myPC" >/etc/hostname
hostname -F /etc/hostname

如果需要中文而之前没有安装的话,则安装中文:
apt-get -y install fonts-wqy-zenhei fonts-wqy-microhei apt-get install language-pack-zh-hans

修改~/.profile,把mesg用if语句包含起来(否则登陆时会报错:stdin: is not a tty):
if `tty -s`; then
mesg n
fi

可以采用下面两种方法之一,方法2好于方法1。

1)、采用X2Go登陆软件/

安装xfce:
apt-get install xfce4

安装x2goserver:
apt-get install python-software-properties software-properties-common
apt-add-repository -y ppa:x2go/stable
apt-get update
apt-get install x2goserver x2goserver-xsession

重启远端机器:
reboot

windows上安装x2goclient:
从这里http://code.x2go.org/releases/X2GoClient_latest_mswin32-setup.exe下载安装包,然后安装,在桌面上产生快捷方式 X2Go Client。

开始远程图形登陆:
双击桌面上的X2Go Client启动

确认后登陆提示输入账号和密码,登陆成功后显示如下画面:

X2Go走ssh协议,安全没问题,但是xfce有点简陋,同时x2go不稳定。建议采用下面的方法:

2)、采用nomachine登陆软件和lxde桌面

在远程机器上执行:

wget http://download.nomachine.com/download/5.1/Linux/nomachine_5.1.26_1_amd64.deb

dpkg -i nomachine_5.1.26_1_amd64.deb       <--如果报缺少依赖包,执行 apt-get -y -f install

apt-get -y install lxde

reboot

nomachine采用的端口比较多,如果开启了防火墙,强烈建议修改nomachine配置文件/usr/NX/etc/server.cfg中的参数:
EnableFirewallConfiguration 1

这样nxserver程序会自动设置防火墙。

windows机器上下载http://download.nomachine.com/download/5.1/Windows/nomachine_5.1.26_1.exe并安装它,在桌面上产生快捷启动方式NoMachine。双击它登陆:

适合于windows 8、Windows Server 2012、Windows Multipoint Server 2012操作系统,打上补丁之后就支持多个用户同时登陆,同时登陆的用户数没有限制,而且还支持统一账户同时登陆多次。另外还有win7、WinXP、Windows Server 2008、Windows Server 2003等操作系统的多用户补丁。需要的朋友请邮件联系:liangming.wang@gmail.com

I have concurrent RDP patchers for windows series Operating System, such as Windows Server 2012, Windows Multipoint Server 2012, Windows Server 2008, Windows Server 2003, Windows 8, Windows 7, Window XP.  And the users is unlimited. Please contact me by Email to get it: liangming.wang@gmail.com

 

Linux命令使用技巧 2012年10月23日

1、把一个目录包括其子目录中的所有文件file1改名为file4:
find .  -name  file1 -exec rename file1 file4 {}  \;
引申用法:
find . -name foo? -exec rename foo foo0 {} \;
find . -name foo?? -exec rename foo foo00 {}  \;
----即把目录的下所有foo1,foo2,foo3,foo4,....,foo278改为foo001,foo002,foo003,....,foo278

2、采用vim非交互编辑文件:
首先把vim的编辑命令保存到一个文件中,比如cmds.txt,然后采用如下方式运行vim非交互编辑文件file.txt:
vim  -s  cmds.txt   file.txt

比如我要在SHELL程序中替换文件abc.c中全部的open为fopen,那么cmds.txt的内容如下:

:g/open/s//fopen/g
😡

然后把下面的语句加到SHELL程序中即可:

vim  -s  cmds.txt   abc.c

 

 

在教育培训机构的Linux教学过程中,学生往往要做安装软件的实验,如果直接把DVD安装光盘的文件拷贝到每一台学生机的硬盘里并做成本地安装源,势必会浪费大量的硬盘空间,如果在局域网的一台电脑上搭建安装源,那么学生同样能达到快捷安装软件的目的。

Windows Server 2008 R2 Server Core 安装完成后,没有图形界面,只显示一个命令窗口供我们输入命令,这一点微软借鉴了Linux的字符界面模式,通过输入命令来管理计算机可以达到非常高的效率,但前提是我们必须熟悉这些命令。

阅读全文

内核映像zImage是由一个压缩后的内核piggy.o,连接一段初始化及解压功能的代码(head.o misc.o)组成的。

一、文件linux/arch/arm/boot/compressed/head.S是linux内核启动过程执行的第一个文件——主要是解压内核、重定位代码并且跳转到真正的内核。

手工解压vmlinuz 2011年6月30日

一、2.6内核

1、解压vmlinuz

# od -t x1 -A d vmlinuz| grep "1f 8b 08 00"

0013920 f3 a5 fc 5e 8d 83 80 b8 38 00 ff e0 1f 8b 08 00

13920+12=13932

# dd if=vmlinuz bs=1 skip=13932 |zcat > vmlinux
# strings vmlinux|grep /sbin/
# strings vmlinux|grep 'init='                         -----查看第一个执行的程序,默认是/sbin/init
# strings vmlinux|grep 'Linux version'         -----查看内核版本号

2、解压initrd.img

# cp initrd.img /tmp/initrd.img.gz
# cd /tmp/ && gzip -d initrd.img.gz
# mount -o loop initrd.img /mnt            ----2.4内核
# mkdir initrd && cd initrd && cpio -ivmd <../initrd.img         ---2.6内核

Linux常用命令用法 2011年3月11日

一. 启动,关机,登入,登出相关命令

<exit> 登出
<shutdown> 温和关机或者重启。 shutdown -h now; shutdown -r now
<halt> 立即关机,较容易破坏文件系统。
<reboot> 重启动
<sync> 把内存里的内容写入磁盘

从http://epidermis.tuxfamily.org/下载美化包并安装,然后点击主菜单“应用程序-->系统工具-->Epidermis”启动桌面美化工具,然后点击“Find more”找出宣布到美化包,我喜欢“Mac4Lin”包,勾选它并点击“应用”开发安装。