為了讓兩個linux機器之間使用ssh不需要用戶名和密碼,采用了數字簽名RSA或者DSA來完成這個操作。
一匆篓、模型分析
A (192.168.20.59)為客戶機器
B (192.168.20.60)為目標機器
要達到的目的:A機器ssh登錄B機器無需輸入密碼,加密方式選 rsa|dsa均可以雪位,默認dsa馆匿。
#? ssh-keygen -t rsa
#使用rsa加密
二抑胎、具體操作流程
單向登陸的操作過程(能滿足上邊的目的):
1、登錄A機器
2甜熔、ssh-keygen -t[rsa|dsa]圆恤,將會生成密鑰文件和私鑰文件id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、將 .pub 文件復制到B機器的~/.ssh目錄腔稀,?并cat id_dsa.pub >> ~/.ssh/authorized_keys
//此處可不必拷貝公鑰過去(硬要拷貝盆昙,不要拷貝到對方~/.ssh目錄下),可通過復制粘貼直接把A的 公鑰.pub 里內容追加到B的~/.ssh/authorized_keys焊虏。將A公鑰拷貝到B~/.ssh目錄下淡喜,有覆蓋B同名但內容不同的風險!
4诵闭、大功告成炼团,從A機器登錄B機器的目標賬戶,不再需要密碼了(直接運行# ssh ?user@192.168.20.60)
雙向登陸的操作過程:
1疏尿、ssh-keygen做密碼驗證可以使在向對方機器上ssh ,scp不用使用密碼.具體方法如下:
2瘟芝、兩個節(jié)點都執(zhí)行操作:
#ssh-keygen -t rsa
然后全部回車,采用默認值.
3、這樣生成了一對密鑰褥琐,存放在用戶目錄的~/.ssh下锌俱。
將公鑰考到對方機器的用戶目錄下,并將其復制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)敌呈。
4贸宏、設置文件和目錄權限:
設置authorized_keys權限
#? chmod 600 authorized_keys
設置.ssh目錄權限
# chmod 700 ? ~/.ssh
5、要保證 目錄~/.ssh和 文件authorized_keys都只有用戶自己有寫權限磕洪,否則驗證無效吭练!
權限不滿足要求,從20.60去訪問20.59的時候會提示如下錯誤:
The?authenticity?of?host?'192.168.20.59?(192.168.20.59)'?can't?be?established.??RSA?key?fingerprint?is?6a:37:c0:e1:09:a4:29:8d:68:d0:ca:21:20:94:be:18.??Are?you?sure?you?want?to?continue?connecting?(yes/no)??yes
Warning:?Permanently?added?'192.168.20.59'?(RSA)?to?the?list?of?known?hosts.??root@192.168.20.59's?password:???Permission?denied,?please?try?again.
root@192.168.20.59's?password:
Permission?denied,?please?try?again.
root@192.168.20.59's?password:???Permission?denied?(publickey,gssapi-with-mic,password).
三析显、總結注意事項
1鲫咽、文件和目錄的權限千萬別設置成chmod 777.這個權限太大了,不安全叫榕,數字簽名也不支持
2浑侥、生成的rsa/dsa簽名的公鑰是給對方機器使用的,這個公鑰內容還要追加到authorized_keys文件中
3晰绎、Linux之間的訪問直接 ssh 機器ip
4、某個機器生成自己的RSA或者DSA的數字簽名括丁,將公鑰給目標機器荞下,然后目標機器接收后設定相關權限(公鑰和authorized_keys權限),這個目標機就能被生成數字簽名的機器無密碼訪問了
免密登錄,我們有另一種方式:
直接追加自己的公鑰內容到對方的authorized_keys文件中
# ssh-keygen ? ? ? ? 生成自己的公鑰和私鑰
#ssh-copy-id ? user@xx.xx.xx.xx ? ? ? ?將自己的公鑰內容直接追加到對方 ~/.ssh/authorized_keys中
現在我們看看~/.ssh 這個目錄和下面各個文件:
# ls -ld ?/root/.ssh
drwx------. 2 root root 80 10月 22 17:34 /root/.ssh
目錄權限要求為 700
# ll ?/root/.ssh
總用量 16
-rw-------. 1 root root ?408 10月 22 17:18 ? ? ? ? ? authorized_keys
authorized_keys文件權限要求為600尖昏,里面記錄的是授權允許免密碼登錄的其他服務器的公鑰信息
-rw-------. 1 root root 1679 10月 22 17:34 ? ? ? ? ? id_rsa
id_rsa文件權限要求為600仰税,為本服務器的私鑰,重要程度相當于用戶登錄密碼
-rw-r--r--. 1 root root ?393 10月 22 17:34 ? ? ? ? ? ?id_rsa.pub
id_rsa.pub 文件權限為644抽诉,普通文件權限陨簇,為本服務器的公鑰
-rw-r--r--. 1 root root ?175 10月 22 17:19 ? ? ? ? ? ?known_hosts
known_hosts文件權限為644,普通文件權限迹淌,里面記錄的是從此服務器登錄到其他服務器的信息