一般不需要修改OpenSSH客户端配置文件。对于给定用户,共有两个配置文件,分别是~/.ssh/config(用户专用)和/etc/ssh/ssh_config(全局共享)。要按照该顺序读取这些文件,对于给定的某个参数,它使用的是读取过程中发现的第一个配置。用户可以通过以下方式将全局参数设置覆盖掉:在自己的配置文件中设置同样的参数。在ssh或scp命令行上给出的参数的优先级要高于这两个文件中所设置的参数的优先级。

用户的~/.ssh/config文件必须由该用户所有(他是目录”~/”的所有者),并且除了所有者之外任何人都不能写入该文件。否则客户端就会给出一条错误消息然后退出。这个文件的模式通常被设为600,这是因为除了它的所有者之外任何人都没有理由能够去读取它。

这些配置文件中的配置行包含着声明,这些声明均以某个关键字(不区分大小写)开头,后面是空白,最后是参数(区分大小写)。

可以使用关键字Host来使声明只作用于特定的系统。Host声明作用于它与下一个Host声明之间的所有配置行。在主机名中,可以使用通配符*和?。

Host hostnames

将下面的声明(

直到下一条Host声明)都指定为只适用于hostnames。hostnames采用的格式应该与在命令行上所用的格式一样,而且也能够包含通配符*和?。单个*指定所有主机。

CheckHostIP yes|no

如果将其设置为yes(默认值),那么除了主机名之外,还可以采用IP地址来识别known_hosts文件中的某个系统。若设置为no,则只能使用主机名。

ForwardX11 yes|no

如果设置为yes,则自动通过一条安全通道以不可信模式来转发X11连接,并设置shell变量DISPLAY。也可以在命令行上使用选项”-X”以不可信模式重定向X11连接。这个参数的默认值是no。要想让X11转发起作用,还必须将服务器上的/etc/sshd_config文件中的X11Forwarding设置为yes。更多信息请参见1.6节的”X11转发”部分。

ForwardX11Trusted yes | no

如果设置为yes,那么自动通过一条安

全通道以可信模式来转发X11连接,并设置shell变量DISPLAY。也可以在命令行上使用选项”-Y”以不可信模式重定向X11连接。这个参数的默认值是no,但是Red Hat Linux将其设置为yes。要想让X11转发起作用,还必须将服务器上的/etc/sshd_config文件中的X11Forwarding设置为yes。更多信息请参见1.6节的”X11转发”部分。

HostbasedAuthentication yes | no

若设置为yes,则尝试着进行rhosts身份验证。对于安全要求更高的系统,请将其设置为no(默认值)。

HostKeyAlgorithms algorithms

其中algorithms是一个由逗号隔开的算法列表,客户端按照优先级顺序依次使用这些算法。从ssh-rsa或ssh-dss中选择算法(默认值为”ssh-rsa, ssh-dss”)。

TCPKeepAlive yes | no

如果设置为yes(默认值),就定期检查连接是否存活。如果服务器崩溃或者由于其他原因导致连接死掉,那么这种检查将会导致ssh或scp连接中断,即便只是暂时的。若将这个参数设置为no,则会导致客户端不去检查连接是否存活。

这项声明用到了TCP keepalive选项,它不可加密,并且容易受到IP欺骗(IP Spoofing)。如果希望采用能够防止IP欺骗的替代选项,可以采用基于服务器的相关技术,请参见1.4.6节的”ClientAliveInterval”部分。

StrictHostKeyChecking yes | no | ask

决定OpenSSH是否将主机密钥添加到用户的known_hosts文件中以及如何添加。如果设置为ask(默认值),那么在连接新系统时会询问是否添加主机密钥;如果设置为no,就会自动添加主机密钥;如果设置为yes,就要求手工添加主机密钥。若将参数设置yes或ask,则当某系统的主机密钥发生改变之后,OpenSSH会拒绝连接到该系统。对于安全性要求较高的系统,请将此参数设置为yes或ask。

User name

指定登录系统时所用的用户名。用Host声明来指定系统。该选项意味着,在远程系统上登录时,如果使用的用户名不同于在本地系统上登录所用的用户名,那么不必在命令行上输入用户名。、

很有用的两个参数,可以解决多个系统共享单个IP时的登陆冲突,不用每次去修改或者删除known_hosts文件了:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null