15.2 登录另一台Linux服务器
作为一款服务器操作系统,Linux充分考虑了远程登录的问题。无论是从Linux、Windows还是其他一些操作系统登录到Linux都是非常方便的。支持多个用户同时登录对于服务器而言非常重要--这正是Linux擅长的。
有多种不同的协议可供选择,但SSH也许是其中"最好"的。这种协议提供了安全可靠的远程连接方式,SSH将贯穿于本节的讨论中。
15.2.1 安全的Shell:SSH
SSH是secure shell的简写,意为"安全的shell"。作为rlogin、rcp、telnet这些"古老"的远程登录工具的替代品,SSH会对用户的身份进行验证,并加密两台主机之间的通信。SSH在设计时充分考虑到了各种潜在的攻击,给出了有效的保护措施。尽管现在SSH已经转变为一款商业产品SSH2,但开放源代码社区已经发布了OpenSSH软件作为回应。这款免费的开源软件由FreeBSD负责维护,并且实现了SSH协议的完整内容。
要从Linux下通过SSH登录另一台Linux服务器非常容易--前提是在远程服务器上拥有一个用户账号。打开Shell终端,执行ssh -l login_name hostname命令,应该把login_name替换成真实的用户账号,把hostname替换成服务器主机名(或者IP地址)。下面这条命令以liu 用户的身份登录到IP地址为10.71.84.145的Linux服务器上。
- $ ssh -l liu 10.71.84.145
如果是初次登录,SSH可能会提示无法验证密钥的真实性,并询问是否继续建立连接,回答yes继续。用户口令验证通过后,SSH会反馈上次登录情况并以一句"Have a lot of fun..."作为问候。
- The authenticity of host '10.71.84.145
(10.71.84.145)' can't be established. - RSA key fingerprint is c9:58:fd:e4:dc:
4b:4a:bb:03:d7:9b:87:a3:bc:6a:b0. - Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added '10.71.84.145'
(RSA) to the list of known hosts. - Password:
- Last login: Sun Nov 9 10:38:30 2008 from console
- Have a lot of fun...
- liu@linux-dqw4:~>
注意Shell提示符前的用户和主机名改变了,表示当前已经登录到这台名为linux-dqw4(IP地址10.71.84.145)的服务器上。接下来的操作读者应该很熟悉了,例如用ls命令查看当前目录中的文件信息。
- lewis@linux-dqw4:~> ls
- bin Desktop Documents public_html
时刻记住当前做的所有操作都发生在远程服务器上。当连接到几台不同的服务器时,管理员常常会在来回切换Shell的过程中搞糊涂。因此,尽量不要同时开启3个以上的远程Shell。时刻注意Shell提示符前的主机名,并且在执行重要操作时保持警惕,是避免灾难的重要途径。
注意:在任何时候直接使用root账号登录远程主机都不是一个好习惯。正确的做法应该是使用受限账号登录,然后在需要的时候通过su或者sudo 命令临时取得root权限。
完成工作后,使用exit命令可以结束同远程主机的SSH连接,这将把用户带回到建立连接前的Shell中。
- lewis@linux-dqw4:~> exit
- logout
- Connection to 10.71.84.145 closed.
- lewis@lewis-laptop:~/shell$
SSH服务默认开启在22号端口,服务器的守护进程在22号端口监听来自客户端的请求。如果服务器端的SSH服务没有开启在22端口(这通常是为了防范居心不良端口扫描程序),那么可以通过SSH的-p选项指定要连接到的端口。下面这条命令指导SSH连接到远程服务器的202端口。
- $ ssh -l liu -p 202 10.71.84.145
如果用户需要在远程主机上运行X应用程序,那么首先应该保证对方服务器开启了X窗口系统,然后使用带-X参数的SSH命令显式启动X转发功能。
- lewis@lewis-laptop:~/shell$ ssh -X -l liu 10.71.84.145
- Password:
- Last login: Sun Nov 9 13:41:20 2008 from 10.71.84.18
- Have a lot of fun...
下面这条命令在所登录到的服务器上运行Firefox浏览器,注意服务器会反馈一系列信息告诉用户此刻发生了什么。
- liu@linux-dqw4:~> firefox
- Launching a SCIM daemon with Socket FrontEnd...
- Loading simple Config module ...
- Creating backend ...
- Reading pinyin phrase lib failed
- Loading socket FrontEnd module ...
- Starting SCIM as daemon ...
- GTK Panel of SCIM 1.4.7
- ...
SSH会把对方服务器上的Firefox界面完完整整地传输到本地,这样用户就可以在当前PC上使用远程服务器上的Firefox了。如果两台主机距离比较长,或者网络状况不太理想的话,那么传输一个X应用程序界面会比较慢,但最终应该能出现在本机的屏幕上。