姓名:樂(lè)仁華?????????????????????????? 學(xué)號(hào):16140220023
轉(zhuǎn)載自:http://m.blog.chinaunix.net/uid-20628302-id-3076815
【嵌牛導(dǎo)讀】:本文主要講解ssh密匙原理及使用方法
【嵌牛鼻子】:ssh密匙
【嵌牛提問(wèn)】:ssh密匙是什么?ssh密匙怎么用?
【嵌牛正文】:
???????? 前段時(shí)間用paramiko模塊來(lái)創(chuàng)建ssh通信時(shí)發(fā)現(xiàn)一直搞不好,因?yàn)樽约阂膊皇呛芰私鈙sh怎么搞,所以在網(wǎng)上瀏覽了很多教程,在這也和大家總結(jié)分享下。
?????? ssh是什么呢,不了解的同學(xué)可能會(huì)有疑惑。ssh,全稱Secure Shell(我自己叫它做安全外殼),是一種網(wǎng)絡(luò)安全協(xié)議,怎么理解呢,可以這樣說(shuō),就像是給你的通信加了一個(gè)密封的管子,信息的交換都在管子里進(jìn)行,和外界隔開了,這樣不就能起一種保護(hù)作用嘛。不過(guò)更詳細(xì)的可以去看看百度上的解釋。
? ? ? ? 那知道了ssh是安全協(xié)議,那怎么實(shí)現(xiàn)的呢,這就是我們主要講的。ssh的安全由來(lái)主要就是依靠ssh密匙驗(yàn)證了。這里給出密匙驗(yàn)證原理:密匙認(rèn)證需要依靠密匙,首先創(chuàng)建一對(duì)密匙(包括公匙和密匙,并且用公匙加密的數(shù)據(jù)只能用密匙解密),并把公匙放到需要遠(yuǎn)程服務(wù)器上。這樣當(dāng)?shù)卿涍h(yuǎn)程 服務(wù)器時(shí),客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行認(rèn)證。服務(wù)器收到請(qǐng)求之后,先在你在該服務(wù)器的宿主目錄下尋找你的公匙,然后檢查該公匙是 否是合法,如果合法就用公匙加密一隨機(jī)數(shù)(即所謂的challenge)并發(fā)送給客戶端軟件??蛻舳塑浖盏?“challenge”之后就用私匙解密再把它發(fā)送給服務(wù)器。因?yàn)橛霉准用艿臄?shù)據(jù)只能用密匙解密,服務(wù)器經(jīng)過(guò)比較就可以知道該客戶連接的合法性。
??????? 那這個(gè)我們可以怎么用呢?其實(shí)現(xiàn)在很多pc都是帶有ssh客戶端的(不過(guò)我看很多教程上講windows沒(méi)有這個(gè),我試過(guò)也沒(méi)用,不知道為啥沒(méi)有)。咋們以linux系統(tǒng)為例看看怎么用吧,這里參考了這個(gè)教程。
客戶機(jī):172.16.142.4
遠(yuǎn)端主機(jī):172.16.142.5
在客戶機(jī)以root用戶執(zhí)行下述命令:
[root@localhost .ssh]# /usr/bin/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:
30:f6:d7:2a:ac:56:eb:3f:fa:40:25:8d:90:96:68:cb root@localhost.localdomain
------------------------------------------------
說(shuō)明:
該命令將在用戶的主目錄/.ssh目錄下面產(chǎn)生一對(duì)密鑰
一般采用的ssh的rsa密鑰:
id_rsa???? 私鑰
id_rsa.pub 公鑰
下述命令產(chǎn)生不同類型的密鑰
ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-keygen -t rsa1
-------------------------------------------------------
[root@localhost .ssh]# scp /root/.ssh/id_rsa.pub root@172.16.142.5:/root/.ssh/authorized_keys
The authenticity of host '172.16.142.5 (172.16.142.5)' can't be established.
RSA key fingerprint is 4b:a5:74:fb:2e:08:60:af:fa:76:d4:b0:26:4c:13:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.142.5' (RSA) to the list of known hosts.
root@172.16.142.5's password:
id_rsa.pub??????????????????????????????????????????????????????????????????????????????????????? 100% 236???? 0.2KB/s?? 00:00
-------------------------------------------------------------
說(shuō)明:
將公鑰拷貝到遠(yuǎn)端主機(jī),并寫入授權(quán)列表文件
你也可以把公鑰文件拷貝過(guò)去后,在遠(yuǎn)端主機(jī)下直接執(zhí)行
touch /root/.ssh/authorized_keys
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
-------------------------------------------------------------
操作完畢,登陸檢查。
[root@localhost .ssh]# ssh 172.16.142.5
root@172.16.142.5's password:
請(qǐng)注意此時(shí)如果仍提示輸入密碼,請(qǐng)檢查如下文件夾和文件的操作權(quán)限,這是非常重要的, 否則ssh公鑰認(rèn)證體制不能正常工作:
172.16.142.4(客戶端)
/home/root文件夾的權(quán)限是600
/home/root/.ssh文件夾的權(quán)限是600 (好像這個(gè)權(quán)限關(guān)系不是很大)
/home/root/.ssh/id_dsa私鑰的權(quán)限600
172.16.142.5(遠(yuǎn)端主機(jī))
/home/root文件夾的權(quán)限是644
/home/root/.ssh文件夾的權(quán)限是644 (好像這個(gè)權(quán)限關(guān)系不是很大)
/root/.ssh/authorized_keys公鑰的權(quán)限644
(關(guān)于權(quán)限的這個(gè)我也不是很懂,而且我在用的過(guò)程中也沒(méi)考慮這個(gè)文件權(quán)限也可以用)
--------------------------------------------------------------
[root@localhost ~]# ssh 172.16.142.5
Last login: Sat Dec 15 21:10:17 2007 from 172.16.142.4
[root@localhost ~]#
無(wú)密碼SSH登陸成功!
??????