mac下安装php-memcached提示configure: error: memcache support requires ZLIB. Use –with-zlib-dir= to specify prefix where ZLIB解决办法

 

checking for the location of zlib... configure: error: memcache supportrequires ZLIB. Use --with-zlib-dir= to specify prefix where ZLIB 

brew install zlib
brew link --force zlib

默认用brew 安装zlib提示有可能会跟系统的zlib库冲突,没有吧zlib库link到系统目录
重新安装xcode,然并卵

xcode-select --installbrew install php{xx}-memcache

批量从服务器执行命令脚本

#! /bin/bash

machine_list=serverList

lineno=`cat $machine_list |wc -l`;

for((i=1; i<=lineno; i++)) {
line=`sed -n “$i p” $machine_list`;
machine=`echo $line | gawk -F” ” ‘{ print $1 }’`;
path=’/var/log/httpd/logs/lumen.log’;
file=`echo $path`;
echo “INFO: “$file”@”$machine;
ssh $machine “df -h;echo ;echo”;
}
exit 0;

原理就是循环一个ip列表
ssh并执行命令

精简mac ox

忽然发现mbp的250GB硬盘只剩下20GB左右了,遂准备清理下硬盘,打开finder看一下几个常用目录右键查看简介,哪个目录的占用空间最大,先把应用程序里暗黑三给删掉了,mac下还是纯粹做开发机用的了,玩放到台机上去玩,应用程序里按文件大小排序,发现Xcode居然是个巨无霸,其他应用普遍在300MB以下,它却占了8GB,右键显示内容,进去后Contents/Developer/Platforms删掉watch、ios虚拟机的目录,反正就算开发我也会在真机上做的,删除,倾倒废纸篓,xcode尺寸直接少了5GB。应用程序最终占用了10~20GB,毕竟常用的软件还是不少。

虚拟机是我的必备装备,把多余的linux和windows虚拟机删掉,80GB 腾出来了….

homebrew缓存路径

由于在终端下载速度太慢,遂考虑先通过地址下载文件后手动放到 缓存目录
$wget https://homebrew.bintray.com/bottles/mysql-5.6.26.yosemite.bottle.tar.gz
$cd /Library/Caches/Homebrew/
$mv ~/mysql-5.6.26.yosemite.bottle.tar.gz ./
$brew install mysql

done!

==> Downloading https://homebrew.bintray.com/bottles/mysql-5.6.26.yosemite.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/mysql-5.6.26.yosemite.bottle.tar.gz
==> Pouring mysql-5.6.26.yosemite.bottle.tar.gz
==> /usr/local/Cellar/mysql/5.6.26/bin/mysql_install_db –verbose –user=zouyi –basedir=/usr/local/Cellar/mysql/5.6.26 –
==> Caveats
A “/etc/my.cnf” from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
mysql -uroot

To have launchd start mysql at login:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don’t want/need launchctl, you can just run:
mysql.server start
==> Summary
🍺 /usr/local/Cellar/mysql/5.6.26: 9854 files, 339M

Mac下MySql卸载方法

Mac下MySql卸载方法

mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事。
网上搜了一下,发现给的方法原来得手动去删。
很多文章记述要删的文件不完整,后来在stackoverflow这里发现了一个遗漏的地方,所以将完整版记述在这里,以供查阅。
先停止所有mysql有关进程。

最后这条很多文章都丢了,切记切记。

 

sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My*vim /etc/hostconfig and removed the line MYSQLCOM=-YES-rm -rf ~/Library/PreferencePanes/My*sudo rm -rf /Library/Receipts/mysql*sudo rm -rf /Library/Receipts/MySQL*sudo rm -rf /var/db/receipts/com.mysql.*

搭建自己的公开CentOS源

背景:公司的网络实在是有够变态的,有层http代理,没法好好上网,装个linux做实验的时候各种软件下不了,不太懂运维,偶然想到去看局域网里的linux服务器是怎么更新的,果然挖出一个内网的yum源,顺便就想到自己搭建一套http源,从公网里定期同步更新一下,用到的时候就很爽了。

上手:

首先呢,把这个服务器扔到虚拟机里了,远程操作和扩展硬盘会比较容易一些,而且平时挂在那也不会费太多资源。

安装了Centos 6.5

分配两个网卡(一个自动,一个对接局域网)和两块硬盘,其中一个硬盘挂载到/var

找到了国内的高校源 bit、ustc

http://mirror.bit.edu.cn/web/

http://mirrors.ustc.edu.cn/

他们都提供了rsync服务

在linux上安装rsync客户端

我把目录放在/var/www/pub下

依次创建目录层级,只同步我需要的源可以有效减少磁盘占用,不然一个源同步下来我的硬盘就报废了

rsync -avrtH rsync://mirrors.ustc.edu.cn/centos/6/ /var/www/pub/centos/6/
rsync -avrtH rsync://mirrors.ustc.edu.cn/rpmfusion/free/el/ /var/www/pub/rpmfusion/free/el/
rsync -avrtH rsync://mirrors.ustc.edu.cn/rpmfusion/nonfree/el/ /var/www/pub/rpmfusion/nonfree/el/
rsync -avrtH rsync://mirrors.ustc.edu.cn/epel/6Server/x86_64/ /var/www/pub/epel/6Server/x86_64/

