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的博客

没有评论: