分类: LINUX
2009-03-27 09:57:36
Telnet最基本应用就是 用于Internet的远程登录,共享远程系统中的资源。它可以使用户坐在已上网的电脑键盘前通过网络进入的另一台已上网的电脑,并负责把用户输入的每个 字符传递给主机,再将主机输出的每个信息回显在屏幕上。这种连通可以发生在同一房间里面的电脑或是在世界各范围内已上网的电脑。Telnet服务与其他网 络应用一样属于客户机/模型,一旦连通后,客户机可以享有所提供的一切服务。可见这种终端的服务对网络管理员来说非常重要。
一、 传统远程登录安全隐患
但是传统的网络服务程序telnet在本质上都是不安全的,因为它在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数 据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。
所谓“中间人”的攻击方式,就是“中间人”冒充真正的接收你传给的数据,然后再冒充你把数据传给真正的。和你之间的数据传送被“中间人”转手后做了手脚之后,就会出现很严重的问题。
二、 SSH能保护什么
SSH可以防止IP地址欺骗、DNS欺骗和源路径攻击。SSH提供给用户身份的主要方法就是使用公共密钥加密法。根据所用SSH版本的不同,可以采用RSA或者Diffie-Helman和数字签名标准来实现。也可以选择使用各种不同的身份方法,包括公共密钥法、rhosts/shosts法和密码,这些方法都很简单安全。的确,利用SSH即便是使用.rhosts方式也能确保安全性。
SSH所提供的是通过网络进入某个特定账号的安全方法。每个用户都拥有自己的RSA密钥。通过严格的主机密钥检查,用户可以核对来自的公共密钥同先前所定义的是否一致。这样就防止了某个用户访问一个他没有相应公共密钥的主机。注意如果你想了解更多有关RSA、公共密钥加密和身份的知识,只需进行很小的修补,SSH就能保护一些不安全的连接,如X窗口。这将帮助你提高所管理的网络连接的安全性。
由于SSH提供了主机身份,利用公共密钥而不是IP地址,所以它使网络更加安全可靠,并且不容易受到IP地址欺骗的攻击。这有助于辨认连接到你系统上的访问者身份,从而防止非法访问者登录到你的系统中。如果用户或系统打算采用rhosts/shosts的身份方式,主机就面临着公共密钥和私人密钥信息的挑战。否则,就得使用其他方式。
在发
生之前,会话已经通过对称密钥技术进行了加密,如DES、三重DES、IDEA、Twofish或Blowfish。这就使得会话自身被加密,从而防止了
别人在你输入或同别人聊天时截取你的信息。同时也意味着你所输入的密码不会被他人读取,因为它也被加密了。加密技术基本上可以防止有人监听你的数据,同时
也确保了数据的完整性,即防止有人肆意篡改你的信息和数据。表1列出了SSH所能防范的网络攻击。
表1 SSH可以防范的网络攻击类型 |
三、 SSH和客户端工作流程
SSH和客户端工作流程见下图。
图1 SSH和客户端工作流程 |
SSH的安全验证方式
用户通过SSH可以把所有传输的数据进行加密,使“中间人”的攻击方式不可能实现,而且也能够防止DNS和IP欺骗。它还有 一个额外的好处是传输的数据是经过压缩的,可以加快传输的速度。SSH作用广泛,既可以代替Telnet,又可以为FTP、POP,甚至为PPP提供一个 安全的“通道”。SSH在预设的状态中,提供两个功能:一个是类似Telnet的远程联机使用Shell,即俗称SSH功能;另一个是类似FTP服务的SFTP-Server功能,可提供更安全的FTP服务。
SSH的安全验证如何工作呢?主要依靠联机加密技术。从客户端来看,有以下两种安全验证级别:
1.基于口令的安全验证(ssh1) 只要知道自己的账号和口令,就可以登录到远程主机。所有传输的数据都将被加密,但是不能保证正在连接的就是想要连接的。可能受到“中间人”的攻击。
2.基于密匙的安全验证(ssh2) 需要依靠密匙,即用户必须为自己创建一对密匙,并把公用密匙放在需要访问的上。如果要连接到SSH上,客户端软件就会向发出请求,请求用密匙进行安全验证。收到请求之后,先在该的home目录下寻找公用密匙,然后把它和发送过来的公用密匙进行比较。如果两个密匙一致,就用公用密匙加密“质询”(challenge),并把它发送给客户端软件。客户端软件收到“质询”后,就可以用私人密匙解密再把它发送给。使用这种方式,用户必须知道自己密匙的口令。与第一种级别相比,这种级别不需要在网络上传送口令,不仅加密所有传送的数据,而且阻止了“中间人”攻击方式。整个登录的过程一般需要10秒。
四、安装配置OPENSSH
SSH(Secure Shell)是以远程联机服务方式操作时的较为安全的。 它最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。SSH是由客户端和服务端的软件组成的,有两 个不兼容的版本,分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x
1. 安装与启动OpenSSH
在Red Hat Linux 7以及其上的发行版本中已经包含了与OpenSSH相关的软件包,如果没有,则可以从OpenSSH的主页下载RPM包自行安装,OpenSSH的主页是 地址是: 。首先查询系统是否安装了软件包。
#rpm -qa |grep openssh
如果没有安装则执行如下命令。
#rpm -ivh openssh-3.5p1-6
#rpm -ivh openssh-server-3.5p1-6
#rpm -ivh openssh-askpass-gnome-3.5p1-6
#rpm -ivh openssh-clients-3.5p1-6
#rpm -ivh openssh-askpass-3.5p1-6
安装完成之后,可以使用下述命令中的进行启动。
#service sshd start
查看opensshd进程和端口号是否正常,使用下面命令,结果见图2:
# netstat -nutap | grep dhcpd;ps -ef | grep dhcpd
图2查看opensshd进程和端口号是否正常 |
另外,如果想在系统启动时就自动运行该服务,那么需要使用命令:
#chkconfig -level 345 sshd on
重新启动OpenSSH命令:
#/etc/rc.d/init.d/sshd restart
停止OpenSSH命令:
#/etc/rc.d/init.d/sshd stop
查看目前OpenSSH状态命令:
#/etc/rc.d/init.d/sshd status
1.SSH面临的安全隐患
(1) 软件漏洞
因为早期的OpenSSH版本(3.0.0版本)存在安全漏洞。2003年9月,在类Unix的世界里也出现了一个严重的漏洞:Openssh 的溢出漏洞。Openssh是远程终端登录软件,运行在类Unix上。几乎所有的类Unix发行版本都把这个软件作为缺省安装。因此这个软件出现溢出漏洞 影响了几乎所有的类Unix操作系统。
(2) 口令暴力破解
Openssh服务面临的另外一个威胁是黑客采取暴力破解的方式获取用户密码而非法登录SSH。
(3) SSH所不能保护的网络攻击
SSH并不能堵住所有其他端口上的全部漏洞。如果有人通过Telnet攻击你的网络,端口号为23,SSH就不能提供安全保护,因为SSH运行 在另外一个端口。另外一个例子是NFS(NetworkFileSystem,网络文件系统)。如果有人借助NFS安装了根目录,那么你的计算机就会很危 险。而且,SSH不能制止特洛伊木马或拒绝服务(denial-of-service,DoS)类型的攻击。
(4)OpenSSH中可能安放有特洛伊木马
在免费的SSH(SecureShell)软件套件“OpenSSH”中可能被安放了特洛伊木马。如果编译包含特洛伊木马的OpenSSH源代 码,就可能从外部在机器上执行任意指令。有可能包含特洛伊木马的产品包括“openssh-3.4p1.tar.gz”、“openssh- 3.4.tgz”和“openssh-3.2.2p1.tar.gz”。凡是在7月30日以后下载Openssh的用户都必须重新进行确认。如果编译包含 此次警告的特洛伊木马的Openssh的源代码文件,那么特洛伊木马就会在机器上运行。该特洛伊木马每一个小时会试图连接一次某个特定IP地址的TCP端 口:6667。TCP端口6667是IRC(InternetRelayChat)通常所使用的端口。该与特洛伊木马的连接完成之后,就会在上执行任意的指令。此时的访问权限与编译Openssh的用户相同。据CERT/CC表示,利用文件的时间标记及尺寸来判断文件是否包含了特洛伊木马还不够。推荐使用MD5检查和PGP签名进行确认。
2.SSH安全策略
(1) 升级旧版本
升级陈旧的OpenSSH版本,因为早期的OpenSSH版本(3.0.0版本)存在的安全漏洞。2003年9月,在类Unix的世界里也出现 了一个严重的漏洞:Openssh的溢出漏洞。Openssh是远程终端登录软件,运行在类Unix上。几乎所有的类Unix发行版本都把这个软件作为缺 省安装。因此这个软件出现溢出漏洞影响了几乎所有的类Unix操作系统。Redhatlinux描述此漏洞的页面网址 是:rhn.redhat.com/errata/RHSA-2003-279.html。特别是对于一个新配置的OpenSSH来说使用最新稳定版本是最明智的选择,可以在其官方网站()下载其源代码进行编译。最新版本是2005年9月1日发布4.2。
(2)使用xinetd模式运行OpenSSH
OpenSSH能以Stand-alone、xinetd两种模式运行,当用户账号比较少又经常需要连接到SSH时推荐使用xinetd模式运行。使用xinetd方式运行ProFTPD可以有效防范DoS攻击。xinetd模式工作原理见:“教你配置安全的ProFTPD(中),网络链接: ”。使用xinetd方式运行sshd的步骤:
(3)使用使用BlockHosts对抗暴力破解
Openssh服务面临的另外一个威胁是黑客采取暴力破解的方式获取用户密码而非法登录FTP。BlockHosts软件就是利用通过分析日志文件帮助tcp_wrappers实现工作自动化。例如在30秒钟内一个IP地址(192.168.1.23)连续20次登录sshd而
且全部因为密码错误登录失败。那么这个IP地址无疑是非法或者恶意主机。这时BlockHosts会自动将该IP地址写入/etc/hosts.deny
文件。首先编辑你的/etc/syslog.conf文件,一般修改security.*/var/log/security条目内容如下:
security.*;auth.info/var/log/security原因很简单,这样syslogd就把连接到sshd的日志信息记录下来。
BlockHosts官方网站:,最新版本:1.0.0。BlockHosts启动方法:pythonsetup.py BlockHosts是基于命令行模式的,使用非常简单这里就不赘述了。
(4)使用TCP会绕程序
它是针对一系列对荷兰埃因霍温理工大学的系统攻击,WietseVenema开发了一个名为TCPWrappers的简单而优美的工具来控制和 监测到来的网络传输。TCPWrappers修正调用网络服务的xinetd方法。它通过对FTP和Telnet这些缺省的网络服务程序进行“包装”来开 展工作。当建立了一个连接时,最先调用TCPWrappers而不是缺省服务。它对到来的连接进行简单访问控制(通过两个文件—/etc /hosts.allow和/etc/host.deny),记录远程主机的名字,然后运行原来的网络服务程序。
TCP会绕程序(TCPwrappers)为多项服务提供访问控制。多数现代的网络服务,如SSH、Telnet和FTP,都使用TCP会绕程
序。该会绕程序位于进入请求和被请求服务之间。tcp_wrapper可以用来禁止(或者显式的允许)特定的主机对某些服务的访问。简单的说,它的工作原
理是这样的:inetd或xinetd运行很多的服务,其中很多都是由tcpd包装好的。换句话说,tcpd是真正运行这些服务的程序,但是inetd或
xinetd不知道这些(其实它根本不关心)。tcpd根据/etc/hosts.allow和/etc/hosts.deny来判断是否允许传来的连接
请求。tcp_wrapper工作原理见图3。
图3 tcp_wrapper工作原理 |
tcp_wrappers的应用思路是“先放行、后阻止”。对我们Linux
用户来讲比较幸运的是,大多数Linux发行版本中TCP Wrappers 默认已经安装,我们所要作的就是编辑/etc/hosts.allow
和/etc/hosts.deny 这两个文件,它们决定了谁能访问系统和谁不能访问系统。默认情况下,Linux
允许来自任何地方的连接,所以你需要修改配置,根据以下两个原则:
1)尽量使用IP,不要使用域名,域名比IP地址更具有欺骗性。
2)编辑/etc/hosts.deny,禁止来自任何地方对所有服务的访问。语法为:
ALL:ALL,然后在/etc/hosts.allow中添加某些允许访问的主机。
应用实例:
所以我们先把 /etc/host.deny设定为:
ALL: ALL
假设我要允许192.168.10.2的主机使用ssh的服务的话,可以在 /etc/hosts.allow中设定
sshd: 192.168.10.2如果是整个网段的话,就设定为
sshd: 192.168.10.0/255.255.255.0
或者是你可以使用网域的名称
ssh: .ossii.com.cn
如果同一笔数据中有多个位置,可以用 ”,” 分开,例如:
sshd: 192.168.10.2, 10.0.0.120, 192.168.20.0/255.255.255.0, ossii.com.cn.
(5)管理SSH监听端口
在Linux上使用广泛的SSH软件sshd也提供相应的监听端口控制选项。在sshd_config(默认路径是/etc/ssh/sshd_config)文件中,Port 22是sshd监听的端口,即为连接到主机时需要使用的端口。使用以下代码可以指定sshd监听的接口地址:
ListenAddress 192.168.0.254
(6)关闭telnet服务
在OPENSSH一定要关闭telnet服务。如果有人通过Telnet攻击你的网络,端口号为23,SSH就不能提供安全保护,因为SSH运行在另外一个端口。一般新的Linux发行版本已经自动关闭这个服务。查看方法如下:
#cat /etc/xinetd.d/telnet
service telnet
{ disable = yes #yes即表示关闭#
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID }
(7)禁止 root 用户的登录SSH:
任何时候,不许 root用户 以远程联机的方式登入,所以这里建议大家直接将 root 的登入权限拿掉。所以,可以修改 /etc/ssh/sshd_config 这个档案的内容为:
[root@test root]# vi /etc/ssh/sshd_config
PermitRootLogin no #将其改成 no #
[root@test root]# /etc/rc.d/init.d/sshd restart #重新启动 #
(8)启用防火墙保护OPENSSH
SSH 和 CIPE 之类的安全服务可以用于到 LAN 服务的加密远程连接。对于拥有基于 PPP 资源(如调制解调器池或批量 ISP 帐号)的管理员来说,拨号进入可以被用来安全地避开防火墙,因为调制解调器连接是直接连接,通常位于防火墙/网关之后。 然而,对于有宽带连接的远程用户来说,你就需要制定些特殊规定。你可以配置 IPTables 接受来自远程 SSH 和 CIPE 客户的连接。例如,要允许远程 SSH 访问,你可以使用以下规则:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT
(9)使用Protocol 2
如果你没有使用SSH protocol ()1 的机会, 这里建议你关闭protocol 1的使用,因为ssh protocol 1不如protocol 2安全, 还可以有效的阻止攻击者通过修改包携带的版本banner来劫持(hijacking)启动 会话进程并降级你到protocol 1,理论上可以迫使使用ssh 1 来通信。你必须注释掉Protocol 2,1而使用下面的一行来代替:
Protocol 2
(10)不使用r系列命令
伯克利版本的r命令集是UNIX的一个完整的部分。最初,伯克利版本的r命令集是为了提高Telnet的安全性而开发的,使用时不必在网上以明码方式输入密码(那时它是非常成功的)。r服务也提供了主机名或IP地址,Telnet却不能做到这些。r命令的主机名和用户名标志着伯克利服务是在网络安全连接方面有着重大影响的一步。遗憾的是,通过主机名和IP地址方式来提高连接的安全性是不可靠的。攻击者开始使用一些已经公开的能够绕过r命令机 制的IP地址,这就使得攻击者可以从他们自己的主机上发送数据包,并假装是你,而实际上你攻击者被欺骗者的系统根本就没有发送这些包,这就是所谓的IP欺 骗技术。伯克利版本的r命令引用了一系列的文件,允许与另一个主机建立一种无缝连接。这些命令包括远程登录(rlogin)、远程shell(rsh)和 远程拷贝(rcp)。
(11)最后修改配置文件的属性,防止非授权用户修改配置文件:
chmod 644 /etc/ssh/sshd_config
Linux系统是一个典型的多用户系统,不同的用户处于不同的地位。为了保护系统的安全性,Linux系统对不同用户访问同一文件的权限做了不同的规定。
对于一个Linux系统中的文件来说,它的权限可以分为三种:读的权限、写的权限和执行的权限,分别用r、w和x表示。不同的用户具有不同的读、写和执行
的权限。对于一个文件来说,它都有一个特定的所有者,也就是对文件具有所有权的用户。同时,由于在Linux系统中,用户是按组分类的,一个用户属于一个
或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其它用户。因此,Linux系统按文件所有者、文件所有者同组用户和其它用户三类规定不
同的文件访问权限。图4是在笔者机器上的/sshd目录下运行ls -l命令的查看sshd_config文件的权限情况。
图4 sshd_config文件的权限 |
在组群右侧的信息包括文件大小、创建的日期和时间,以及文件名。第一列显示了当前的权限;它有十位。第一位代表文件类型。其余九位实际上是用于三组不同用户的三组权限。sshd_config文件的权限:
-rw-r--r-- 1 test test 39 3月 11 12:04 sshd_config
每种权限设置都可以用一个数值来代表:
r = 4 ;w = 2 ;x = 1 ;- = 0
当这些值被加在一起,它的总和便用来设立特定的权限。譬如,如果你想有读取和写入的权限,你会得到一个值为 6 的总和;4(读取)+ 2(写入)= 6。
sshd_config文件的数字权限设置如下:
(rw-) (r--) (r--)
| | |
4+2+0 4+0+0 4+0+0
所有者的总和为六,组群的总和为四,其他人的总和为四。这个权限设置读作 644。 这里是一个某些常用设置、数值、以及它们的含义的列表:
-rw------- (600) — 只有所有者才有读取和写入的权限。
-rwx------ (700) — 只有所有者才有读取、写入、和执行的权限。
-rwxr-xr-x (755) — 所有者有读、写、和执行的权限;组群和其他人只有读取和执行的权限。
-rwx--x--x (711) — 所有者有读取、写入、和执行权限;组群和其他人只有执行权限。
-rw-rw-rw- (666) — 每个人都能够读取和写入文件。(请谨慎使用这些权限。)
-rwxrwxrwx (777) — 每个人都能够读取、写入、和执行。(这种权限设置可能会很危险。)
六、应用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工具包中的一系列工具。网络链接:
(1)首次命令测试:
ssh -l [your accountname on the remote host] [address of the remote host]
ssh -l
如果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,可以这样设定,如 域上有一个cjh用户。修改客户端配置文件/et/ssh/ssh_config 添加以下内容:
Host xxx
HostName
User cjh
ForwardAgent yes
Compression yes
存盘退出。以后使用命令:ssh xxx,ssh会自动从配置文件中查询名称并且使用cjh的用户名称登录。
2.sftp
sftp 工具可以用来打开一次安全互动的 FTP 会话。它与 ftp 相似, 只不过,它使用安全、加密的连接。它的一般语法是:sftp 。一旦通过 验证,你可以使用一组和使用 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
Connecting to 192.168.1.12...
password: <== 输入密码
sftp>
SFTP相关子命令的使用方法如下:
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 /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.
password:
options.cipcb0 100% |***********************************| 61 00:00
4.图形界面工具:gFTP
如果你使用命令行感觉比较繁琐。这里我们介绍一个安全快捷的数据传输工具:gFTP,它可以和SSH整合在一齐,提供一个图形化的加密传输方案。gFTP是一个多线程的FTP客户端,用GTK+编写。它支持多个线程同时下载,支持断点续传,支持FTP、HTTP和SSH,支持FTP和HTTP代理,可以下载整个目录,支持文件队列,支持缓存,支持拖拽操作,是一个很好的FTP客户端管理器。许多Linux发行版本都带有gFTP,也可以在其官方网址(
)下载。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方法,敬请关注。