同步了几天,同步完成后看了一下虚拟机的硬盘文件还不到100GB,比预想的小很多,分配磁盘时专门划出了200GB呢。

安装apache  yum install -y httpd

关闭selinux  vim /etc/selinux/config selinux=disabled

最后有个软件createrepo可以指定目录生成索引,大家自行百度就知道了

Linux下GBK->UTF-8文件编码批量转换命令

Linux下GBK->UTF-8文件编码批量转换命令 – a280606790的专栏 – 博客频道 – CSDN.NET.

在工作中,经常会遇到使用操作系统不一样的环境,从而导致在不同环境下的文件编辑的编码是不一样的,Windows默认是GBK编码格式,Linux默认是UTF-8的格式,这样就会出现把GBK编码的文件拷贝到Linux下出现乱码情况,很是让人头疼,下面给大家介绍下GBK->UTF-8文件编码批量转换。

Linux命令-enca 查看文件的编码

Enca语法

Usage: enca [-L LANGUAGE] [OPTION]… [FILE]…
enconv [-L LANGUAGE] [OPTION]… [FILE]…
Detect encoding of text files and convert them if required.
Enca用法

$ enca -L zh_CN file 检查文件的编码
$ enca -L zh_CN -x UTF-8 file 将文件编码转换为”UTF-8″编码
$ enca -L zh_CN -x UTF-8 file1 file2 如果不想覆盖原文件可以这样
除了有检查文件编码的功能以外,”enca”还有一个好处就是如果文件本来就是你要转换的那种编码,它不会报错,还是会print出结果来, 而”iconv”则会报错。这对于脚本编写是比较方便的事情。

转换单个文件的编码

$ enca -L none -x utf-8 index.html
转换多个文件的编码

$ enca -x utf-8 *
Linux文件名编码批量转换–convmv

Convmv语法

$ convmv -f 源编码 -t 新编码 [选项] 文件名
Convmv 常用参数

-r 递归处理子文件夹
–notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
–list 显示所有支持的编码
–unescap 可以做一下转义,比如把%20变成空格
示例

转换一个文件由GBK转换成UTF-8

convmv -f GBK -t UTF-8 –notest utf8 filename
GBK->UTF-8文件编码批量转换脚本

$ find default -type f -exec convmv -f GBK -t UTF-8 –notest utf8 {} -o utf/{} \;
使用iconv 转换

Iconv语法

iconv -f encoding -t encoding inputfile
示例

单个文件转换

$ iconv -f GBK -t UTF-8 file1 -o file2
批量转换

$ find default -type d -exec mkdir -p utf/{} \;
$ find default -type f -exec iconv -f GBK -t UTF-8 {} -o utf/{} \;
这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。

Linux安全检查方法

检查系统密码文件,查看文件修改日期

[root@fedora ~]# ls -l /etc/passwd

查看passwd文件中有哪些特权用户

[root@fedora ~]# awk -F: ‘$3= =0 {print $1}’ /etc/passwd

查看系统里有没有空口令帐户

awk -F: ‘length($2)= =0 {print $1}’ /etc/shadow

检查系统守护进程

cat /etc/inetd.conf | grep -v “^#”

检查网络连接和监听端口

netstat –an

netstat –rn

ifconfig –a

查看正常情况下登录到本机的所有用户的历史记录

last

检查系统中的core文件

find / -name core -exec ls -l {} ;

检查系统文件完整性

rpm –qf /bin/ls

rpm -qf /bin/login

md5sum –b 文件名

md5sum –t 文件名

查找是否有后门

cat /etc/crontab

ls /var/spool/cron/

cat /etc/rc.d/rc.local

ls /etc/rc.d

ls /etc/rc3.d

find / -type f -perm 4000

——————————————————————————分割线——————————————————

1.Accounts检查

# less /etc/passwd

# grep :0: /etc/passwd

注意新的用户,和UID,GID是0的用户.

2.Log检查

注意“entered promiscuous mode”

注意错误信息

注 意Remote Procedure Call (rpc) programs with a log entry that includes a large number (> 20) strange characters(-^PM-^PM-^PM-^PM-^PM-^PM-^PM-^PM)

最后一条目前还没理解,也没碰到过,请指点.

3.Processes检查

# ps -aux

注意UID是0的

# lsof -p 可疑的进程号

察看该进程所打开端口和文件

4.Files检查

# find / -uid 0 –perm -4000 –print

# find / -size +10000k –print

# find / -name “…“ –print

# find / -name “.. “ –print

# find / -name “. “ –print

# find / -name “ “ –print

注意SUID文件,可疑大于10M,...,..,.和空格文件

5.Rpm检查

# rpm –Va

输出格式:

S – File size differs

M – Mode differs (permissions)

5 – MD5 sum differs

D – Device number mismatch

L – readLink path mismatch

U – user ownership differs

G – group ownership differs

