ssh密钥对验证
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
使用SSH密鑰認(rèn)證
一、加密簡介
1、加密方式
對稱密鑰算法(DES,3DES,AES)
使用相同的密鑰和算法來加解密。
缺點(diǎn):共享密鑰需雙方互換,密鑰太多,不支持?jǐn)?shù)字簽名和不可否認(rèn)性。
優(yōu)點(diǎn):速度快,安全,緊湊,長度小于等于8字節(jié)
非對稱密鑰算法(RSA,DHKipsec vpn,EC)
1.每一個用戶進(jìn)入一個加密系統(tǒng),都需要產(chǎn)生一對公私密密鑰。
2.公鑰共享給所有人,私鑰需嚴(yán)格保密,公鑰無法推出私鑰。
3.公鑰加密的文件需要私鑰才解密(加密的過程)。
4.私鑰加密的文件需要公鑰才能解密(簽名的過程)。
優(yōu)點(diǎn):安全,加解密雙方不需要交換密鑰,無需擔(dān)心密鑰被截取。
缺點(diǎn):非常慢,密文會變長
在linux下的密鑰認(rèn)證就是典型的非對稱加密算法。
2、SSH認(rèn)證簡介
如果主機(jī)A想要通過ssh登錄到主機(jī)B,并且想要通過密鑰認(rèn)證的方式,首先你需要在主機(jī)A上生成一對密鑰,將生成的公鑰部分上傳至主機(jī)B,此時當(dāng)主機(jī)A發(fā)起ssh到主機(jī)B時,主機(jī)B會將一個隨機(jī)數(shù)用主機(jī)A給他的公鑰來加密,加密后的數(shù)據(jù)會發(fā)送給主機(jī)A,主機(jī)A 用自己保存的私鑰解密后會得到這個隨機(jī)數(shù),讓后將這個隨機(jī)數(shù)發(fā)送給主機(jī)B,主機(jī)B發(fā)現(xiàn)這個隨機(jī)數(shù)是正確那么就表示該認(rèn)證通過。私鑰必須妥善保存。
二、配置過程
1、生成密鑰對(機(jī)器A配置)
[root@localhost ~]#** ssh-keygen** -t rsa #全部保持默認(rèn),全部回車即可。
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 image is:
+--[ RSA 2048]----+
| o+ =o.|
| .E *.*o|
| *.+ Bo.|
| o =.o.o |
| S . .. |
| . . |
| . |
| |
| |
+-----------------+
注:ssh-keygen -t rsa這里直接回車即可。如果輸入密碼的話,在后面使用密鑰連接時也會提示輸入密碼。
2、查看密鑰對權(quán)限
[root@localhost ~]# ll -d .ssh/
drwx------. 2 root root 4096 5月 22 07:40 .ssh/ #權(quán)限為700
[root@localhost ~]# ll .ssh/
總用量 12
-rw-r--r--. 1 root root 408 5月 22 07:40 id_rsa.pub #權(quán)限為644
-rw-------. 1 root root 1675 5月 22 07:29 id_rsa #權(quán)限為600
-rw-r--r--. 1 root root 786 5月 22 07:41 known_hosts
3、修改公鑰名稱
[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 相對應(yīng)。
4、修改ssh配置文件
[root@localhost ~]# vim /etc/ssh/sshd_config
RSAAuthentication yes #使用密鑰驗(yàn)證
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys #驗(yàn)證文件的名稱
----------------------------可選配置-------------------------------------- Protocol 2 #修改后變?yōu)榇藸顟B(tài),僅使用SSH ServerKeyBits 1024 #修改后變?yōu)榇藸顟B(tài),將ServerKeyBits改為1024比特 PermitRootLogin no #不允許用Root進(jìn)行登錄 PasswordAuthentication no #不允許密碼方式的登錄 PermitEmptyPasswords no #禁止空密碼進(jìn)行登錄
[root@localhost ~]# vi /etc/hosts.deny
sshd: ALL 最后添加這一行,屏蔽來自所有的SSH連接請求
[root@localhost ~]#vi /etc/hosts.allow
sshd: 192.168.0.1 最后添加這一行,只允許來自內(nèi)網(wǎng)的SSH連接請求
注:hosts.allow和hosts.deny同時設(shè)置時hosts.allow生效
3、機(jī)器B配置與機(jī)器A的配置完全相同
1、生成密鑰對
2、查看密鑰對權(quán)限
3、修改公鑰名稱
4、修改ssh配置文件
轉(zhuǎn)載于:https://my.oschina.net/renqingshigu/blog/681462
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)