初识linux ssh远程登录协议
2014-03-29 15:14
239 查看
一、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,也有两种登录方式,密码和密钥登录后面再继续学习。还没吃午饭必须撤了,不然就要虚脱了。。。。。
所谓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,也有两种登录方式,密码和密钥登录后面再继续学习。还没吃午饭必须撤了,不然就要虚脱了。。。。。
相关文章推荐
- 华为3328 配置ssh协议 远程登录
- Linux 中无法使用 root 用户通过 SSH 远程登录解决方法
- ubuntu 12.04配置SSH---为远程登录会话和其它网络服务提供的协议
- linux远程ssh连接用key登录
- ssh在linux中---OpenSSH命令操作远程登录及传送文件
- Linux-Centos7通过 ssh 远程登录其他用户
- Linux更改ssh服务远程登录配置
- 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh
- 【Linux远程管理】SSH协议远程管理
- 【linux学习】终端利用ssh远程登录linux服务器
- 用ssh远程登录Linux主机
- SSH远程登录Linux Putty使用
- 建立密钥,远程登录LINUX----ssh-keygen
- 【浅层优化实战】ssh远程登录Linux卡慢的全过程排查及解决方案
- linux下允许root用户远程登录并建立ssh信任的方法
- ssh命令用于远程登录上Linux主机
- linux本机root账户无法登录,但是远程ssh可登录
- linux使用ssh实现远程连接免密登录
- linux 影响ssh远程登录的设备
- Linux修改SSH远程登录端口