T – modification time differs

注意和这些相关的 /sbin, /bin, /usr/sbin, and /usr/bin

平时养成安装第三方文件时check MD5的习惯,呵呵,要不太恐怖了

运行的时候会出很多5或者missing的提示,如果不是上面及格目录的,不用太注意

6.Network检查

# ip link | grep PROMISC

正常网卡不该在promisc模式,当然安全server除外,否则可能是有人入侵在sniffer

# lsof –i

# netstat –nap

察看不正常打开的TCP/UDP端口,嘿嘿,需要平时注意,比较,好像我没这样用心过:)

# arp –a

这个更恐怖了,难道叫人document所有的MAC地址先

7.Schedule检查

注意root和UID是0的schedule

# crontab –u root –l

# cat /etc/crontab

# ls /etc/cron.*

正则表达式的问号|nginx rewrite 匹配问号(?)

今天再给bbpcn.net添加rewrite功能时遇到一个难题。

要把这个地址http://bbpcn.net/bb-admin/admin-base.php?page=4&plugin=mass_edit

rewrite成这个http://bbpcn.net/bb-admin/admin-base.php/page/4?plugin=mass_edit

考虑到通用性我的语句为

rewrite ^/bb-admin/admin-base.php/page/([0-9]+)&plugin=(.*)$ /bb-admin/admin-base.php?page=4&plugin=$2 last;

但是reload nginx后一直在404,于是猜测是正则问题。

之前写的rewrite规则都比较简单,这次多了些特殊符号,“.”、“?”。按照我那破破的C语言水平,我试着添加转义符号“”,不过依然不起作用,开始在Google上以多个关键字搜索,终于让我找到方法了。

这个问题apache和nginx可能都存在。

只说解决方法吧。点号可以用反斜杠转义,问号后面的字符串用自带变量处理。最终我的rewrite规则改写为如下即可。

rewrite ^/bb-admin/admin-base.php/page/([0-9]+)$ /bb-admin/admin-base.php?page=$1&query_string last;

UltraEdit text editor for Linux 1.0

UltraEdit是windows下是知名的反汇编软件,也可用作文本编辑器,今天说的则是他在linux平台下发布的文本编辑器啦。
fedora下
redhat
ubuntu

简单翻译一下官方介绍:
支持的系统环境:

现有的UltraEdit for Linux发行版本支持以下发行版的linux(32位和64位):

  • Ubuntu 8.04, 9.04, and 9.10
  • Fedora 11 and 12
  • OpenSUSE 11.1 and 11.2
  • CentOS/RedHat Enterprise 4.8 and 5.4

对于其他发行版官方提供32位和64位版tar包下载. 虽然有tar.gz可使UltraEdit安装在任何linux发行版上,官方却不提供对安装和依赖性的说明,而只对上述发行版提供支持。

免费试用
安装完后,你将有30天试用时间,之后需要购买许可证继续试用程序。

购买UltraEdit for Linux

如果试用满意点此链接购买此产品。 purchase a license.

Fedora 12下载:http://www.ultraedit.com/files/uex/Fedora/12/UltraEdit-1.1-0.0.fc12.i686.rpm  (32位)

http://www.ultraedit.com/files/uex/Fedora/12/UltraEdit-1.1-0.0.fc12.x86_64.rpm  (64位)

Tar包下载:

http://www.ultraedit.com/files/uex/Other/uex-1.1.0.0_i386.tar.gz(32位)

http://www.ultraedit.com/files/uex/Other/uex-1.1.0.0_amd64.tar.gz(64位)

更多版本下载地址就不一一贴上来了:http://www.ultraedit.com/downloads/uex.html

为日常用Fedora进行优化

一、用easylife优化。http://easylifeproject.org/
It's For Fedora 12
比较遗憾的是此优化工具为了保证文件准确性经常要从他提供的地址下载,而他的服务器都在国外,用WGET下载速度也只有几KB/S而已。可优化选项只有那么几个,我用了KDE桌面,几个GNOME的选项勾上不起作用。昨晚开始宿舍晚上不断电了,所以乘着晚上网速好把几个觉得有必要用的选项装上了。NV的显卡驱动一直没敢装,Fedora12默认集成的NV显卡驱动使得显示效果大幅提升却不支持3D,官方驱动直接装上就进不了桌面了,这个问题暂时不敢尝试。。。。总之经历一个晚上的安装,Rhythmbox可以放mp3了,电影播放器也可以放多种格式了,非常方便,安装了vlc,看电影也不再愁了。
二、PPStream。http://linuxtoy.org/archives/how-to-setup-ppstream-on-fedora.html
根据LT的教程装完了后电影播放器侧边栏就一直显示更新分类列表中,可能pps的官方都忘了他们还放出国linux版的文件吧?
后来看了看文章后面的评论又去谷歌了一下GMLive

qsopcast。挺好,都有google code主页,找起来挺方便。一会再试试。

