初识linux ssh远程登录协议
一、ssh介绍
所谓ssh就是secure shell的缩写,也就是安全外壳协议,是建立在应用层和传输层基础上的安全协议。那么什么是安全呢,传统的网络服务程序如ftp,telnet等都是不安全的,因为它们都是明文传输,也就是将传输的内容赤裸裸的发送,不管谁截获都知道内容是什么,而ssh不一样,是将传输的内容进行加密过后才发送的,这样就算别人截获内容部知道怎么解密还是没用。当然既然有解密方法那就不是百分之百安全的,只是相对安全而已。
二、ssh加密
既然是加密,那是如何加密的呢。我们自己在写程序的时候往往是用的对称加密,也就是客户端和服务器用的是同一密钥,也就是用相同的方式加密相同的方式解密,但是ssh不一样,客户端和服务器用的是各自的密钥,客户端给服务器传输的时候,用的是服务器的公钥来加密,服务器解析的时候是用的自己的私钥来解密,相反服务器用客户端的公钥加密,客服端用自己的私钥进行解密,这样双方拿到的都是对方的公钥加密用自己的私钥解密。各自都不知道对方的解密方法,就算截获也只能截获各自加密的方法。这是一种非对称密钥系统。
有了这样一种加密方法,那么在两端传输的数据或者口令都是相对比较安全的,因为就算别人截获了也不知道该怎么解密,当然了这只是一种相对安全的方式。
三、ssh配置
其实在我们所使用的Linux系统中,默认就已经含有ssh所有需要的软件了。这时我们就可以小试一下牛刀:
这里我们就成功的登录到了tengpeng这个用户了。后面这个ip就是tengpeng这个用户所在主机的ip地址。那么我们也可以登录到某个主机的root,这个是很危险的,所以一般我们需要将这种登录权限禁止掉,也就是/etc/ssh/sshd_config这个配置文件,刚才用了tengpeng这个账号去vim /etc/ssh/sshd_config 发现里面什么都没有,这个只有root有权限,所以切换到root来操作。这里面有很多需要我们来修改的选项:
是否允许密码方式登录?这里是不是很奇怪,难道还有别的方式登录吗。当然是的,如果管理很多服务器,每次登录过去都要输入密码不是要麻烦死啊。下面就看一下另一种方式密钥登录。
四、ssh登录
前面我们说了通信过程中都是用了加密的方式,而且使用的都是各自的密钥,那么当我们登录的时候,如果不用密码,仅仅将私钥发给服务器,服务器比对私钥和公钥,如果匹配的话就让客户端登录,这不是很好么,没有口令的传递。
那么这里应该怎么用密钥来登录呢,首先我们要创建我们自己的密钥,及公钥和私钥,然后我们将公钥传给我们要登录的远程机用户,并且保存在该用户文件中,当我们登录到该用户的时候,我们只要将我们自己的密钥发给它进行匹配认证,匹配的话就登录成功。比如我们想登录到tengpeng这个用户,那么我们就将公钥放置在用户tengpeng中。下面我们就来试一下:
由于我是在同一台机器上,就直接用root将temp的公钥写进tengpeng用户里,cat /home/temp/.ssh/id_rsa.pub >> /home/tengpeng/.ssh/authorized_keys,authorized_keys这个文件存储用户的公钥,在/etc/ssh/sshd_config中配置了,默认为authorized_keys文件,这个不多说。然后我们就不用用户密码而用密钥就可以登录到tengpeng用户了:
这样就没有口令的传输,有人说,那你这里还是要输入一次密码啊,在管理服务器的时候一样不会方便,那么这里还有一种代理的方式,以后再详解。
还有我们经常不是通过Linux来登录远程Linux,而是用windows来登录远程Linux,那么就要用一些软件了,比如putty,secureCRT等,目前我是用的secureCRT,也有两种登录方式,密码和密钥登录后面再继续学习。还没吃午饭必须撤了,不然就要虚脱了。。。。。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。