• 解决PuTTY的中文乱码问题

    by shizhao 发表于2008年03月25日21:58:56 | Tags:PuTTY 中文乱码 SSH GFW bash

    本文综合了其他人的经验和自己的实践。

    首先,设置 PuTTY

    打开putty,选择 Category中的Windows--->Appearance---> Font settings 
       把"字体"改为"Fixedsys"(或者其他中文字体),字符集为CHINEASE_GB2312

    再选择 Category中的Windows--->Translation ----> Received data assumed to be ...

    把character设置为 "Use font encoding" 

    保存后登陆远程主机就可以了。如果显示仍然是乱码,说明远程主机的语言设置不是中文,这就需要更改远程主机的环境变量。

    设置远程主机环境变量:

     在远程主机的 home目录下,有一个.bash_profile文件,用来执行登入 shell 时要执行的命令。用文本编辑器编辑这个文件,加入以下语句:

    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN:zh
     
    declare -x LANG="zh_CN.UTF-8"JsBLinux联盟
    declare -x LANGUAGE="zh_CN:zh"
     
    将远程主机的语言环境设置为中文环境。在远程主机保存文件后,执行
    >. .bash_profile
     
    然后设置putty,选择 Category中的Windows--->Translation ----> Received data assumed to be ...

    把character设置为 "UTF-8"
    这样就能显示中文了。

    参考文献:

    1.  putty中文完全技巧
    2. putty连接linux 中文输入及显示问题
    3. Linux Shell简介

     另外推荐一篇PuTTY中文教程,非常详细。貌似也可以通过putty直接设置远程主机的语言环境,但是我没有实践过。

  • 在Ubuntu下如何通过SSH隧道实现加密代理访问

    by shizhao 发表于2007年10月29日18:23:25 | Tags:SSH GFW ubuntu putty

    电脑上的Ubuntu系统,经过长达1星期断断续续的升级终于从6.04-> 6.10->7.04->7.10一路升级到最新版。可恨的是,手头的7.04光盘居然无法安装7.04到电脑,一直说PngP秘钥错误,只好从网上一路升级。遗憾的是,传说中的3D桌面始终无法弄出来,看了许多网上的教程,怎么设置都不行。

    升级好ubuntu,开始琢磨如何像在windows下那样方便的穿墙。tor虽然在ubuntu下运行正常,但是tor的速度还是有些慢,不如先前车东介绍的利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问的方法来的快速。而我也有SSH帐号,因此开始寻找ubuntu下实现SSH隧道访问的方法。

    车东推荐的putty的确是个非常棒的用于SSH隧道的软件,在ubuntu下也可以运行。但奇怪的是,putty运行正常,也可以登录SSH主机,远程执行命令等操作,唯独用它无法像在windows下采用同样的设置架设SSH隧道,也没有任何错误信息返回,看来是软件的bug。

    又找到ubuntu下的一款软件gstm - Gnome SSH Tunnel Manager,是专门作这种用途的软件。但遗憾的是,这款软件也同样存在bug,而且非常严重 ,一到设置本地端口的地方就导致ubuntu死机。

    于是只好man ssh,查看SSH的帮助文档。 终于让我找到了方法。在终端窗口输入:

    ssh -L 7070:localhost:* remotehost

    输入账号密码,连接成功。在firefox下使用 foxyproxy插件,以前不能访问的网站终于能够打开了!

    上面的命令行中,-L指定本地端口与远程主机端口之间的隧道, 7070是本地端口,可以任意设置,只要不和其他已经使用的网络服务冲突就可以。localhost是本地主机,也就是你的电脑,不用更改,*号可以自动寻找远程主机可用的端口。remotehost就是所要登录的远程SSH主机名称。

    写道这里才发现,车东那篇文章下面的回复里已经有人给出了另外一种SSH命令行方式

    ssh -qTfnN -D 7070 remotehost

    All the added options are for a ssh session that’s used for tunneling.

    -q :- be very quite, we are acting only as a tunnel.
    -T :- Do not allocate a pseudo tty, we are only acting a tunnel.
    -f :- move the ssh process to background, as we don’t want to interact with this ssh session directly.
    -N :- Do not execute remote command.
    -n :- redirect standard input to /dev/null.

    In addition on a slow line you can gain performance by enabling compression with the -C option.

    唉,早知道就不用自己瞎琢磨半天了。

    PS:我是一名ubuntu菜鸟,如果根据我上面介绍的方法,仍然无法实现SSH隧道,或者其他的相关问题,请不要问我,因为我也不懂。 :(

    我的ubuntu7.10桌面

     

    my ubuntu 7.10 Screenshot.png
  • 用SSH穿透GFW(转载)

    by shizhao 发表于2006年11月21日15:50:24 | Tags:SSH GFW

    这篇文章转载自http://yesure.blogspot.com/2006/11/ssh-tunnelfuck-gfw.html

    主要是为了防止vblogspot不能访问的时候,自己能够容易找到,作者Wisi

    SSH Tunnel之fuck GFW整体解决方案

    在不能使用代理服务器或者tor绕开防火长城的场合(比如单位里面不可以使用非企业代理,比如日后tor被土共封锁),如果ssh 22端口没有被封锁,那就可以利用OpenSSH强大的tunnel功能来
    实现高速安全的访问Internet任意开放网站的任意开放端口 。在这里简称挖地道

    1准备条件:
    1.1 某国外主机shell,这个需要你自己去找,买一个或找找一个免费的,需要上面的开启sshd
    1.2 Firefox浏览器配合foxyproxy扩展,虽然用IE也方便,但是当大多数网站不需要挖地道访问只有个别网站需要挖地道访问自己又是懒人懒得每次访问blocked网站去切换浏览器的代理设置的情况下,用foxyproxy这个基于模版自动匹配代理的扩展还是很方便的。
    1.3 国外代理服务器,任意一个高速匿名免费代理服务器

    2原理:
    2.1首先man ssh,注意ssh的manpage里面这也一个选项:

    -L port:host:hostport
    Specifies that the given port on the local (client) host is to be
    forwarded to the given host and port on the remote side. This
    works by allocating a socket to listen to port on the local side,
    and whenever a connection is made to this port, the connection is
    forwarded over the secure channel, and a connection is made to
    host port hostport from the remote machine. Port forwardings can
    also be specified in the configuration file. Only root can for-
    ward privileged ports. IPv6 addresses can be specified with an
    alternative syntax: port/host/hostport

    2.2基本格式

    ssh -l USER -L local_port:any_host_blocked_by_gfw:the_blocked_hosts_port ssh host_which_out_of_gfw

    这样任何被屏蔽的主机(any_host_blocked_by_gfw)的任何端口(the_blocked_hosts_port),就可以在本机127.0.0.1的localport访问了

    2.3解释,这里有好几个host不要搞错。
    ssh -l USER是你用来登录目标ssh主机的用户名,ssh就加上一个-l选项
    local_port:本机的某端口,最好大一些,保证没有被其他程序占用的,以后被屏蔽主机的某端口就被映射在本机的此端口
    any_host_blocked_by_gfw:任何一个被gfw干了的主机,比如zh.wikipedia.org
    the_blocked_hosts_port:前面提到的被干了的这个主机的某个端口,比如25 23 80
    host_which_out_of_gfw:任何一台不在土共的GFW范围内的一台ssh host

    2.4例子:
    ssh -l fuckGFW 8088:zh.wikipedia.org:80 fuckgfw.free.com

    我用fuckGFW帐号登录fuckgfw.free.com主机,并且把维基百科中文的80端口映射到本机的8088端口,这样下次用http://localhost:8088来访问维基百科

    3应用:
    每次去挖这样一个坑麻烦了点,这时候就要动动脑筋想想别的办法了。普通的代理服务访问国外主机虽然会被土共的gfw盾,但是,如果把普通国外代理服务器加上一个ssh的套套,那土共的GFW就煞笔了,而且即使土共把这个代理服务器本身干了也没用,因为我们的国外ssh host和国外的代理服务器都是在GFW之外的,那就是终极解决方案:
    用ssh tunnel给国外代理服务器加套
    例子:
    ssh -l fuckGFW 3128:proxy.anywhere.com:8080 fuckgfw.free.com
    这样就给国外的代理服务器proxy.anywhere.com加了套,然后在本地的浏览器设置代理为localhost:3128,那么只要你到fuckgfw.free.com的连接是22端口的ssh加密连接,土共就对你的内容无可奈何。
    至于fuckgfw.free.com和proxy.anywhere.com之间是不是加密的会不会监听,目前看来似乎是不加密的(否则我在防火墙内我的本机开一个ssh再加上一个squid就可以访问任意国外主机了),所有这样做还是有风 险,千万不要用这样的方案访问你的paypal帐号gmail等等。但是用来绕开防火墙,正常使用google是足够了,访问blogspot wikipedia等等也没有问题。

    4.To Do
    通常网上容易找到的代理服务器都是只支持http的,支持https的还没有找到,所以访问https的内容比如gmail还是没有好的解决方法,目前只能设置一下foxyproxy直接访问https的内容(或者用tor),还有一个办法就是再挖一个通道,把gmail的pop服务器的端口和smtp直接映射在本地的某端口,宁可暂时放弃一下gmail web的丰富feature,也要不受限制的访问google的服务。注意,在ssh到一台主机的时候,可以同时挖n条隧道的,也就是可以在ssh命令后面加上n个-L 参数

    5.补充
    使用windows操作系统的也可以用此方法,putty对ssh的tunnel有完美的支持。