先看GMlive,是个国人团队制作的前端,有人做过rpm打包,但是没有Fedora12的,F11的和12不兼容。
去他们的Google code页下载源码编译
#./autogen.sh
#make
#make install
出错了
checking for PACKAGE… configure: error: Package requirements (gtkmm-2.4 >= 2.6.0 libxml-2.0 >= 2.6.0) were not met:

No package ‘gtkmm-2.4’ found
这句话我是真没看懂。。。。研究半天gtkmm24默认安装了,又安了gtkmm-utils也不行,只好作罢。
三、美化,我对此道一向不很专注,大概认为简朴最高吧,换了张故剑奇谭的最新壁纸就满足了,KDE本省已经很漂亮很完善了。

雨林木风推出了高仿xp。。。。

YLMF买了xp.com之后终于有动作了,今天cnbeta报道打开xp.com转到了http://www.ylmf.org/
Ylmf OS高仿xp,以前大家都不看好linux走windows之路,但ylmf却走上了这条路,能走多久多长远,让我们拭目以待。

ylmf OS高仿windows XP
ylmf OS高仿windows XP

雨林木风开源操作系统(Ylmf OS)正式上线
但是为何没看到它使用的是何种开源协议呢?

清理Linux内存如此简单

#echo 1 > /proc/sys/vm/drop_caches

#echo 2 > /proc/sys/vm/drop_caches

看了一下,能够有效释放内存,默认是0
所以我操作完后又加了条命令
#echo 0 > /proc/sys/vm/drop_caches
是否会影响稳定性有待观察

Fedora 12 alpha 发布

f12alpha中午在CB看到Fedora 12 alpha发布了。顺便上官网看看12的新特性

原本2009-08-18发布 Alpha 推迟到2009-08-25

2009-09-22软件的翻译截止日期

2009-10-13 Beta 版发布

2009-11-10 不出意外Fedora 12 正式版发布

特性表中显示了各个部件完成情况。100%的应该都应用到这个alpha版里面了。

那么你将会获得更好的网络摄像头使用体验

电源管理更强大

虚拟网络接口管理

支持IPV6的网络管理程序

KDE 4.3已经发布了,所以我建议想要稳定的还是使用这个桌面版

更多特性到官方去查看吧http://fedoraproject.org/wiki/Releases/12/FeatureListkde430-desktop

终于完成了一次LFS 6.3

http://www.linuxsir.org/bbs/thread322894.html

上面有中文的速成参考手册。

即便如此我仍然使用了近2周才完成这个任务。

其实在去年就有完成一次的想法了,但是那时候刚刚接触linux就想在Fedora下直接搞,充分利用硬件资源,结果经过2~3天的连续不关机运行,只完成不到五分之一的软件编译后就出错了。环境不同出错的几率真大。由于天天上课并没有完整时间来进行我就放弃了,放假以来本来没打算做这个的,但放假了一半后我去给电脑加了根1G内存后,老电脑可以多同时进行几个任务了,于是装上了精简版的VM6,开始了这个痛苦并快乐的长时间折磨。每晚为了能把一个命令完成后再睡觉经常等到1、2点。被老妈吵了好几次。。现在总算熬出头了。BLFS不打算弄了。这次本来就是想知道这个到底要多久才能弄一遍。时间真是够长,我看的是速成手册,曾有两天想放弃了,因为那个帖子太长了。。。昨天给自己放了个假看了一天龙珠·改。今天把GRUB之后的部分全部完成了。全过程除了使用sda的硬盘与教程中hda不同之外未改变其他什么参数,所以异常顺利,而且期间掌握了如何在livecd中启动网卡以及启动SSHD。

先写到这吧。感觉学了一点东西,又觉得学的不多,也许是我太贪心吧。~ ~

VMware下网络选择详情

主机为WindowsXP系统,VMware虚拟机里安装Linux操作系统。安装完VMware后,主机的网络连接里面出现了两个新的连接,即VMware Network Adapter VMnet1和VMware Network Adapter VMnet8。虚拟机里安装的系统就是靠这两个虚拟网卡来联网的。

主机上类似antiarp  防火墙一定要关掉 否则虚拟机不能上网

有以下几种可选方法:
1、Bridged(网桥)方式:
如果主机是通过局域网上网的,可让虚拟机使用与主机网段、网关和DNS等的相同的设置,选用一个有效的局域网IP即可。

桥接方式可实现

虚拟机<—>主机
虚拟机<—->互联网通信(主机与虚拟机可看成是同一局域网的两台机)。

但桥接需要一个不同于原主机上的另外一个独立的IP地址,这对于有些情况(IP和MAC绑定,网管不同意),比较难办到。并且主机拔掉网线后,虚拟机无法与主机通过网络的方式进行通讯。而后面几种没这个问题。所以不太使用桥接方式。

多网卡桥接
当我有双网卡时,虽然VMnet0:Bridged to an automatically chosen adapter(在VMware的Edit ->Virtual Network settings… 打开Virtual Network Editor)

但是,我尝试了一下,虚拟机只可桥接“本地连接”(VIA网卡),不能桥接“本地连接2”(Realtek网卡)

在Virtual Network Editor ->  Automatic Bridging 选项卡里

