2007年1月18日星期四

OpenSSH安装和配置

其实OpenSSH配置一很简单。
注:client表示客服端,server表示服务器。本文以SSH 1.x

一、公钥安装
安装好OpenSSH。

:~# apt-get install ssh

查看你安装的版本:
:~$ ssh -V
OpenSSH_4.2p1 Debian-7ubuntu3.1, OpenSSL 0.9.8a 11 Oct 2005


二、生成公钥
一对密钥必须在客服端计算机上生成。公钥部分存放在需要连接的计算机上,而私钥部分存放在安全的客服端计算机上(缺省为~/.ssh/id_rsa)。使用ssh-keygen(1)工具生成key的代码如下:
client$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase): …
Enter same passphrase again: …

也可以使用
client$ ssh-keygen

以上命令生成的密钥文件在~/.ssh/下,一般为:id_rsa(私钥)和id_rsa.pub(公钥)
如果远程主机使用的是SSH 2.x就要用这个命令:
client$ ssh-keygen -d

然后按提示作。
该命令生的密钥文件一般在~/.ssh/下,一般为id_dsa(私钥)和id_dsa.pub(公钥)。
可以使用如下代码查看你的私钥和公钥:
client/.ssh:$ cat filename

私钥一般是不能让别人知道的。当有其他人知道时,你需要重新生成密钥了。所要确保只用你自己知道,建议:
$ chmod go-w ~/
$ chmod 700 ~/.ssh
$ chmod go-rwx ~/.ssh/*


三、公钥发布
下面将公钥copy到你想要使用SSH登入的服务器计算机上。
# first, upload public key from client to server
client$ scp ~/.ssh/id_rsa.pub server.example.org:

# next, setup the public key on server
server$ mkdir ~/.ssh
server$ chmod 700 ~/.ssh
server$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$ chmod 600 ~/.ssh/authorized_keys
server$ rm ~/id_rsa.pub

确保id_rsa.pub已经写入authorized_keys,可以运行如下代码检测:
client$ ssh -o PreferredAuthentications=publickey server.example.org
Enter passphrase for key '/…/.ssh/id_rsa': …

server$

到这里你已经可以使用SSH登入远程的主机了。

四、配置客服端
OpenSSH 有三种配置方式:命令行参数、用户配置文件和系统级的配置文件("/etc/ssh/ssh_config")。命令行参数优先于配置文件,用户配置文件优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件,所以要把 "/etc/ssh/ssh_config"拷贝并重新命名为"~/.ssh/config"。
标准的配置文件大概是这样的:
[lots of explanations and possible options listed]
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no

还有很多选项的设置可以用"man ssh"查看"CONFIGURATION FILES"这一章。
配置文件是按顺序读取的。先设置的选项先生效。
假定你在www.foobar.com上有一个名为"bilbo"的帐号。而且你要把"ssh-agent"和"ssh-add"结合起来使用并且使用数据压缩来加快传输速度。因为主机名太长了,你懒得输入这么长的名字,用"fbc"作为"www.foobar.com"的简称。你的配置文件可以是这样的:
Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
Compression yes
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no

你输入"ssh fbc"之后,SSH会自动地从配置文件中找到主机的全名,用你的用户名登录并且用"ssh-agent"管理的密匙进行安全验证。这样很方便吧!
用SSH连接到其它远程计算机用的还是"paranoid(偏执)"默认设置。如果有些选项没有在配置文件或命令行中设置,那么还是使用默认的"paranoid"设置。
在我们上面举的那个例子中,对于到www.foobar.com的SSH连接:"ForwardAgent"和"Compression"被设置为 "Yes";其它的设置选项(如果没有用命令行参数)"ForwardX11"和"FallBackToRsh"都被设置成"No"。
其它还有一些需要仔细看一看的设置选项是:
l CheckHostIP yes
这个选项用来进行IP地址的检查以防止DNS欺骗。
l CompressionLevel
压缩的级别从"1"(最快)到"9"(压缩率最高)。默认值为"6"。
l ForwardX11 yes
为了在本地运行远程的X程序必须设置这个选项。
l LogLevel DEBUG
当SSH出现问题的时候,这选项就很有用了。默认值为"INFO"。

参考:1. Jeremy Mates’s Domain
2. Netsword的博客

2007年1月13日星期六

中文乱码解决之路

一 usbdisk中文乱码
在usbdisk工作时,我直接把他拔下来。问题就这样产生了:原本可以显示中文,现在被“????”取代了。寻找解决方案,在ubuntu中文论坛里苦苦搜索。均以失败结束。此时已经凌晨1点了。明天还有六级考试。无奈之下只好作罢。
六级考完,回寝室,进入ubuntu@linux的qq群询问。SaD帮我一起想办法解决。给我提供了很多的解决方案。最后,SaD提供oneleaf写的U盘中文名乱码处理,我意识到可以解决了。但是我无法找到oneleaf提到的/usr/share/hal/fdi/95userpolicy/storage-policy.fdi文件。失望。幸好TubuX提供了另外一种解决方案:
在/etc/fstab中加上下面的内容:

/dev/sda1 /media/usb auto rw,user,noauto,utf8 0 0

使用之,完美解决。

二 firefox浏览网页时出现的中文乱码
但我访问石建的blog终是乱码。SaD提醒我那是编码问题。因此,我在firefox中做如下设置:
View->character encoding->auto-detect->chinese
完美解决。

非常感谢ubuntu@linux中SaD,以及ubuntu中文论坛中oneleaf,express与TubuX。

2007年1月7日星期日

静思

曾经几次从键盘敲入一些文字,但都被删除。曾经等待的图书,虽也确定可以借到,却忘记了取书的时间。确定的约会却以六级为借口推迟,最终以期末而取消。应 交的作业,却迟迟没有发出。疲惫的心装在活跃的身体里。我想在那些时候,或许也是在这个时候我失去了自己,使那个曾经本就不熟悉的人变得更加的不认识。
虽然如此,生命在继续,也在一步步走向灭亡。任凭他从指间消失,还是使用双手将其握住?虽已注定流逝,至少可以以曾经努力给予交代。2007年的第六天即 将过去,但我非常幸运还可以呼吸下一秒的空气。我清晰的记得2007年1月1日的晚餐,Paitaya老师看着同学盘子里没有吃完的菜说:"We cannot waste anything, because these are so many poor men in the world." 那一刻,我觉得自己有义务把自己盘中的蔬菜吃光,即使当时我已经吃好了。
pay it forward深深的感动着,也为那个伟大而又脆弱的男孩而含泪中。这一刻,我想我应该静静的思考。