服务器 频道

如何构建安全的远程登录服务器(下)

    【IT168 专稿】 在上两篇文章中(),介绍了如何建立OPENSSH远程登录服务器,以及如何加固OPENSSH服务器。下面继续介绍。

六、应用Linux 下的SSH客户端连接OPENSSH服务器

    OpenSSH带有多种SSH不具备的功能。比如其它网络协议可以在OpenSSH协议中建立“隧道”,从而提供增强的安全性,如在SSH连接上使用远程X Window System。ssh-agent等工具可以让OpenSSH客户端的管理和使用变得更简单。

    1.Linux下的SSH客户端


 
    其中最常用的是ssh和sftp

   ssh是命令行工具,格式如下:

ssh   [-1246AaCfghkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
           [-D port] [-e escape_char] [-F configfile] [-i identity_file]
           [-L port:host:hostport] [-l login_name] [-m mac_spec] [-o option]
           [-p port] [-R port:host:hostport] [-S ctl] [user@]hostname [command]

主要参数:

SSH命令参数:

-a:利用这个参数,可以使转发的认证代理无效。其结果是使已装入内存的口令无效。如
果愿意,你也可以针对每台主机指定这个参数,而不是使其成为全程的设置。

-c cipher:可以通过这个参数为你的网上传输指定一个用来加密数据的密钥对。

-C:该参数将使ssh压缩所有通过Secure Shell客户端发送的数据,包括输入、输出、错误消息及转发数据。它使用gzip算法,压缩级别可通过设置配制文件中的参数Compressicn Level来指定。这对于缓慢的传输线路特别有用的。但对于传输速度已经很快的网络则显得没有必要。同样,你可以利用配制文件针对每台主机配置这个参数。

-f:该参数将ssh连接送入后台执行。这在验证已经完成且TCP/IP转发已经建立的情况下
会生效。这对在远程主机上启动X程序显得十分重要。其后用户将被提示要求输入口令(提供的认证代理不运行),然后将连接送往后台。
-g:该参数允许远程主机通过端口转发与主机端口相连,通常情况下仅允许本地主机这样
做。

-k:这个参数使Kerberos转发功能无效。

-l login_name:这个参数指定你在远程主机上的登录用户名。默认情况下该用户名与你
在本地机上的用户名相同。它可以通过配置文件为不同的主机量体裁衣。这个参数是一个很
实用的参数,因为许多人在不同的主机上有着不同的用户名。

-L port:host:hostport这个参数转发在本地主机上的指定端口与远程主机上的指定端口
连接完成的信息。

-n :这个参数与-f参数类似。然而,在需要敲入口令时它将不会工作。标准输入由
/dev/null重定向而得到,当SecureShell客户端被送往后台时必须使用它。这个参数在用来发送X流量至远程主机时被普遍地使用。最好在使用该参数时启用认证代理。

-o option:在命令行参数未被定义时,该参数用来从配置文件中传递参数。这包括
StrictHostke yChecking和Use Rsh,它们没有自己的命令行参数。

-p port:可以指定哪个端口用作SecureShell客户端与服务器的连接。默认值为22,它为
SecureShell而保留。记住,除非特殊指定,用于服务器的端口号在/etc/services文件中定义。可以通过配置文件针对不同的主机而分别设置。

-P:使用大于1023的端口号(非特权的端口)。不能使用这些端口进行rhost认证。(无论是
它自身还是与RSA的组合)。

-q:这个参数选用哑模式。这意味着任何信息,包括警告与诊断信息都不会被显示出来。
在你碰到认证或连接问题时,最好关闭该模式。

-R port:host:hostport该参数转发远程主机指定端口到本地主机指定端口上的连接。它
和-L参数的工作过程刚好相反。套接字监听远程主机上的端口,只要针对该端口有一个连接,它将被转发到本地主机和主机端口。该转发端口可以在不同的主机上通过配置文件来进行不同的配置。特权端口只能在以超级账号登录到远程主机时转发。

-t该参数通过指定一个伪终端迫使SecureShell客户端以交互模式工作,即使在给定命令
的情况下也是如此。它被用于执行在远地主机上的基于屏幕的程序。

-V:该参数打印出客户端的版本号后退出。

-v :详尽模式。该参数使ssh打印出调试信息,在调试连接、认证及配置问题时该参数特
别有用。

-x:该参数用于X流量转发,X被公认为在启动时是不安全的,对安全敏感的站点最好设
置这个参数。该参数可以通过配置文件为每一台主机分别设置。

    其他参数有关OpenSSH的完整使用信息,可以查看OpenSSH的手册页manpage。Manpage是传统的Unix手册文档系统的一部分,要想在Linux上查看OpenSSH的manpage,只需要在命令行中输入man ssh 。之后返回的信息将告诉你OpenSSH客户端的命令行可选项、配置文件、各个版本的已知bug、会影响操作的外壳环境变量以及相关的manpage。从中你可以发现,与之相关的manpage还包括sshd(OpenSSH服务器)的manpage,ssh-agent(SSH登录管理工具)的manpage,以及OpenSSH工具包中的一系列工具。网络链接:http://www.eos.ncsu.edu/remoteaccess/man/ssh.html

    (1)首次命令测试:

ssh -l [your accountname on the remote host] [address of the remote host]
ssh -l cao@192.168.0.3

如果OpenSSH工作正常,你会看到下面的提示信息:

The authenticity of host [hostname] can''t be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?

OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入"yes"。这将把这台主机的"识别标记"加到"~/.ssh/know_hosts"文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。登陆过程见图5。
 
 

图5 首次登录界面

    (2)快速自动登录

    通常网络管理员要快速登录SSH服务器,可以这样设定,如www.xxx.com 域上有一个cjh用户。修改客户端配置文件/et/ssh/ssh_config 添加以下内容:

Host xxx
HostName www.xxx.com
User cjh
ForwardAgent yes
Compression yes

    存盘退出。以后使用命令:ssh xxx,ssh服务器会自动从配置文件中查询服务器名称并且使用cjh的用户名称登录。

    2.sftp

    sftp 工具可以用来打开一次安全互动的 FTP 会话。它与 ftp 相似, 只不过,它使用安全、加密的连接。它的一般语法是:sftp username@hostname.com。一旦通过 验证,你可以使用一组和使用 FTP 相似的命令。

Sftp命令格式:sftp [-1vC] [-F ssh_config] [-b batchfile] [-o ssh_option] [-s subsystem|sftp_server] [-S program] [-o ssh_option] [host]
sftp [[user@]host[:file [file]]]
sftp [[user@]host[:dir[/]]]

主要参数:

-c cipher : 这是和ssh中定义的选项相同的选项,因为它直接被传送到ssh。
-d debug_level_spec:该选项定义你接收的调试信息的数量。和ssh2使用的选项相同。
-p port :可以指定客户端连接到哪个端口上的服务器。默认设置为2 2号端口,该端口是为Secure Shell保留的。记住,除非另外指定,一般情况下用于服务器的该端口定义在文件/etc/services中。它可以在配置文件中为每台主机单独指定端口。
- v :冗余模式。与其他Secure Shell客户端一样,它使得sftp打印关于它的过程的调试信息。它打印出调试级为2的信息,这在调试连接、认证和配置问题时有帮助,和用在scp 中的相同选项类似。
应用实例:
sftp dmtsai@192.168.1.12
Connecting to 192.168.1.12...
dmtsai@localhost''s password: <== 输入密码
sftp>

    SFTP相关子命令的使用方法如下:


 

 

    3.scp

    scp的作用是在于可以将文件拷贝到远程主机或本地主机。所以,取决于你所要发送的文件的位置(要么在远程主机,要么在本地),你必须指定用户名、主机名、目录和文件。听上去这有点复杂并且需要记住许多东西。但只要正确地使用了这些参数就会得到正确的结果。比如说我会经常使用scp在家中Linux笔记本与ISP中心上的服务器的账号之间进行文件拷贝。

scp命令格式:
scp [参数] 文件1[...] 文件2

主要参数:

-a:为每个文件打开显示功能。信息将显示拷贝每个文件的进程。如果你希望全程地
打开这个功能,可以使用-Q选项。

-A:该选项关闭针对每个文件的设计信息显示功能。如果在程序脚本中使用scp,你可以
使用-q选项完全关闭这个功能。-B批处理模式。该模式防止对口令的输入而使你能在程序脚本中使用scp。
-c cipher这是一个与ssh相同的选项,因为它被直接传递给ssh。

-C这是一个与ssh相同的选项,因为它被直接传递给ssh。

-iidentity_file这个选项也和在ssh被定义的同名选项一样,其选项值将被直接传递到ssh。
-L :该选项使用大于1023的端口,即那些非特权端口。你不能将它用于rhosts认证。它对那些通过无配置文件的防火墙连接是十分有帮助的。该选项与ssh的-p选项一致。也可以在配置文件中写上Use PriledgePort=no或在命令行中加上“-o UsePriviledgePort=no”来实现该选项的功能。
-ossh_option:该选项的指定值将被直接传递给ssh。

-p:保存源主机上的文件属性。属性包括:修改时间、读写时间及初始文件的模式。该选
项直接从rcp而来,在你希望备份文件且需要确保文件完整性时它是十分有效的。
-P port:可以指定客户端在哪个端口上与服务器相连接。默认值为端口22,它为Secure
Shell所保留。除非特殊指定,会在文件/etc/services中为服务器指定该端口。也可以为
每台主机分别配置,但与ssh稍有不同,这是因为rcp使用-p来保存文件的属性。

-q:该选项关闭统计信息显示功能,它并不针对单个文件,而是为所有的文件服务。

-Q该选项打开统计信息显示功能。与-q类似,针对单个文件打开该功能时,使用-a选项。

-r搜索完整的目录并拷贝该目录下的所有文件。

-S path_to_ssh:该选项指定能找到ssh的路径。在将ssh安装在非标准目录下时该选项十
分有用。

-v详尽模式。该模式使ssh和scp显示进程的调度信息。在调试连接、认证和配置所出现
的问题时,该选项很有用处。

应用实例:

    将文件options.cipcb从服务器复制到客户机主机的/etc/cipe/ 目录中。
# scp root@192.168.1.9:/etc/cipe/options.cipcb0 /etc/cipe/options.cipcb0
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''192.168.1.9'' (RSA) to the list of known hosts.
root@192.168.1.9''s password:
options.cipcb0       100% |***********************************|    61       00:00

    4.图形界面工具:gFTP

    如果你使用命令行感觉比较繁琐。这里我们介绍一个安全快捷的数据传输工具:gFTP,它可以和SSH整合在一齐,提供一个图形化的加密传输方案。gFTP是一个多线程的FTP客户端,用GTK+编写。它支持多个线程同时下载,支持断点续传,支持FTP、HTTP和SSH协议,支持FTP和HTTP代理,可以下载整个目录,支持文件队列,支持缓存,支持拖拽操作,是一个很好的FTP客户端管理器。许多Linux发行版本都带有gFTP,也可以在其官方网址(http://www.gftp.org/ )下载。gFTP工作界面见图。使用方法在gftp登录界面上,选择gftp 下拉菜单 FTP-> Options(选项), 在弹出的窗口中,选择SSH选项卡,在SSH2 sftp-server path框中填写/usr/libexec/openssh;并勾选Need SSH User/Pass;点击Save(保存)按钮,保存设置。 设置好后,在gftp登录界面上、登录密码后面的下拉菜单中选择SSH2。此时,输入远程主机名(或IP地址)、端口(22)、用户名、密码,按左侧的连接按钮,即可登录成功。这种方式对于登录SSH服务器很有用。
 
  

图6 gFTP工作界面


Gftp 主要包括8个窗口:

1. 开始连接OPENSSH服务器按钮。
2. OPENSSH服务器的IP地址或者域名。
3. 连接OPENSSH服务器的端口。
4. 连接OPENSSH服务器工作情况。
5. 连接OPENSSH服务器用户名称。
6. 连接OPENSSH服务器用户口令。
7. 选择的SSH协议版本。
8. 断开连接OPENSSH服务器按钮。

    到此为止我们介绍了Linux 下的SSH客户端如何登录连接OPENSSH服务器,后续会重点介绍Windows 下SSH客户端登录OPENSSH服务器方法,敬请关注。

0
相关文章