若我们想桥接“本地连接2”(Realtek网卡)需要在“Exclude adapters” 里add “VIA网卡”(本地连接),这样“本地连接2”就可以桥接了。但是“本地连接”(VIA网卡)却不可以了,即使在“Exclude adapters” 里Remove “VIA网卡”也不行,我猜测 VMware其实只支持一个最初未被排除的网卡桥接!

没关系,我们可以在 Virtual Network Editor ->  Host Virtual Network Mapping 选项卡里,VMnet2选择Realtek网卡

这时,我们回到Virtual Network Editor ->  Automatic Bridging 选项卡,发现VMnet0 把 Realtek网卡排除了

桥接“本地连接”(VIA网卡)时,VMware选择VMnet0,

桥接“本地连接2”(Realtek网卡)时,VMware选择VMnet2

虚拟机上网络相应的设置,就可以了。

2、NAT方式:
使用VMware提供的NAT和DHCP服务,虚拟机使用主机中的虚拟网卡VMnet8作为网关,并且TCP/IP设置需遵循程序中关于vmnet8的DHCP和NAT设置,如IP必须在其DHCP设置的StartIP和EndIP之间,网关需使用其NAT设置的Gateway IP。
NAT方式可实现

虚拟机<—>主机 通信,但是
虚拟机—>互联网

即只能够虚拟机访问互联网,但是若想把虚拟机作为服务器,让互联网访问,不可以。
但是如果有多个网卡,虚拟机可以不用更改设置,就可以同时访问多个网卡连接的互联网。

3.host-only方式 :
默认使用vmnet1,将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同
例如 vmnet1 ip :192.168.101.1
虚拟机设置: ip :192.168.101.100 gateway : 192.168.101.1
这样就实现了
虚拟机<—>主机 通信,
但是 虚拟机<—>互联网 仍无法通信

4、共享主机的Internet连接的方式(如果主机是Win98系统可能不适用):
在主机的“本地连接”属性的高级里面共享Internet连接。如果选的是VMnet1虚拟网卡,则在VMware的Ethernet设置需选用Host-only;如果选VMnet8,则Ethernet设置需选用NAT。共享连接后,那个被选中的虚拟网卡的IP会默认被设为192.168.0.1(如果主机也是通过局域网的 192.168.0.1网关上网的,则需把这个虚拟网卡设置为不同的网段IP,如192.168.1.1)这时候虚拟机里面就可以通过把这个虚拟网卡作为网关来上网了。实际上是一个简单的路由NAT,所以NAT方式就不讨论了,我们只以Host-only为例。
共享host-only方式,可实现虚拟机<—>主机 通信,但是 虚拟机—>互联网 即只能够虚拟机访问互联网,但是若想把虚拟机作为服务器,让互联网访问,不可以。

被选中的虚拟网卡的IP会默认被设为192.168.0.1,当然也可以更改。而且共享连接取消后,还会变回到共享连接前的网络设置。

在虚拟机linux里,设置网络:

总结:

共享连接方式和NAT方式,都可以实现虚拟机<—>主机 , 虚拟机—>互联网 通信,NAT方式设置简单,且可以实现同时访问多个物理网卡。
桥接方式可实现虚拟机<—>主机 虚拟机<—->互联网 通信,若虚拟机作为服务器,只有这种方式可行。但需独立的IP给虚拟机,且若物理网卡连接断开,虚拟机与主机也不能连接。
host-only方式只实现虚拟机<—>主机 通信 ,一般不单独采用。

本文由安全中国文章编辑

搭建LFS之ssh连接虚拟机的livecd

LFS=Linux From Scratch!

如果你想要快速对linux有深入了解,只要你肯下功夫,1个星期把LFS编译出来你就能入门了~~

之前是没想用livecd的,但是我在Fedora,Debian上都试着编译过LFS,总是失败,我把原因归咎于系统地软件版本对不上,要想第一次编译顺利,还是推荐虚拟机+livecd的方式。另外linuxsir论坛里最新的中文版指导书见置顶帖,针对LFS 6.3的~~

lfs livecd 6.3包含了sshd,因此我们主要是要配置虚拟网卡和启动sshd。

但首先我们要配置root密码,以免遇到安全问题

#passwd

接着配置虚拟网卡,请先确认你的虚拟机使用的网络类型,我选择了host-only,让虚拟机只和本机访问

#net-setup

选择eth0

选择dhcp

#ifconfig -a

看到eth0后面的 ip了吗?那就是你要来连接的ssh的ip地址

#/etc/rc.d/init.d/sshd restart

不管现在sshd是否开开,重启即可

参考文章:

http://blog.chinaunix.net/u/11065/showart_429939.html

http://www.cnblogs.com/benben7466/archive/2009/03/31/1425866.html

http://www.linuxsir.org/bbs/thread328309.html

使用ssh -D保证网络畅通

更新:
直接使用ssh -D,不需要使用tinyproxy
依据:
man SSH
-D [bind_address:]port
Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh will act as a SOCKS server

如:
ssh -D 192.168.0.1:8133 account@sshserver
就可以建立一个sock proxy.

