老Linux管理员们都知道SSH(安全shell协议),这是他们软件工具箱中最便利最有用的工具。受信任的主机鉴定方案和系统之间键值交换提高安全性,OpenSSH不需要安全证书或优先键交换即可创建安全加密的远程会议。
配置并使用Linux 客户端
在OpenSSH客户端上,从命令行访问OpenSSH服务器上的其他系统时,仅仅只需要输入ssh host命令,这里“host”是目标系统的主机名。有时候这个主机名不能被解析成IP地址,因为你没有那个系统的DNS,并且它没有在本地系统的/etc/hosts文件中列出来。此时有必要指定目标系统的IP地址而不是主机名,例如:输入ssh 192.168.0.1命令,连接此IP表示的系统。更多的SSH命令如下:
SSH一般使用端口22。如果SSH服务器侦听一个不标准端口,使用下面命令,示例端口号为1234:
除非指定了用户名,否则它将试图登录到一个远程系统,此时用户名与本地系统上的用户名相同。可以使用命令选项指定不同的用户名。下面给出了一般格式,“user”表示用户名。
一个更普遍的指定用户名的方法是使用下面的格式:
通过SSH而不需要打开shell界面即可以在目标系统上执行命令。下面例子中的“command”表示想要执行的命令:
可以在目标系统上指定当前工作路径。在下面的示例中,指定了/home/user为当前工作路径:
可以将上面的多个选项组合到一块,形成更复杂的定制操作:
ssh -p 1234 user@host:/home/user
ssh -l user host command
|
OpenSSH配置文件位于路径/etc/ssh下。OpenSSH客户端主要的配置文件在/etc/ssh/ssh_config路径下,大多数版本都包含足够的解释信息,告诉你怎么使用配置文件。对于有广泛而复杂的说明书系统的版本,例如Debian,可以使用man ssh_config命令,获得足够多的OpenSSH客户端配置信息。
对于安全性而言,一个普遍而重要的配置选项是ForwardX11,它应该被设置成“NO”,从而阻止SSH客户端向网络自动发送X Windows系统信息,甚至在通过SSH连接而没有使用X Windows时,也是一样。使用这个设置,可以指定特定的SSH连接,通过使用- X命令选项,传送X Windows系统信息。在etc/ssh/ssh_config文件中其它配置选项也能执行和服从安全政策,并且可以服务于特殊的安全需要。
基于Windows的SSH客户端微软的Window系统有很多SSH客户端程序,有些是私人的、商业的应用程序,有些是免费软件或共享软件,还有一些是开源软件,例如:OpenSSH。存在命令行客户端程序时,它们之中有些程序被安装成为类似UNIX shell的一部分,现在最常用SSH的图形用户界面程序。它们之中,WinSCP用于SCP和SFTP性能,PuTTY用于SSHshell性能。通过阅读上述的关于Linux的OpenSSH使用信息,则很容易了解WinSCP和PuTTY的用户界面和它们的配置。还可以获得称为OpenSSH for Windows微软Windows OpenSSH的实际端口。
配置并使用Linux服务器
一般地,OpenSSH服务器运行Liunx系统。它可以在Debian GNU/Linux系统中通过/etc/init.d/ssh命令进行重启。相似地,在启动和停止时,只需要将“restart”置换成“start”“stop”即可。Fedora Core Linux系统使用相同的命令格式,但是需要将/etc/init.d/ssh中的“ssh”置换成“sshd”。
与OpenSSH客户端配置文件相似,OpenSSH服务器配置可以通过/etc/ssh/sshd_config文件完成。它的格式与/etc/ssh/ssh_config非常相似,但是其选项有很多不同。配置细节可以通过输入man sshd_config命令查看。
一般将UsePrivilegeSeparation和IgnoreRhosts选项设置成“YES”,而将PermitRootLogin和PermitEmptyPasswords选项设置成“NO”。与OpenSSH客户端一样,使用SSH传输X Windows系统信息的风险非常低,如果没有必要,对任何系统它都应该是不活动的。这样,通常将X11Forwarding设置成“NO”。
在Linux上,它们通常有相当具有安全意识的人进行维护,这些配置选项应该进行恰当配置。一般应该包括PermitRootLogin和X11Forwarding配置选项。
使用OpenSSH
OpenSSH还有另外功能。例如:其他网络协议可以在OpenSSH协议上“打隧道”,从而提供更高的安全性,这已在本文中有所提示。ssh-agent工具可以简化OpenSSH客户端的管理和使用。还有一些不相关的工具,包括SSH隧道支持,例如:Subversion版本控制系统。它的潜能是无穷尽的,不可能找到它们的终点。
使用多台电脑的Linux新用户,可能不会一下子了解SSH的价值。他们都习惯于微软的Windows操作, Windows上的界面已经优化好了,在某种程度上,反而不易于进行远程管理。即算有服务器管理和远程技术支持,使用诸如Windows Remote Desktop和Terminal Services for Windows等远程管理工具,其有效性也相当有限,并且不鼓励通过网络直接使用Windows资源。
相反,Linux用户在单个系统上运行他们的日常程序,并且在电脑上经过简单安装就能通过SSH访问这些程序。很多 Linux管理员将坐在一台电脑前面,完成不在同一个地方的多台电脑上的工作,包括email、写作、编程,这不是一两个网络应用程序。对SSH的性能越熟悉,则其用处越大,同时也越信任它。但是从Windows中走出来的Linux用户还不能立即感受到SSH推动生产力的能力。
OpenSSH的配置和使用是值得学习的,即使你现在不能立即看出其作用,假以时日,你会离不开它的。