2010 九月 存档:

  • Windows下使用Xmanager连接SSH开启Linux远程桌面的方法

    在Windows下,可以使用“Xmanager Enterprise 3”连接SSH。这个套件包集成了:连接SSH用的“Xshell”;用于文件传送SFTP或FTP的“Xftp”;用于打印服务的“Xlpd”;还有当然就是显示X窗体的“Xmanager”。

    在Windows下使用它,可以很方便地开启窗口,比如:

    xcalc

    可以开启图形化界面的Linux计算器。

    而开启Linux远程桌面的方法,则分不同的图形环境,有不同的命令。

    在KDE环境下,开启远程桌面的命令是:

    startkde

    在gnome环境下,开启远程桌面的命令是:

    gnome-session

    好了,就是这样。

    2010.09.18 / 暂无评论 / 分类: 所谓技术

  • 英文Ubuntu安装中文包(locale)的方法

    查看系统内安装的locale:

    locale -a

    如果没有“zh-CN.UTF-8”,则表示系统内没有安装中文locale。这会导致“LC_CTYPE: cannot change locale (zh_CN.UTF-8)”的警告。

    输入以下命令安装:

    cd /usr/share/locales
    sudo ./install-language-pack zh_CN

    然后重开终端,就可以发现中文locale已经安装完毕,警告已经不再出现了。

    当然,还可以执行:

    sudo locale-gen

    重建locale。

    而要删除locale,则是“/usr/share/locales”对应的“remove-language-pack”。

    参考连接:

    1. 修改locale
    2. locale在哪儿怎么配置才能用fcitx?

    2010.09.18 / 2 条评论 / 分类: 所谓技术

  • SSH隧道与端口转发及内网穿透

    大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多。不过其实除了这个功能,它的隧道转发功能更是吸引人。下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得。

    SSH/plink命令的基本资料:

    首先,认识下这三个非常强大的命令:

    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参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用。

    以上摘录自:http://chenweiguang.blogspot.com/2009/03/ssh.html

    建立本地SSH隧道例子

    在我们计划建立一个本地SSH隧道之前,我们必须清楚下面这些数据:

    1. 中间服务器d的IP地址
    2. 要访问服务器c的IP地址
    3. 要访问服务器c的端口

    现在,我们把上面这张图变得具体一些,给这些机器加上IP地址。并且根据下面这张图列出我们的计划:

    1. 需要访问234.234.234.234的FTP服务,也就是端口21
    2. 中间服务器是123.123.123.123

    现在我们使用下面这条命令来达成我们的目的

    1.ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123

    2.ftp localhost:2121 # 现在访问本地2121端口,就能连接234.234.234.234的21端口了

    这里我们用到了SSH客户端的三个参数,下面我们一一做出解释:

    • -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
    • -f 告诉SSH客户端在后台运行
    • -L 做本地映射端口,被冒号分割的三个部分含义分别是
      • 需要使用的本地端口号
      • 需要访问的目标机器IP地址(IP: 234.234.234.234)
      • 需要访问的目标机器端口(端口: 21)
    • 最后一个参数是我们用来建立隧道的中间机器的IP地址(IP: 123.123.123.123)

    我们再重复一下-L参数的行为。-L X:Y:Z的含义是,将IP为Y的机器的Z端口通过中间服务器映射到本地机器的X端口。

    在这条命令成功执行之后,我们已经具有绕过公司防火墙的能力,并且成功访问到了我们喜欢的一个FTP服务器了。

    如何建立远程SSH隧道

    通过建立本地SSH隧道,我们成功地绕过防火墙开始下载FTP上的资源了。那么当我们在家里的时候想要察看下载进度怎么办呢?大多数公司的网络是通过路由器接入互联网的,公司内部的机器不会直接与互联网连接,也就是不能通过互联网直接访问。通过线路D-B-A访问公司里的机器a便是不可能的。也许你已经注意到了,虽然D-B-A这个方向的连接不通,但是A-B-D这个方向的连接是没有问题的。那么,我们能否利用一条已经连接好的A-B-D方向的连接来完成D-B-A方向的访问呢?答案是肯定的,这就是远程SSH隧道的用途。

    与本地SSH一样,我们在建立远程SSH隧道之前要清楚下面几个参数:

    • 需要访问内部机器的远程机器的IP地址(这里是123.123.123.123)
    • 需要让远程机器能访问的内部机器的IP地址(这里因为是想把本机映射出去,因此IP是127.0.0.1)
    • 需要让远程机器能访问的内部机器的端口号(端口:22)

    在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道

    1.ssh -N -f -R 2222:127.0.0.1:22 123.123.123.123

    现在,在IP是123.123.123.123的机器上我们用下面的命令就可以登陆公司的IP是192.168.0.100的机器了。

    1.ssh -p 2222 localhost

    -N,-f 这两个参数我们已经在本地SSH隧道中介绍过了。我们现在重点说说参数-R。该参数的三个部分的含义分别是:

    • 远程机器使用的端口(2222)
    • 需要映射的内部机器的IP地址(127.0.0.1)
    • 需要映射的内部机器的端口(22)

    例如:-R X:Y:Z 就是把我们内部的Y机器的Z端口映射到远程机器的X端口上。

    建立SSH隧道的几个技巧

    自动重连

    隧道可能因为某些原因断开,例如:机器重启,长时间没有数据通信而被路由器切断等等。因此我们可以用程序控制隧道的重新连接,例如一个简单的循环或者使用 djb’s daemontools . 不管用哪种方法,重连时都应避免因输入密码而卡死程序。关于如何安全的避免输入密码的方法,请参考我的 如何实现安全的免密码ssh登录 。这里请注意,如果通过其他程序控制隧道连接,应当避免将SSH客户端放到后台执行,也就是去掉-f参数。

    保持长时间连接

    有些路由器会把长时间没有通信的连接断开。SSH客户端的TCPKeepAlive选项可以避免这个问题的发生,默认情况下它是被开启的。如果它被关闭了,可以在ssh的命令上加上-o TCPKeepAlive=yes来开启。

    另一种方法是,去掉-N参数,加入一个定期能产生输出的命令。例如: top或者vmstat。下面给出一个这种方法的例子:

    1.ssh -R 2222:localhost:22 123.123.123.123 "vmstat 30"

    检查隧道状态

    有些时候隧道会因为一些原因通信不畅而卡死,例如:由于传输数据量太大,被路由器带入stalled状态。这种时候,往往SSH客户端并不退出,而是卡死在那里。一种应对方法是,使用SSH客户端的ServerAliveInterval和ServerAliveCountMax选项。 ServerAliveInterval会在隧道无通信后的一段设置好的时间后发送一个请求给服务器要求服务器响应。如果服务器在 ServerAliveCountMax次请求后都没能响应,那么SSH客户端就自动断开连接并退出,将控制权交给你的监控程序。这两个选项的设置方法分别是在ssh时加入-o ServerAliveInterval=n和-o ServerAliveCountMax=m。其中n, m可以自行定义。

    如何将端口绑定到外部地址上

    使用上面的方法,映射的端口只能绑定在127.0.0.1这个接口上。也就是说,只能被本机自己访问到。如何才能让其他机器访问这个端口呢?我们可以把这个映射的端口绑定在0.0.0.0的接口上,方法是加上参数-b 0.0.0.0。同时还需要打开SSH服务器端的一个选项-GatewayPorts。默认情况下它应当是被打开的。如果被关闭的话,可以在/etc /sshd_config中修改GatewayPorts no为GatewayPorts yes来打开它。

    通过SSH隧道建立SOCKS服务器

    如果我们需要借助一台中间服务器访问很多资源,一个个映射显然不是高明的办法(事实上,高明确实没有用这个方法)。幸好,SSH客户端为我们提供了通过SSH隧道建立SOCKS服务器的功能。

    通过下面的命令我们可以建立一个通过123.123.123.123的SOCKS服务器。

    1.ssh -N -f -D 1080 123.123.123 # 将端口绑定在127.0.0.1上

    2.ssh -N -f -D 0.0.0.0:1080 123.123.123.123 # 将端口绑定在0.0.0.0上

    通过SSH建立的SOCKS服务器使用的是SOCKS5协议,在为应用程序设置SOCKS代理的时候要特别注意。

    以上摘录自:http://blog.jianingy.com/content/…

    2010.09.16 / 4 条评论 / 分类: 所谓技术

  • 解决IE6/IE7浏览器不能浏览Statusnet的问题

    Jaylin的全力研究下,终于解决的IE6/IE7浏览器浏览“StatusNet”时不能载入CSS样式的问题,非常感谢Jaylin!研究该问题的过程非常曲折,耗了一个近两个星期时间(虽然不是每天在研究),解决办法倒是异常简单。

    问题就出在“@import url() screen, projection, tv, print;”,

    IE浏览器不支持后面的“screen, projection, tv, print”。

    所以,我把default theme里面的display.css中的

    “@import url(../../base/css/display.css) screen, projection, tv, print;”

    改成“@import url(../../base/css/display.css) ;”,

    IE浏览就能正常浏览“StatusNet”了。

    目前还存在一个问题:部分IE6浏览器浏览“StatusNet”时会提示IE无法打开站点,终止操作,但实际上已经打开了,希望高手能指点一下怎么解决该问题。

    原文出处

    2010.09.09 / 4 条评论 / 分类: 借此鉴彼

  • 《致命魔术》剧情全解

    这篇是写得比较到位的剧评,而不是那种自己都看得一知半解就出来嚷嚷还到处谩骂的枪手文。

    最近又重温了一遍,正巧看到一些讨论,现在来一点我自己的看法
    1,关于安的死活,大家都说有气泡,我通过反复观看确实发现有气泡,但是安没有睁开眼睛,而气泡并不是从嘴里冒出来的,是从右边脖子沿着右脸测出现的,并且安无法再水下存活这么长时间,如果说他就是想看看伯杀死另一个自己那他大可不必待在水下,况且安是一个执着且自私的人,他的克隆体和他如出一辙,拥有同样的记忆,如何确定究竟是哪一个死,而且自从他杀了第一个自己的时候他就知道这不能停下,只能有一个他,所以说安不仅死了而且死的透透的(一百遍啊一百遍)
    2,关于牺牲,影片中多次题材这个词,在影片的开始,伯是以一个魔术天才登场的,他专门破解其他魔术师师的魔术受雇于科特,而安却没有这种能力,这就是敌意产生的根源,一切源于嫉妒,当伯解说中国水缸魔术的时候,那是他就领悟了魔术的真谛——牺牲,并以构思了移形幻影,并说了一句并不是所有的魔术都能被模仿的(必须是双胞胎,特指移形幻影),从此他和兄弟只能牺牲一个人的幸福,并且一生保守秘密,连最亲的人都没有透露,这就是最伟大的牺牲,所以伯是一位伟大的魔术师,至于安的牺牲则没有这么伟大,他的目的完全是好胜和复仇,因为他清楚伯的厉害之处(伯是个天才并懂得牺牲,而自己并不了解何谓牺牲)所以就落了下乘,曾经看过一本漫画也讲述了牺牲,一个老魔术师为了一个变鸽子魔术而把自己弄得骨瘦如柴,可却始终以一个大胖子面目示人(就为了在衣服下多藏几只鸽子),这就是牺牲,而且是一生的牺牲,片中伯不仅牺牲了自己还有最爱的妻子,可歌可泣
    3,关于互斗,我只能说这是一场美丽的意外,安痛失爱妻而质问伯,可惜伯确实不知道自己的兄弟打了什么结,而他以为仅仅是场意外,在此之前我们完全可以理解,安和伯既是好朋友又是好对手,如果不出意外(可惜出了),以后这3人完全就是搭档,一起为目标奋斗,又是一个可歌可泣的好故事虽然大众了一些,所以没有得到答案的安开始了不死不休的互斗,并且发话别想用2根手指来抵命,杯具的产生,并由此渐行渐远,背离了魔术的精神,以致后来的不择手段,科特经劝告无效与他分道扬镳,当科特最后明白真相的时候就知道安只是为了复仇,并且策划了这一切,勾引伯来破解,所以他最后离开的时候,明知是伯来复仇也没有说什么,只是打了一个照面就离开了,安已经做到太过了
    4,关于输赢,个人认为是伯赢了,安只是一个利用科学的人,并不理解何谓牺牲,虽然科学也是魔术的一部分,但伯更善于创新,他是真正的魔术师,片中安除了真移形幻影就没有别的魔术了(都是科特的),结尾的那句“他们更喜欢被愚弄”我认为是特指安,其实安是伯最忠实的观众,并多次偷偷去观看,他喜欢被伯愚弄,他不遗余力的称赞伯,可他不得不报仇,他是个执着的人,“伟大的丹东” 是他爱妻为他起点,虽然他当初觉得很土,可在爱妻死后他毅然采用此名字,不解释,不给理由,并表演失败后这个名字臭掉后还是继续使用,继续不解释,不给理由,由此看他是一个及其深情的人,执着而专一,不报此仇誓不罢休,决定他自始至终就是一个悲剧人物,可他没有伯的天赋并且深信一个如此伟大的魔术不会就是找一个替身如此的简单(被愚弄了),所以他执着的想要找出秘密,最后终于得到tesla的答案,却是伯的陷阱,tesla只是给伯的魔术弄了一个包装而已(最初的版本并没有发电装备,老板说要包装一下),可惜一将功成万骨枯,伯失去了兄弟和妻子,安失去了性命,并体验了不断牺牲的恐惧,最后将死的时候得知真相(双胞胎)的安终于理解了何谓牺牲,并成长为和伯一个等级的魔术师,可惜他已经死了
    最后伯和女儿幸福的生活在一起,并和科特成为了搭档,一起开创新的魔术
    不得不说这是一个好片子,另据诺兰说这个片子给的期限太短以至于他没有达到他想要的效果,所以有点可惜,所以这个片子也有了一些不足之处。

    FROM:http://i.mtime.com/3119781/blog/4791622/

    2010.09.04 / 3 条评论 / 分类: 随心随感