使用SSH密钥认证

 

使用SSH密钥认证
1、加密简介
一、加密方式
对称密钥算法(DES,3DES,AES)
使用相同的密钥和算法来加解密。
缺点:共享密钥需双方互换,密钥太多,不支持数字签名和不能否认性。
优势:速度快,安全,紧凑,长度小于等于8字节
非对称密钥算法(RSA,DHKipsec ***,EC)
1.每个用户进入一个加密系统,都须要产生一对公私密密钥。
2.公钥共享给全部人,私钥需严格保密,公钥没法推出私钥。
3.公钥加密的文件须要私钥才解密(加密的过程)。
4.私钥加密的文件须要公钥才能解密(签名的过程)。
优势:安全,加解密双方不须要交换密钥,无需担忧密钥被截取。
缺点:很是慢,密文会变长
在linux下的密钥认证就是典型的非对称加密算法。
二、SSH认证简介
若是主机A想要经过ssh登陆到主机B,而且想要经过密钥认证的方式,首先你须要在主机A上生成一对密钥,将生成的公钥部分上传至主机B,此时当主机A发起ssh到主机B时,主机B会将一个随机数用主机A给他的公钥来加密,加密后的数据会发送给主机A,主机A 用本身保存的私钥解密后会获得这个随机数,让后将这个随机数发送给主机B,主机B发现这个随机数是正确那么就表示该认证经过。私钥必须妥善保存。
2、配置过程
一、生成密钥对(机器A配置)
[root@localhost ~]# ssh-keygen -t rsa #所有保持默认,所有回车便可。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5f:81:36:b6:71:77:c1:26:56:cb:0a:14:fd:64:89:89 root@localhost.localdomain
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|           o+ =o.|
|          .E *.*o|
|          *.+ Bo.|
|         o =.o.o |
|        S . ..   |
|         . .     |
|          .      |
|                 |
|                 |
+-----------------+
注:ssh-keygen -t rsa这里直接回车便可。若是输入密码的话,在后面使用密钥链接时也会提示输入密码。
二、查看密钥对权限
[root@localhost ~]# ll -d .ssh/
drwx------. 2 root root 4096  5月 22 07:40 .ssh/ #权限为700
[root@localhost ~]# ll .ssh/
总用量 12
-rw-r--r--. 1 root root  408  5月 22 07:40 id_rsa.pub #权限为644
-rw-------. 1 root root 1675  5月 22 07:29 id_rsa      #权限为600
-rw-r--r--. 1 root root  786  5月 22 07:41 known_hosts
三、修改公钥名称
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# mv id_rsa.pub authorized_keys
[root@localhost .ssh]# ls
authorized_keys  id_rsa  known_hosts
注:authorized_keys:与ssh配置文件中AuthorizedKeysFile      .ssh/authorized_keys 相对应。
四、修改ssh配置文件
[root@localhost ~]# vim /etc/ssh/sshd_config 
RSAAuthentication yes #使用密钥验证
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys #验证文件的名称
----------------------------可选配置--------------------------------------
Protocol 2          #修改后变为此状态,仅使用SSH
ServerKeyBits 1024  #修改后变为此状态,将ServerKeyBits改成1024比特
PermitRootLogin no  #不容许用Root进行登陆
PasswordAuthentication no    #不容许密码方式的登陆
PermitEmptyPasswords no      #禁止空密码进行登陆

[root@localhost ~]# vi /etc/hosts.deny   
sshd: ALL  最后添加这一行,屏蔽来自全部的SSH链接请求

[root@localhost ~]#vi /etc/hosts.allow   
sshd: 192.168.0.1 最后添加这一行,只容许来自内网的SSH链接请求
注:hosts.allow和hosts.deny同时设置时hosts.allow生效
------------------------------------------------------------------------
三、机器B配置与机器A的配置彻底相同 
一、生成密钥对
二、查看密钥对权限
三、修改公钥名称
四、修改ssh配置文件
这里就再也不多写了、、、、、
3、公钥设置
一、公钥相互对换
将机器A和机器B的公钥里面的内容拷贝出来相互对换,这样作的好处在于不会出现权限问题。
二、启动服务
[root@localhost ~]#service sshd restart
机器A和机器B都要从新启动服务
4、测试
一、测试
[root@localhost ~]# ssh root@172.16.0.11
Last login: Tue May 22 07:41:20 2012 from 172.16.0.12
[root@localhost ~]# ssh 172.16.0.12
Last login: Tue May 22 08:13:49 2012 from 172.16.0.11
两台机器均可使用密钥登陆。
若是只须要机器A可使用密钥认证登陆机器B能够将机器B上的密钥删除或是备份便可。
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# mv id_rsa id_rsa_bak
[root@localhost .ssh]# ls
authorized_keys  id_rsa_bak  known_hosts
[root@localhost .ssh]# ssh 172.16.0.11
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
相关文章
相关标签/搜索