首页
关于
联系我
Search
1
华硕主板vga亮白灯
4,103 阅读
2
小米路由器4A千兆版(R4A) 关闭ipv6 防火墙
3,973 阅读
3
小米路由器4A千兆版(R4A)开启ssh
3,409 阅读
4
racknerd配置IPV6
2,480 阅读
5
z-library最新地址
2,123 阅读
未分类
各种资料
我的分析
技术活
游记
真相
笔记
经历
财务知识
资源类
软文
统计学
计划本
事件记录
反思
登录
Search
标签搜索
问题
linux
vps
debian
其他
测试
apt-get
库
wordpress
cdn
code
信息
设置
IP
nginx
应用
bae
centos6
debian7
proxy
Typecho
累计撰写
482
篇文章
累计收到
40
条评论
首页
栏目
未分类
各种资料
我的分析
技术活
游记
真相
笔记
经历
财务知识
资源类
软文
统计学
计划本
事件记录
反思
页面
关于
联系我
搜索到
117
篇与
的结果
2012-10-26
curl 怪异问题
发了好多问题文章,有人咨询为啥按你的处理方法处理后,不行,有必要解释下,计算机环境目前是越来越复杂了,所以在我这里没问题,可能在你那里会因为缺少某个东西就不行了。如果我的方法不行,那就自行google下。一般来说,越到相同问题的人这个世界至少有2个。言归正传,curl的问题是用curl访问一个网页,就像下边这样curl http://baidu.com/index.php?s=222&t=444发现后边的参数&t=444 无法访问到。貌似curl 漏掉了后边的参数。原因猜测可能是curl 在shell 下的问题。解决方法是给网址加上引号。就像这样 curl "http://baidu.com/index.php?s=222&t=444"
2012年10月26日
976 阅读
1 评论
0 点赞
2012-09-24
debian6 删除自启动
debian6使用了新的脚本命令,来管理自启动,引入的新概念有LSB,大约就是个说明文件。具体自己查百度吧。 回到正题上怎么删除自启动。只要这样insserv -r /etc/init.d/mysql #这是删除mysql的自启动,其他的自行更换参数另外发现linux 的man 太有用了,有问题找man
2012年09月24日
271 阅读
0 评论
0 点赞
2012-09-14
sshpass 解决ssh 非交互问题
百度,google后搜索到这个ssh 非交互。ssh 非交互用处还是很大的,可以用于自动系统。用法简单:sshpass -p 'xx' ssh user@backup拓展了个自动备份数据到另一台ssh上的命令tar czf - ./bak.sql | sshpass -p 'xxxx' ssh user@backup tar xzf - -C /home/bak
2012年09月14日
292 阅读
0 评论
0 点赞
2012-08-25
python web 环境配置,差点吐血
准备弄个python环境,搞搞python程序玩玩。差点吐血,文档奇少,百度,google基本上都是复制的。只好自己一点一点摸索了。简单总结下吧,具体的实在是记不住了,不知道打了多少命令。想想还是对python这门语言不熟悉,以前用python写过个小脚本,用来刷免费电话,代码写的挺烂的,但是确实比php写的脚本稳定迅速。而且基本上不出错。可见python语言比php 严谨多了。言归正传吧。这次目的是是nginx 支持python选择的fastcgi 是uwsgi。据说可以和php的fastcgi 一样简单。实际是功能太强大,理解起来很费劲。1:安装python 和python 开发包。apt-get install python apt-get install python-dev libxml2-dev2:安装uwsgiwget http://projects.unbit.it/downloads/uwsgi-1.2.5.tar.gz tar xzvf uwsgi-1.2.5.tar.gz cd uwsgi-1.2.5 python uwsgiconfig.py --build cp ./uwsgi /usr/sbin/uwsgi cp ./nginx/uwsgi_params /etc/nginx/3 :幸运的是linode 提供了debian6下的uwsgi启动脚本 。不过需要修改哦cd /opt/ wget -O init-deb.sh http://library.linode.com/assets/683-uwsgi-init-deb.sh mv /opt/init-deb.sh /etc/init.d/uwsgi chmod +x /etc/init.d/uwsgi/usr/sbin/update-rc.d -f uwsgi defaults /etc/init.d/uwsgi start 贴出我的,自己看着改PATH=/opt/uwsgi:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/uwsgi OWNER=www-data NAME=uwsgi DESC=uwsgi test -x $DAEMON || exit 0 # Include uwsgi defaults if available if [ -f /etc/default/uwsgi ] ; then . /etc/default/uwsgi fi set -e DAEMON_OPTS="-s /var/run/www/uwsgi.sock -M 4 -t 30 -A 4 -p 2 -d /var/log/uwsgi.log --pythonpath $PYTHONPATH --module $MODULE" 附上配置文件 。设置python 目录,和运行模块名,按实际情况设置就行了。貌似模块名影响不大。PYTHONPATH=/var/www/Blog MODULE=t 4:修改nginx 。我是新建个配置文件,然后再nginx配置文件里包含就行了location ~ \.py$ { uwsgi_pass unix:/var/run/www/uwsgi.sock; include /etc/nginx/uwsgi_params; }5:重启nginx uwsgi6:新建个py测试下。一定按我的格式来,要不会出错。mport os import sys def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return output7:完毕了,你们行不行我不知道,但是我成功了,参观地址:http://blog.firetry.com/t.py欢迎继续讨论,欢迎大牛指正。
2012年08月25日
284 阅读
0 评论
0 点赞
2012-08-19
nginx php wordpress cos-html-cache
一直在用apache 的rewrite 和 hta 来运行wordpress cos-html-cache 一直运行挺好的。折腾了十来分钟,运气好,正常测试通过了。先拷贝个安装过程吧。http://bo.moioi.com/2012/wordpress-cos-html-cache/ 首先,永久连接不能使用默认格式; 修改你的永久链接格式,保证你的url路径看起来像真正的HTML文件的路径(废话一句:这个是需要url rewrite支持的),中文推荐采用 /html/y%year%/%post_id%.html如果你和我一样不怕麻烦愿意为每篇文章写一个英语的post slug,建议采用这样的格式:/html/y%year%/%post_id%_%postname%.html,最好不要直接用year和 month,因为这个会和存档出现冲突;我的网站设置为/articles/%post_id%.html 放置html文件的文件夹属性请设置成 0777(linux特有设置); 下载插件,解压缩,你将会看到一个文件夹cos-html-cache,请确认文件夹里面没有二级目录,然后将其放置到插件目录下,插件目录通常是 `wp-content/plugins/`; 在网站根目录下创建一个文件名为”index.bak”,设置属性为0666(好多朋友反映无法生成首页,请注意这里); chown www:www index.bak; chown www:www articles 在后台对应的插件管理页激活该插件;现在贴出关键部分。nginx rewrite规则nginx fast_php 配置文件:location ~ \.php { fastcgi_index index.php; fastcgi_pass unix:/var/run/www/php.sock; include /etc/nginx/fastcgi_params; }关键文件fastcgi_params .简单解释下:把需要参数传递给php 支持pathinfo 哦。 当然nginx 版本最好是最新的。astcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; # fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; 基本就这样了。如果你照做了,能不能运行我不知道,但是我能运行。有问题,请留言,ps:最近垃圾评论又开始k我了。可能会出现评论失败,请重试。
2012年08月19日
701 阅读
2 评论
0 点赞
2012-08-18
统计网站日志
空间换了vps,懒得去搞网站统计代码,因为没需求。再说现在有vps了,有shell了,有日志了,一切都好了。来个统计ip命令:cat blogfiretry.log 好乱啊。只取第一列就可以了。cat blogfiretry.log | cut -d " " -f1输出结果:188.143.232.84 188.143.232.84 188.143.232.84 188.143.232.84 112.90.138.183 116.205.74.242 110.102.218.75 110.102.218.75 110.102.218.75 110.102.218.75 110.154.159.220 110.154.159.220 110.154.159.220 110.154.159.220 110.154.159.220 199.192.157.7 199.192.157.7 199.192.157.7 199.192.157.7 199.192.157.7统计下行数 root@firetry:/var/log# cat blogfiretry.log | cut -d " " -f1 | wc -l 19064貌似重复的不少。去掉重复的 。注意需要使用sort 排序。root@firetry:/var/log# cat blogfiretry.log | cut -d " " -f1 | sort -u | uniq -u |wc -l 2869 这样结果就正确了。我流量也不少啊,就是不知道是谁在访问,是人还是蜘蛛还是被dd ,下边再分析吧。做饭去了。
2012年08月18日
334 阅读
0 评论
0 点赞
2012-07-26
thinkphp 301转向
PHP设置301重定向方法 一,直接使用内置函数header header( "Location: http://www.8shop.org", true, 301);二,使用HTTP/1.x声明301重定向header( "HTTP/1.1 301 Moved Permanently" ); header( "Location: http://www.8shop.org" ); 需要注意的是地址部分要求是完整的url 。http://www.8shop.org 是正确的 www.8shop.org是错误的。thinkphp的301 也是一样的,直接在代码里写header 就行了。毫无差别哦。
2012年07月26日
427 阅读
0 评论
0 点赞
2012-07-22
linux 下ssh 代理命令
ssh -qTfnN -D 7070 xxx@x.x.x.x超简单的一个命令,就能代理上网了,真是比win下方便n多啊。解释下命令:-f 命令运行后后台执行-N Do not execute a remote command. This is useful for just for- warding ports (protocol version 2 only).不执行远程命令,用于代理端口 。不是很明白哦-n 所有输出都null ,禁止输入,后天运行时必须。-q 安静模式。错误警告不显示-T 后天不占用shell-D 指定端口7070 端口xxx@ ssh 用户名x.x.x.x sship延伸:SSH: Port Forwarding 1.正向隧道-隧道监听本地port,为普通活动提供安全连接 ssh -qTfnN -L port:host:hostport -l user remote_ip 2.反向隧道----隧道监听远程port,突破防火墙提供服务 ssh -qTfnN -R port:host:hostport -l user remote_ip 3.socks代理 SSH -qTfnN -D port remotehost(用证书验证就直接主机名,没用的还要加上用户名密码) -q Quiet mode. 安静模式,忽略一切对话和错误提示。 -T Disable pseudo-tty allocation. 不占用 shell 了。 -f Requests ssh to go to background just before command execution. 后台运行,并推荐加上 -n 参数。 -n Redirects stdin from /dev/null (actually, prevents reading from stdin). -f 推荐的,不加这条参数应该也行。 -N Do not execute a remote command. 不执行远程命令,专为端口转发度身打造。ssh实现转发, 只要用到以下两条命令: # ssh -CfNg -L 6300:127.0.0.1:1521 oracle@172.16.1.164 # ssh -CfNg -R 1521:127.0.0.1:6300 oracle@172.16.1.164 不论是做跳板, 还是加密隧道, 还是加密其他的网络连接也都是这两条命令. 视具体情况而定, 有时只要用到其中一条, 有时两条都要用到. 命令解释: 1) -CfNg C表示压缩数据传输 f表示后台用户验证,这个选项很有用,没有shell的不可登陆账号也能使用. N表示不执行脚本或命令 g表示允许远程主机连接转发端口 2) -L 本地转发 # ssh -CfNg -L 6300:127.0.0.1:1521 oracle@172.16.1.164 本机(运行这条命令的主机)打开6300端口, 通过加密隧道映射到远程主机172.16.1.164的1521端口(使用远程主机oracle用户). 在本机上用netstat -an|grep 6300可看到. 简单说,本机的6300端口就是远程主机172.16.1.164的1521端口. 3) -R 远程转发 # ssh -CfNg -R 1521:127.0.0.1:6300 oracle@172.16.1.164 作用同上, 只是在远程主机172.16.1.164上打开1521端口, 来映射本机的6300端口. 4) 实用例子 有A,B,C 3台服务器, A,C有公网IP, B是某IDC的服务器无公网IP. A通过B连接C的80端口(A<=>B<=>C), 那么在B上执行如下命令即可: $ ssh -CfNg -L 6300:127.0.0.1:80 userc@C $ ssh -CfNg -R 80:127.0.0.1:6300 usera@A 服务器A和服务器C之间, 利用跳板服务器B建立了加密隧道. 在A上连接127.0.0.1:80, 就等同C上的80端口. 需要注意的是, 服务器B上的6300端口的数据没有加密, 可被监听, 例: # tcpdump -s 0 -i lo port 6300http://bianbian.org/technology/264.html 里有一些好用的网址,介绍ssh及其代理穿透防火墙的 http://www.inet.no/dante/ Dante -- Proxy communication solution ssh 是有端口转发功能的。(转) http://doc.linuxpk.com/80817.html ssh的三个强大的端口转发命令: QUOTE: ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_port user@Tunnel_Host -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。 -p port Connect to this port. Server must be on the same port. 被登录的ssd服务器的sshd服务端口。 -L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -R port:host:hostport 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -D port 指定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发. -C Enable compression. 压缩数据传输。 -N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。 -g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接 Linux命令行下SSH端口转发设定笔记(转) 原文:http://be-evil.org/post-167.html 在Windows下面我们可以很方便的使用putty等ssh工具来实现将服务器上的端口映射到本机端口来安全管理服务器上的软件或者服务 那么我们换到在Liunx下我们应该怎么做呢? ssh -L 本地端口:服务器地址:服务器端口 用户名@服务器地址 -N 参数详解: -L 端口映射参数 本地端口 - 这个任意即可,只要本机没有其他的程序占用这个端口就行 服务器地址 - 你需要映射的服务器地址(名称/ip) 服务器端口 - 远程的服务器端口 -N - 不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可 例子A:我们想远程管理服务器上的MySQL,那么使用下面命令 ssh -L 3306:127.0.0.1:3306 user@emlog-vps -N 运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。 例子B:一次同时映射多个端口 ssh -L 8888:www.host.com:80 -L 110:mail.host.com:110 \ 25:mail.host.com:25 user@host -N 这个命令将自动把服务器的80,110,25端口映射到本机的8888,110和25端口 以上命令在ubuntu 9.10 上测试通过... 关于ssh端口转发的深入实例[转] http://blog.myhnet.cn/2009/01/08/deepin-instances-of-ssh-port-forwarding/ 首先,认识下这三个非常强大的命令: ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_port user@Tunnel_Host 相关参数的解释: -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。 -L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -R port:host:hostport 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -D port 指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发. -C Enable compression. 压缩数据传输。 -N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。 -g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用 实例说明: 一台服务器提供ftp服务,因为ftp传输是明文密码,如果不做ssh端口之前,我们可以通过tcpdump命令很容易的捕捉到明文信息。所以我们要对21端口进行转发: ftp-server# ssh -CNfg -R 2121:localhost:21 root@100.0.0.50 然后登录到100.0.0.50机器,我们可以通过netstat -an|grep :2121查看端口已经侦听 100.0.0.50# ftp localhost 2121 就可以登录到ftp-server了,而且tcpdump无法捕获到有效的信息。 2121端口任意选择,只要是机器上没有占用的端口就行 来一个稍微复杂一点的,做网关的例子: 假如内网有一台提供ftp(linux,port is 2121,称为A机器)的机器,通过网关服务器(linux,port is 8888,称为B机器)进去,现在外网有一台C机器需要访问网关服务器的某个端口(port is 21)来访问内网的ftp服务器。大家可以看到,其实这就像是一个基于ssh的防火墙程序,好,下面我们来具体操作: 1、login A 机器 # ssh -CNfg -R 8888:localhost:2121 root@B机器IP 这样我们就在B机器上开了一个8888->2121的端口转换,但是由于8888端口只能侦听在localhost主机上,因此,虽然我们已经可以在B机器上使用 # ftp localhost 8888 来访问真正的ftp服务器,但仍然无法提供给外网的机器访问 2、login B机器 # ssh -CNfg -L 21:localhost:8888 root@localhost 这样做,是做本地机器上的21->8888端口转换,可以侦听在任何地址上的请求。 2(1)。 如果C机器也是一台linux机器,那也可以这样设置: # ssh -CNfg -R 21:localhost:8888 root@C机器IP 3。使用C机器, 可以是linux下的ftp命令,也可以是windows下的客户端软件都可以访问B机器的21端口来连接后台真正的ftp服务器(真正的端口是2121) 如果是按照2(1)中的设置,则访问的地址为本机IP。http://bianbian.org/technology/264.html 里有一些好用的网址,介绍ssh及其代理穿透防火墙的 http://www.inet.no/dante/ Dante -- Proxy communication solution ssh 是有端口转发功能的。(转) http://doc.linuxpk.com/80817.html ssh的三个强大的端口转发命令: QUOTE: ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_port user@Tunnel_Host -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。 -p port Connect to this port. Server must be on the same port. 被登录的ssd服务器的sshd服务端口。 -L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -R port:host:hostport 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -D port 指定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发. -C Enable compression. 压缩数据传输。 -N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。 -g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接 Linux命令行下SSH端口转发设定笔记(转) 原文:http://be-evil.org/post-167.html 在Windows下面我们可以很方便的使用putty等ssh工具来实现将服务器上的端口映射到本机端口来安全管理服务器上的软件或者服务 那么我们换到在Liunx下我们应该怎么做呢? ssh -L 本地端口:服务器地址:服务器端口 用户名@服务器地址 -N 参数详解: -L 端口映射参数 本地端口 - 这个任意即可,只要本机没有其他的程序占用这个端口就行 服务器地址 - 你需要映射的服务器地址(名称/ip) 服务器端口 - 远程的服务器端口 -N - 不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可 例子A:我们想远程管理服务器上的MySQL,那么使用下面命令 ssh -L 3306:127.0.0.1:3306 user@emlog-vps -N 运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。 例子B:一次同时映射多个端口 ssh -L 8888:www.host.com:80 -L 110:mail.host.com:110 \ 25:mail.host.com:25 user@host -N 这个命令将自动把服务器的80,110,25端口映射到本机的8888,110和25端口 以上命令在ubuntu 9.10 上测试通过... 关于ssh端口转发的深入实例[转] http://blog.myhnet.cn/2009/01/08/deepin-instances-of-ssh-port-forwarding/ 首先,认识下这三个非常强大的命令: ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_port user@Tunnel_Host 相关参数的解释: -f Fork into background after authentication. 后台认证用户/密码,通常和-N连用,不用登录到远程主机。 -L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -R port:host:hostport 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -D port 指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发. -C Enable compression. 压缩数据传输。 -N Do not execute a shell or command. 不执行脚本或命令,通常与-f连用。 -g Allow remote hosts to connect to forwarded ports. 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用 实例说明: 一台服务器提供ftp服务,因为ftp传输是明文密码,如果不做ssh端口之前,我们可以通过tcpdump命令很容易的捕捉到明文信息。所以我们要对21端口进行转发: ftp-server# ssh -CNfg -R 2121:localhost:21 root@100.0.0.50 然后登录到100.0.0.50机器,我们可以通过netstat -an|grep :2121查看端口已经侦听 100.0.0.50# ftp localhost 2121 就可以登录到ftp-server了,而且tcpdump无法捕获到有效的信息。 2121端口任意选择,只要是机器上没有占用的端口就行 来一个稍微复杂一点的,做网关的例子: 假如内网有一台提供ftp(linux,port is 2121,称为A机器)的机器,通过网关服务器(linux,port is 8888,称为B机器)进去,现在外网有一台C机器需要访问网关服务器的某个端口(port is 21)来访问内网的ftp服务器。大家可以看到,其实这就像是一个基于ssh的防火墙程序,好,下面我们来具体操作: 1、login A 机器 # ssh -CNfg -R 8888:localhost:2121 root@B机器IP 这样我们就在B机器上开了一个8888->2121的端口转换,但是由于8888端口只能侦听在localhost主机上,因此,虽然我们已经可以在B机器上使用 # ftp localhost 8888 来访问真正的ftp服务器,但仍然无法提供给外网的机器访问 2、login B机器 # ssh -CNfg -L 21:localhost:8888 root@localhost 这样做,是做本地机器上的21->8888端口转换,可以侦听在任何地址上的请求。 2(1)。 如果C机器也是一台linux机器,那也可以这样设置: # ssh -CNfg -R 21:localhost:8888 root@C机器IP 3。使用C机器, 可以是linux下的ftp命令,也可以是windows下的客户端软件都可以访问B机器的21端口来连接后台真正的ftp服务器(真正的端口是2121) 如果是按照2(1)中的设置,则访问的地址为本机IP。
2012年07月22日
619 阅读
2 评论
0 点赞
2012-07-14
centos6 安装xfce
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm rpm -ivh epel-release-6-7.noarch.rpm yum search xfce yum groupinstall xfce 6上默认没有xfce了,需要安装epel源。特别提供源地址http://dl.fedoraproject.org/pub/epel/6 自己去找适合自己使用的包。
2012年07月14日
396 阅读
0 评论
0 点赞
2012-07-08
纠结的淘宝api签名
因为网站想添加个功能,就是自动转换淘宝客链接,尝试弄了下淘宝api,签名部分折腾的头疼,一直被淘宝的api测试工具误导,一直被网上乱七八糟的说法误导。做下记录,别忘记了。签名规则是:官方说明:http://open.taobao.com/doc/detail.htm?id=111#s6除了图片和签名,其余提交的所有参数都要md5下。参数要按照升序(a-z)排列。如果参数首字母相同,就按照第二个字母排序。总结下sign = 大写(md5(appsecret+appkey+参数+appsecret))另外拼装url的时候要注意,参数值都要url编码的。解释的好苍白,还是上代码吧。没有appkey 自己添加,因为是测试代码,比较乱,自己修改$sign = ''; $appsecret = ""; $appkey = ""; $ctime = date("Y-m-d H:i:s"); $timestamp = urlencode($ctime); $parame = array( 'app_key'=>$appkey, 'fields'=>'num_iid,title,nick,pic_url,price', 'format'=>'xml', 'method'=>'taobao.taobaoke.items.convert', 'nick'=>'', 'num_iids'=>'15293327612', 'sign_method'=>'md5', 'timestamp'=>'', 'v'=>'2.0', ); $parame['timestamp']=$ctime; ksort($parame); foreach($parame as $key => $value){ $sign .= $key.$value; } $sign = $appsecret.$sign.$appsecret; //echo $sign; $sign = strtoupper(md5($sign)); $apiurl = "http://gw.api.taobao.com/router/rest?sign=".$sign."&"; foreach($parame as $key => $value){ $apiurl .= $key.'='.urlencode($value).'&'; } echo $apiurl;
2012年07月08日
344 阅读
0 评论
0 点赞
2012-04-01
debian6 自启动脚本
debian 支持lsb脚本,debian6 命令也变成了insserv1:写个脚本放在/etc/init.d/下lsb脚本信息,上一个nginx的,照葫芦画瓢吧### BEGIN INIT INFO # Provides: nginx # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO 2:设置你的脚本执行权限chmod 755 /etc/init.d/3.最后执行insserv -v -d /etc/init.d/
2012年04月01日
273 阅读
0 评论
0 点赞
2012-03-31
debian 中文显示
这里探讨的只是终端显示中文的问题,测试限于putty 和 debian,其他不保证成功locale -a #看看有没有zh_CN.utf8如果没有的话,运行下边的代码加上dpkg-reconfigure locales随后在bash配置 ~/.bashrc 文件中加入export LC_ALL=zh_CN.utf8
2012年03月31日
333 阅读
0 评论
0 点赞
2012-01-23
mysql备份,日志
暂无简介
2012年01月23日
253 阅读
0 评论
0 点赞
2011-12-27
搜狗代理py代码
''''' Author: Xiaoxia Contact: xiaoxia@xiaoxia.org Website: xiaoxia.org ''' from threading import Thread, Lock from struct import unpack from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from httplib import HTTPResponse from SocketServer import ThreadingMixIn import socket, os, select import time, sys, random import threading # Minimize Memory Usage threading.stack_size(128*1024) x_sogou_auth = "9CD285F1E7ADB0BD403C22AD1D545F40/30/853edc6d49ba4e27" proxy_host = "h0.edu.bj.ie.sogou.com" proxy_port = 80 BufferSize = 8192 RemoteTimeout = 15 def calc_sogou_hash(t, host): s = (t + host + 'SogouExplorerProxy').encode('ascii') code = len(s) dwords = int(len(s)/4) rest = len(s) % 4 v = unpack(str(dwords) + 'i'+str(rest)+'s', s) for vv in v: if(type(vv)==type('i')): break a = (vv & 0xFFFF) b = (vv >> 16) code += a code = code ^ (((code<<5)^b) << 0xb) # To avoid overflows code &= 0xffffffff code += code >> 0xb if rest == 3: code += ord(s[len(s)-2]) * 256 + ord(s[len(s)-3]) code = code ^ ((code ^ (ord(s[len(s)-1])*4)) << 0x10) code &= 0xffffffff code += code >> 0xb elif rest == 2: code += ord(s[len(s)-1]) * 256 + ord(s[len(s)-2]) code ^= code << 0xb code &= 0xffffffff code += code >> 0x11 elif rest == 1: code += ord(s[len(s)-1]) code ^= code << 0xa code &= 0xffffffff code += code >> 0x1 code ^= code * 8 code &= 0xffffffff code += code >> 5 code ^= code << 4 code = code & 0xffffffff code += code >> 0x11 code ^= code << 0x19 code = code & 0xffffffff code += code >> 6 code = code & 0xffffffff return hex(code)[2:].rstrip('L').zfill(8) class Handler(BaseHTTPRequestHandler): remote = None # Ignore Connection Failure def handle(self): try: BaseHTTPRequestHandler.handle(self) except socket.error: pass def finish(self): try: BaseHTTPRequestHandler.finish(self) except socket.error: pass # CONNECT Data Transfer def transfer(self, a, b): fdset = [a, b] while True: r,w,e = select.select(fdset, [], []) if a in r: data = a.recv(BufferSize) if not data: break b.sendall(data) if b in r: data = b.recv(BufferSize) if not data: break a.sendall(data) def sogouProxy(self): if self.remote is None or self.lastHost != self.headers["Host"]: self.remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.remote.settimeout(RemoteTimeout) self.remote.connect((proxy_host, proxy_port)) self.remote.sendall(self.requestline.encode('ascii') + b"\r\n") # Add Sogou Verification Tags self.headers["X-Sogou-Auth"] = x_sogou_auth t = hex(int(time.time()))[2:].rstrip('L').zfill(8) self.headers["X-Sogou-Tag"] = calc_sogou_hash(t, self.headers['Host']) self.headers["X-Sogou-Timestamp"] = t headerstr = str(self.headers).replace("\r\n", "\n").replace("\n", "\r\n") self.remote.sendall(headerstr.encode('ascii') + b"\r\n") # Send Post data if self.command == 'POST': self.remote.sendall(self.rfile.read(int(self.headers['Content-Length']))) response = HTTPResponse(self.remote, method=self.command) response.begin() # Reply to the browser status = "HTTP/1.1 " + str(response.status) + " " + response.reason self.wfile.write(status.encode('ascii') + b'\r\n') hlist = [] for line in response.msg.headers: # Fixed multiple values of a same name if 'TRANSFER-ENCODING' not in line.upper(): hlist.append(line) self.wfile.write("".join(hlist) + b'\r\n') if self.command == "CONNECT" and response.status == 200: return self.transfer(self.remote, self.connection) else: while True: response_data = response.read(BufferSize) if not response_data: break self.wfile.write(response_data) do_POST = do_GET = do_CONNECT = sogouProxy class ThreadingHTTPServer(ThreadingMixIn, HTTPServer): address_family = socket.AF_INET6 server_address = ("", 1998) server = ThreadingHTTPServer(server_address, Handler) # Random Target Proxy Server proxy_host = 'h' + str(random.randint(0,5)) + '.edu.bj.ie.sogou.com' print('Proxy over %s.\nPlease set your browser\'s proxy to %s.' % (proxy_host, server_address)) try: server.serve_forever() except: os._exit(1)
2011年12月27日
362 阅读
0 评论
0 点赞
2011-11-09
纯php文件不要加结束标记?>
一群大师都说如果加结束符的话,如果被其他工具误写,如果用head cookie session 的可能出现问题。 再说了php解析器也没有要求结束符必须,既然这样,不加也罢。还省点力气。
2011年11月09日
424 阅读
0 评论
0 点赞
1
...
5
6
7
8