大家常常都会用到ssh远程登陆linux服务器,但其实ssh可以提供的功能不单如此,还可以实现如文件传输,加密转发等功能。这里就介绍一下:
※系统:红旗DC Server 4.1
1、ssh简介
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。
最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
SSH的安全验证是如何工作的
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。
2、基础
红旗DC Server 4.1默认已经安装好OpenSSH:
openssh-askpass-3.6.1p2-33.30.1.1AX
openssh-clients-3.6.1p2-33.30.1.1AX
openssh-3.6.1p2-33.30.1.1AX
openssh-askpass-gnome-3.6.1p2-33.30.1.1AX
openssh-server-3.6.1p2-33.30.1.1AX
当然,我们也可以通过从http://www.openssh.com/下载,安装。
3、登陆
使用ssh登陆linux服务器是我们用得最多的,默认在系统安装完毕后就已经有提供ssh服务。不过,这个时候root管理员是受限制的,可以修改/etc/ssh/sshd_config:
改为:
然后重新启动sshd服务即可。
要使用ssh登陆的机器,必须安装有ssh的客户端,红旗桌面和服务器产品是已经自带的,Windows平台推荐使用putty。
登陆的方式非常简单:
[-p port]用于指定远端服务器的端口,默认22就不用输入了。
接下来会提示是否接受key认证,确认后,输入密码即可。
RSA key fingerprint is ed:61:e2:ce:40:00:ca:06:93:e8:a4:c2:3a:37:1e:9c.
Are you sure you want to continue connecting (yes/no)?
除此以外,还可以使用:
意思是一样的。
(其中,如果要登陆的用户和远端登陆的用户一致,可以不用指定)
4、拷贝数据
要使用ssh协议拷贝数据,可以使用scp或sftp命令
[-r]表示连子目录拷贝
[-C]表示使用压缩方式
sftp使用的端口是22,而不是普通FTP的21端口。但登陆后,可以使用ftp的命令进行本地和远程文件之间的相互操作。在Windows平台下,还可以使用F-Secure File Transfer工具在图形界面上进行。相当的方便。
5、远程执行命令
其实就是多了最后一个参数,它表示在远端计算机上执行的命令。使用这种方式可以减少退出的步骤。
6、建立相互信任关系
前面的方法,在登陆的时候必须每次都输入密码,有时候这样会引起麻烦(例如在Oracle RAC上)。由于ssh采用的是公钥和私钥的方式,所以可以通过共享公钥的方式达到此目的。
本地上运行:
接下来按回车即可,当看到Enter passphrase的时候,不要输入字符,直接回车。(如果输入passphrase,就需要使用ssh-agent了)
然后你会发现在~/.ssh下有两个新文件: id_rsa和id_rsa.pub,把id_rsa.pub加入到远端机器的~/.ssh/authorized_keys的文件末尾即可。
假设要做的是root用户,则:
今后就可以使用ssh登陆远端机器了。包括scp和sftp都可以。
7、简化远端服务器名字
有时候,我们需要登陆的机器名字很长,可以修改~/.ssh/config文件:
HostName veryverylonglonglongname.linuxfly.com
Port 22
这样就可以直接使用ssh shortname登陆即可。
8、端口转发
这个功能可能平时用得不多,但一旦用起来,将是非常方便的。
ssh端口转发可以实现通过ssh服务器,把发来本地端口的数据转发到另外一台服务器的端口上,这台服务器通常是内网的服务器。
例如我们要实现:
保证上面的ssh进程不要退出的情况下,就可以使用
访问到内网的real server服务器了。
同样的,可以修改/root/.ssh/config文件,添加:
保存后,使用:
保持进程不退出,即可。
9、附录
参考文档:
SSH基础
SSH安装相关
SSH使用指南
※2005-12-08 第一次编写
演示使用relaxscan暴力破解SSH
使用DenyHosts 阻止SSH暴力破解
红旗十周年用户大会——广州站(邀请函)
在Windows下使用红旗HA Cluster 配置工具
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/103751.html