后在浏览器的sock proxy设置就行了。
同时也可使用priovxy转乘http,然后和squid配合。

原文:

回到北京,通上网后,就发现一个上国外的网站特别慢,而且一些网站由于GFW的原因不能访问,这个很不方便,所以对这个进行了一些研究,现在把经验分享给大家。

主要的考虑:
1. 通过GFW,正常访问wikipedia, 和国外的新闻网站。
突破GFW的方法有
(1)tor,由于P2P,且数据加密,GFW对它没有什么太大的办法,但不排除有人,专门开诱引服务器的可能。
(2)访问cgi-proxy之类的东西, (与cgi-proxy之间使用ssl连接),
(3)使用ssh, 在linux爱好者中,有不少人在国外有host, 这个也应该是一个不错的方法

2。尽可能快的加速访问国际网的速度(现在慢有人说是光纤的原因,可以光纤事故已经有一个月了,到底要到什么时候才能修好。
这个我考虑使用多个proxy同时做代理的方法,

3.接入本地网站的计算机,无需做特别的设置就可以访问使用上面的功能。
这个一般使用iptable的功能,把80端口的数据包转发到代理服务器的端口。

现在配置的

上面是ssh tunner的过程,
host1上一般需要运行一个很小的代理程序,这里使用的是tinyproxy
他可以在一般用户方式下执行
我的配置文件:

User xxx
Port 62888
Listen 127.0.0.1
Timeout 600
Logfile “./tinyproxy.log”
LogLevel Notice
PidFile “./tp.pid”
MaxClients 30
MinSpareServers 3
MaxSpareServers 10
StartServers 5
Allow 127.0.0.1
ConnectPort 443
ConnectPort 563

2007 1/29 更新:
两个注意点:
1. port需要是没有用过的, 不要使用大于65536的port,使用的port也不能是其他程序已经使用的。
2. tinyproxy的执行方法:
tinyproxy -c tinyproxy.conf -d
不加 -d的话是不行的。 实际的执行过程中,我是执行了一个screen,在screen的一个窗口上执行了上面的命令。

在另一个窗口上做测试。

3。 测试方法:
可以使用screen.
配置
.wgetrc
http-proxy=127.0.0.1:62888
然后 wget xxx

如上图的示在本地开启多种连接。
/etc/hosts
192.168.0.1 sshtunnerl1
192.168.0.1 sshtunnerl2
192.168.0.1 tornetwork

/etc/squid/squid.conf

加入

cache_peer sshtunnel1 parent 8119 7 no-digest no-netdb-exchange
cache_peer tornetwork parent 8118 7 no-digest no-netdb-exchange

acl wikidomain dstdomain .wikipedia.org
acl voadomain dstdomain .voanews.com
acl sfdomain dstdomain .sf.net
acl sourceforgedomain dstdomain .sourceforge.net

cache_peer_access sshtunnel1 allow wikidomain
cache_peer_access sshtunnel1 allow voadomain
cache_peer_access sshtunnel1 allow sfdomain
cache_peer_access sshtunnel1 allow sourceforgedomain

cache_peer_access sshtunnel1 deny all

todo:
1。怎么写好规则squid,由于 squid restart比较费时,所以不知道有没有方法可以在不重启squid的情况下更新
规则。

已经解决, 使用/etc/init.d/squid reload, 一个低级的拼写错误使我误认为squid不支持reload(感谢achaoge)
achaoge
还提出了cat squid.conf.orig acl_rules > squid.conf && reload的方法,可以把关于对不同domain的配置,集中到一个文件来。这样如果有人愿意就可以写出很方便的web based的规则编辑工具。

2。怎样实现,第三种方法,就是从internet取得大里的代理,验证后,动态修改squid的规则。

利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问

http://www.chedong.com/blog/archives/001246.html
参考原文:http://thinkhole.org/wp/2006/05/10/howto-secure-firefox-and-im-with-putty/

加密传输的机制如下:

/ foo.com

浏览器 <==secure tunnel==>ssh server – bar.com

example.com

浏览器先通过加密通道链接到一台服务器上,然后通过这个服务器再访问整个互联网。主要的用途就是这个绕道访问。具体你需要通过加密通道绕过谁? 谁用谁知道……
具体配置过程:
SSH登录工具Putty的登录设置中配置tunnel,目标设置为Dynamic,添加一个端口7070,再按Add,一个动态转发端口就实现了;

然后用相应帐号ssh登录后:除了登录的终端窗口意外,本地的7070连服务器的22端口之间就有了一个SSH加密的转发通道了。

为了方便切换,可以使用FireFox的SwitchProxy tool插件,设置socks代理通过本地的127.0.0.1:7070 进行传输。

MSN的机制类似:就是在连接配置中设置sock5 加密代理。

附:
获得国外的SSH帐号或者有Dreamhost虚拟主机的可以增加ssh用户:都可以用类似机制进行加密访问。

感谢number5:
更简单方便的setup方式是使用 putty的后台命令行程序plink
plink -N username@remote.ssh.server -D 127.0.0.1:7070
其中 -N 表示不需要shell
username@remote.ssh.server 换成你ssh帐户名和主机域名或者地址
或者替换成 -load sessionname 也可以,用dreamhost上的帐号试了一下,真的很快
如何在Windows下使用密钥方式登录Linux服务器:
如果设置需要基于密钥的登录(如果不设置密钥密码,就可以自动登录了),
我没有试成使用puttygen生成的密钥(公钥/私钥)直接部署在Linux服务器上。目前成功的方法是:先在服务器上用服务器上用./ssh-keygen生成密钥对,将公钥 id_rsa.pub >> 部署到要登录到的服务器上:/home/username/.ssh/authorized_keys 中,密钥在Windows客户端下使用:将密钥 id_rsa下载到本地,然后用puttygen导入id_rsa 另存转换为putty格式的密钥id_rsa.ppk即可。然后使用 plink -i c:pathtoid_rsa.ppk username@example.com方式登录。

注意:
加密通道和网站是否提供https没有直接的关系,https是指服务商直接向客户提供的加密,例如:GMail: https://mail.google.com/mail/, GReader: https://www.google.com/reader/view/,从ssh server到服务网站之间仍然是明文的http传输;
加密通道和匿名不匿名访问网站也没有直接关系。
ssh_tunnelling

捐献1$,获得国外主机登录帐号:SilenceIsDefeat.org
Che Dong (2006年11月25日 18:37) | 评论(5) | 引用通告(2)
http://silenceisdefeat.org/ 是一个非营利组织(创建于2000年):支持言论自由的公共Unix主机系统, 捐献(基于PayPal: 最高50$)后可以获得一个Unix系统帐号。 目前帐号包括:50MB用户空间, http访问(http://silenceisdefeat.org/~username), ssh, sftp, imap-ssl mail, pop3-ssl mail. 加密的即时通讯端口:IRC, AIM, MSN, ICQ, Yahoo!,Jabber, and Lily. P2P BitTorrent 客户端! 而且包括服务器端的SPAM检查。此外还有几个 为IRC的频道。 支持了一把:获得的帐号信息如下服务器一台P4 2G + 1G内存,操作系统是OpenBSD,web服务支持PHP http://silenceisdefeat.org/~chedong/ 登录上去到home看了一下:目前共有 4595个用户目录。
从国内服务器的路由情况:
My traceroute [v0.71]
chedong (0.0.0.0) Sat Nov 25 16:18:27 2006
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 60.195.249.1 0.7% 304 21.3 17.6 0.5 128.1 10.9
2. 202.99.57.129 3.0% 304 19.8 16.7 0.3 25.6 6.6
3. 202.99.57.253 1.3% 304 20.1 29.2 0.7 215.0 38.6
4. 221.4.0.5 1.3% 304 53.4 51.5 35.0 59.8 6.4
5. 221.4.4.225 2.6% 304 66.4 69.7 45.9 214.0 26.9
6. 221.4.0.9 2.0% 304 63.0 70.7 42.6 272.0 39.7
7. 219.158.10.137 2.6% 304 63.4 62.1 42.1 247.2 20.6
8. 219.158.4.53 2.0% 304 90.2 91.0 68.8 287.4 26.7
9. 219.158.3.30 2.6% 304 91.9 85.0 68.8 92.7 6.5
10. 160.81.7.81 0.3% 304 256.0 253.0 235.0 269.1 6.0
11. 144.232.4.245 2.6% 304 264.6 265.1 237.1 441.4 24.7
12. 144.232.20.181 2.6% 303 257.7 267.9 236.7 462.0 41.3
13. 144.232.3.218 2.6% 303 259.2 268.3 237.3 474.7 41.7
14. 144.232.9.240 1.6% 303 264.4 265.5 237.9 434.9 26.3
15. so2-0-0-2488M.ar1.SJC2.gblx.net 6.9% 303 357.9 353.4 333.1 484.3 19.7
16. so0-0-0-2488M.ar2.TPA1.gblx.net 8.2% 303 405.1 402.4 384.0 471.6 12.2
17. Lightspeed-IP-Inc-Triple-8-Tampa 7.3% 303 666.4 662.9 645.1 677.5 6.8
18. ve49.core02.tpa.sagonet.net 9.2% 303 509.5 506.6 484.2 526.6 7.2
19. gi0-2.ds05.tpa.sagonet.net 9.9% 303 311.2 308.3 291.6 321.4 6.6
20. ???
21. silenceisdefeat.org 99.7% 303 501.0 501.0 501.0 501.0 0.0

在 *nix 下
使用 SSH 命令:
ssh -f -C -q -N -D port number username@domain.tld
这样就可以把 Tunnel 放到后台执行了,参数的具体意思请参照 ssh 的 man page。

在 Windows 下
如果想把 Tunnel 放到后台,Putty 似乎不提供这个功能,不过我们可以使用一个叫 MyEntunnel 的小程序。它可以使 plink (putty 的命令行形式) 运行在后台并监视之,如果网络连接断了或是其它情况使 plink 停止运行,MyEntunnel 会自动重新启动 plink 并建立连接。

http://nemesis2.qx.net/software-myentunnel.php

事实上,MyEnTunnel 就是一个 pLink 的前端程序,建立 SSH Tunnel 还是靠 pLink(自)。在 MyEnTunnel 中,我们只需要填写好相关的信息即可,不需要记忆 pLink 那“丰富”的参数。对于一般用户而言,我们只需要设置以下几项(Setting 选项卡):

SSH Server:就是你的 SSH 服务器的地址;
SSH Port:一般都是 22;
Username/Password:用户名/密码;
选中 Reconnect on Failure,Enable Dynamic SOCKS;
Port:填上你本地代理的端口,如 8080;
然后点击 Connect 就可以了,等待任务栏中的小锁变成绿色,说明我们成功建立了一条 SSH Tunnel,并在 localhost:8080 上开启了一个 Socks 服务器。在你的浏览器中进行相关设置后,你就可以看到 Feedburner,看到 WordPress.com,看到 YouTube 了……

当然,相对于直接使用 pLink 来说,MyEnTunnel 最大的优势在于“断线重连”功能。它可以自动监视 pLink 的运行状态,如果断线了便可以自动重新连接。对于本本用户来说,我们可以自由的合上本本待机了,酷

当然,MyEnTunnel 虽好,但使用还是有一定的条件的:

一个大火长城外的 SSH Server,并且支持 SSH Tunnel。这对于如今的 Blogger 来说貌似不是什么难事,Dreamhost,Bluehost 都 OK;
服务器/虚拟主机需要支持比较大的流量。这个是很需要注意的,因为通过 Tunnel 的访问所产生的流量都是要计入你的 Hosting Account 的。国外主机流量虽大,但超了费用也高,所以还是建议您最小化使用 Tunnel,另外不要分享你的 SSH Account,特别是对于 mt, dreamhost 这样支持多个 SSH Account 的主机;
本地软件支持 Sock 代理。Firefox 是没问题的,QQ/MSN/GTalk 也都没问题。如果您的软件只支持 HTTP 代理的话,我建议您用 CCProxy 的二级代理功能建立一个本地的 HTTP 代理;如果您的软件压根就不支持代理设置,可以考虑用 SockCaps 这样的软件来解决;

http://bemike.org/2007/07/16/surpassing-gfw.html
突破 GFW 一法
Published on July 16, 2007 @ 10:32 am

生活在世界上最大的局域网中,是我们的无奈,但要是想突破 GFW 办法还是有的是的。
很多人喜欢用 Tor 或是”xx之门”之类的软件穿墙,我没用过,据说这两种方法速度都不太灵光。然后有一些人用 PHProxy 这个软件把国外主机变成代理服务器,通过代理访问不能访问的网站。这个方法我认为非常的好,尤其是 PHProxy 在使用上非常简单,如果你和代理之间的网络速度良好的话,访问任何墙外的网站速度都是非常快的。
如果你自己没有国外主机的话,其实一点也没关系,在网上搜索使用 PHProxy 的服务器比搜索普通的代理服务器容易的多,而且只要能找到使用 PHProxy 的服务器,几乎 100% 都可以正常使用,这点比普通代理服务器好的太多了。
在 Google 中搜索:
intitle:phproxy
然后你就可以看到一大堆的结果,别客气,选一个你访问起来最快的,尽情的向自由的世界奔去吧!
Update: dawnh 同学有一个非常好的补充,在上述的搜索语句中加入 inurl:https 就可以访问基于内容过滤的网站了。


intitle:phproxy inurl:https

http://www.brandonhutchinson.com/ssh_tunnelling.html
“Reverse” ssh tunnel
It is possible to create a “reverse” ssh tunnel. The reverse tunnel will allow you to create an ssh tunnel from your work computer to your home computer, for example, and then login to your work machine from your home machine even if your work firewall does not permit ssh traffic initiated from your home machine!

For this to work, an ssh server must be installed on your work and home computer, and ssh (TCP port 22) must be allowed outbound from your work computer to your home computer.

$ ssh -R remote_port:localhost:22 your_home_computer

ex. $ ssh -R 2048:localhost:22 home.computer.com

At home, you would then run ssh -p 2048 localhost to log into your work computer via ssh.

Here is a script I run every 5 minutes through the cron facility on my work system to make sure the reverse ssh tunnel to my home system is up and running. It is useful in case my_home_system is rebooted.

2006-11-15 update:

#!/bin/sh

# $REMOTE_HOST is the name of the remote system
REMOTE_HOST=my.home.system

# $REMOTE_PORT is the remote port number that will be used to tunnel
# back to this system
REMOTE_PORT=5000

# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -q -N -R $REMOTE_PORT:localhost:22 $REMOTE_HOST"

# Is the tunnel up? Perform two tests:

# 1. Check for relevant process ($COMMAND)
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND

# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh $REMOTE_HOST netstat -an | egrep "tcp.*:$REMOTE_PORT.*LISTEN"
   > /dev/null 2>&1
if [ $? -ne 0 ] ; then
   pkill -f -x "$COMMAND"
   $COMMAND
fi

ssh_tunnelling