Secure Shell(SSH)的开发是为了克服早期的远程访问程序,如Telnet和rlogin的安全问题。这些程序有若干安全漏洞,包括发送明文口令;对负载未进行加密,导致用户数据泄露;缺乏可支持先进安全方法的模块,比如说双因子认证,对公钥的支持,以及对除了远程访问协议以外的协议的支持。 SSH在Linux上得到了实现,大多数的Unix版本都使用OpenSSH,这个产品受到OpenBSD项目的支持。除了SSH,OpenBSD还提供了使用SSH的安全拷贝(secure copy SCP)以及安全文件传输协议(secure file transfer protocol SFTP)的程序,可以……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
Secure Shell(SSH)的开发是为了克服早期的远程访问程序,如Telnet和rlogin的安全问题。这些程序有若干安全漏洞,包括发送明文口令;对负载未进行加密,导致用户数据泄露;缺乏可支持先进安全方法的模块,比如说双因子认证,对公钥的支持,以及对除了远程访问协议以外的协议的支持。
SSH在Linux上得到了实现,大多数的Unix版本都使用OpenSSH,这个产品受到OpenBSD项目的支持。除了SSH,OpenBSD还提供了使用SSH的安全拷贝(secure copy SCP)以及安全文件传输协议(secure file transfer protocol SFTP)的程序,可以让用户简单地去将数据拷贝到系统中。
SSH是很安全的,甚至可以在不安全的私有和公共因特网上使用。比如说,可以使用SSH,通过一个租用的T1线路或者在私有连接不可用的情况下,通过公共的因特网连接到远程合作伙伴的Unix系统。
在本文中,我会介绍SSH的基本用途,以及通过SSH会话进行通道通信的更高级的话题。
SSH的执行
SSH的简单形式可以被用于远程连接一个系统。最基本地,程序可以开启一个会话,让用户登陆并提供一个在/etc/passwd中指定的Shell。
要开启一个远程shell,可以简单地通过远程服务器的名字或者IP地址来执行SSH:
~$ SSH 192.168.1.3
如果用户之前没有开启过到主机的会话,那么会显示一个警告,提示远程主机未知:
The authenticity of host '192.168.1.3 (192.168.1.3)' can't be established.
RSA key fingerprint is d2:af:9e:c7:52:97:d2:55:e8:3e:83:a4:eb:98:a1:b6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.3' (RSA) to the list of known hosts.
如果警告提示密钥不匹配,那么您就需要去确定是否密钥已经失密了,或者是否远程主机进行了一些不得不改变密钥的活动(如安装了新的操作系统,移除或者重新产生了密钥)。一旦会话被建立,用户就可以像是在本地通过一个shell账号使用系统一样,将所需的正常程序在远程主机上进行执行。
默认情况下,SSH将本地用户的账号名传递到远程主机。但是,如果用户的ID和本地用户ID不匹配的话,可以在SSH命令中使用-1参数:
SSH -l rmccarty 192.168.1.3
SSH通道
SSH提供了一个强大的功能-通道,不仅可以对远程登录中的交互信息进行加密,可以让其他的信息通过通道进行发送。信息会直接发送到远程服务器或者远程网络上的其它设备。
从本地到远程的SSH通道:一个基本的例子是,当远程用户在对一个中心站点有SSH访问的同时,也需要在远程站点安全地访问内部网Web服务器时,可以将内部网放到互联网中,来实现这种访问需求,但这种方法是不安全的。一个更安全的解决方案,是在主机上使用SSH,通过远程SSH网关,将访问重定向到Web服务器。
假设远程的SSH服务器是192.168.1.3,并且远程的web服务器是192.168.1.4,在端口80上运行。那么可以通过以下方法建立一个SSH通道:
SSH -L 80:192.168.1.4:80 192.168.1.3
-L告诉本地SSH客户端,通过192.168.1.3上的SSH网关,将本地主机上的80端口(参数中的第一个80)与远程主机192.168.1.4 (Web服务器)上的80端口进行绑定。这样,用户就可以在本地系统上使用http://localhost:80打开一个浏览器,并看到远程Web服务器所提供的网站内容。(如果需要,您也可以使用本地系统的IP地址来代替localhost)。
80端口是一个特权端口( 即小于1024的端口),并由root用户进行控制。所以通常需要建立一个更高数值的本地端口,比如在相同的例子里使用8080:
SSH -L 8080:192.168.1.4:80 192.168.1.3
现在,用户可以使用http://localhost:8080连接到远程Web站点并正确的连接到Web服务器的80端口。通过提供从本地到远程的通信通道,SSH提供了一种访问远程服务的简单方法。这个解决方案是一个很理想的情况,即一个远程站点发起了会话,并需要访问远程资源。但当远程站点需要建立一个连接,并通过会话提供对本地服务的访问时,这个解决方案就不可用了。这个从远程到本地的通道可以通过使用-R参数来达到和从本地到远程相似的效果。
从远程到本地的SSH通道:在这个例子中,我们假设本地的站点需要剔除一个批处理进程,然后在一定时间内提供FTP服务,以便远程站点可以从本地站点下载文件。请记住,对于端口适用同样的规则:root用户会使用数值小于1024的端口。
通道可以通过以下命令来发起:
SSH -R 23:192.168.1.3:23 192.168.1.3
这意味着,远程SSH网关会在自己的23端口开启一个套接字(通过参数192.168.1.3:23),并将该端口上接收到的任何信息通过通道回送到23端口。一旦通道被建立,远程站点上的用户可以就像192.168.1.3在运行一个FTP服务器一样,使用ftp连到该机器。
优化通过SSH通道的通信
SSH提供了多个有用的参数,用于优化通过通道的通信。这些参数无论是在通过互联网或者私有网络时,都是很有用的。
压缩:通过实时的压缩信息,SSH可以让事务更快地得到完成。一般来说,压缩可以加速交互式通信,如通过通道运行一个shell命令,以及那些适合于压缩的数据(例如,含有大量文本的文档)。但是,压缩是有开销的,而且经常会使,不使用高速线路而采用压缩所带来的好处所剩无几。开启压缩的参数是-C。
非交互的:如果一个远程登录在一个加密会话中不再需要了,那么可以对远程命令进行禁用。这对于简单的端口定向或者批处理来说是很有用的。对于交互,不执行远程shell的参数是-N。
SSH也提供了一些命令,允许对基本的文件交互,可以通过安全的通道来进行直接的交互。对比于执行SSH通道以及其它的命令(如FTP)将文件传输过一个线路,这使得能利用一个单独的命令来对批传输进行优化。可以使用SCP和SFTP来代替原始的操作系统命令RCP和FTP。
在您的Linux网络上利用SSH的优势
SSH提供了一种在私有和公共网络之间加密数据的安全方法。SSH避免了早期实现中不对密码进行加密以及公开发送数据的缺点。除了这些基本的安全功能外,SSH还提供了安全通道。请试试这些例子,并将SSH添加到您的安全计算工具包中。
相关推荐
-
托管OpenStack私有云能够获得支持or单打独斗?
OpenStack私有云托管作为一种服务可以简化企业的部署和运营,并强调了云计算的优势,而非Linux的优化……
-
从零开始构建属于自己的Linux发行版
当你从头开始构建Linux,就可以充分和完整地了解Linux平台。Linux管理员在IT界内更神秘,因为他比其他任何IT专业人员都更了解计算机内部工作。
-
使用Red Hat或Debian包管理器简化Linux管理
Linux软件包管理使用的软件库,它提供了软件包的安装源。Red Hat和Debian的软件包管理器功能类似,但结构上的差异将影响Linux管理。
-
关于apt-get:非Linux管理员应该知道的那些事
Apt-get是广泛应用在Unix和Linux系统中的应用程序管理器,Windows和Linux管理员也可以受益于其功能。