知识部分
简述:
SSH是一种安全通道协议,主要用来实现字符界面的远程登陆、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆是输入的用户口令。SSH和TELNET、RSH等提供了更好的安全性。OpenSSH是实现SSH远程登陆的开源软件项目,适用于Linux、UNIX系统,其官网地址为http://www.openssh.com。
RSA加密算法是一种非对称加密算法。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
操作部分
一、修改配置文件
1、OpenSSH在Linux中默认已经安装,所以我们第一步就可以直接在需要开启SSH的linux系统上修改它的配置文件/etc/ssh/sshd_config。首先配置监听地址为192.168.1.1,端口默认22。
2、找到下面几行,将#去除,使其生效。该三行配置是支持基于RSA生成的密钥对认证方式。
3、在配置文件中添加该配置可以配置授权用户。下图所示,允许root从所有网段登陆;允许zhangsan在192.168.1.2上登陆。(这里允许root登陆是为了一会使用scp上传公钥。)
4、重启服务
5、建立用户张三、配置地址为192.168.1.1
二、构建RSA密钥对验证体系
1、在客户端上建立用户lisi作为zhangsan的映射用户,并用lisi登陆linux客户机。
2、用lisi登陆后创建密钥对。
3、密钥对生成后会放在以下路径,确认一下是否生成。其中id_rsa为私钥,id_rsa.pub为公钥。
4、上传公钥到SSH服务端。这里可以使用SSH提供的一个scp命令程序上传该公钥。注意:我们上传公钥通过root用户和密码验证来使用scp命令程序。
5、在服务端将公钥导入到zhangsan的公钥库。首先在zhangsan的根目录/home/zhangsan/下建立.ssh/目录;然后将上传到/tmp下的公钥倒过来。
6、配置地址为192.168.1.2
三、验证。返回到linux客户端中,在lisi中远程登陆SSH服务端。
可以看到,我们登录时并没有输入密码的环节。这种方法即使远程登陆的过程中被抓包,也无法破解密码。既保证了安全性,也有了一定的便捷性。
四、使用windows客户端实现上面的免密登陆。
1、首先为windows客户端配置地址为192.168.1.3
2、我们需要在windows上安全xshell终端模拟软件,以远程连接SSH服务端。
3、打开xshell,点击“工具”-“新建用户密钥生成向导”
4、选择生成RSA密钥,长度2048(自己决定,越长越安全)。
5、生成完成,点击下一步。
6、输入密钥名称及加密密码
7、双击该密钥对,然后将公钥保存起来
8、把公钥上传到SSH服务端的/root/.ssh下。我们通过安装winscp这个软件上传。
9、打开winscp,在该界面输入hostname也就是SSH服务端地址;输入用户名“root”及密码。注意:上传公钥这里仍然使用root用户
10、将刚刚保存到桌面的公钥文件传到SSH服务端中的/root下。直接拖动公钥文件到右边的SSH服务端即可。
11、进入到SSH服务端,找到/root下的id_rsa_2048.pub公钥文件。并将其导入到root的公钥文件中。
12、验证。打开windows客户端的xshell,新建会话
13、点击连接。
14、接受并保存
15、输入登陆用户root
16、这里选择第二个Public Key,输入密钥对的加密密码
17、成功连接
补充:搭配TCP Wrappers做SSH的访问控制。
TCP Wrappers可以将其他的TCP服务程序“包裹”起来,增加一个安全监测过程,外来的连接请求需要经过TCP Wrappers的检测,获得许可才可以访问到真正的服务程序。通常TCP Wrappers默认安装,我们直接配置即可。他的两个策略文件为/etc/hosts.allow、/etc/hosts.deny,分别用来设置允许、拒绝策略。
如图,编辑/etc/hosts.allow,格式为<服务程序>:<客户机地址>。(例如192.168.2.0网段用192.168.2.*表示;ALL表示所有网段。如果写多个网段、多个服务可以用“,”分隔。)图中表示允许192.168.1.2和192.168.2.0/24网段使用SSH远程。
原文地址:http://blog.51cto.com/13434336/2093469