配了挺多次免密登錄,老是忘了,備份一下
轉載自知乎,如侵刪。https://zhuanlan.zhihu.com/p/32279976
-----------------------------------------------------轉載分割線-----------------------------------------------------------------------
Ok,是時候寫一個教程讓后人不被坑了。
首先,明確一下我們要做什么,讓mac連接免密碼ssh連上遠程的機子,一般是ubuntu系統的(就是你買的阿里雲,騰訊雲之類的)。
note(給不懂ssh的新手們):ssh就是讓你的自己在遠程機子上打開一個shell,ssh就是secure shell。linux作為服務器是沒有桌面系統的,所以你只要通過一個ssh工具在遠程機子上打開一個shell,你就能控制這個遠程的機子了。
我們把本地機子叫做為mac,遠程機子叫做ubuntu(這個ubuntu也可以是centos,debian之類的)。
1. 首先在你的本地mac上打開一個shell,進入到~/.ssh目錄,然后看一下該目錄下的文件
cd ~/.ssh
ls // 看一下文件,看看有沒有已經生成過的公私鑰對
2.這邊做分a,b兩種情況:
(a). 第一種情況你沒有生成過公私鑰對(生成過這個目錄下會有類似 xxx xxx.pub 的文件),或者你生成過,但是你想創建一個新的公私鑰對。
ssh-keygen
// 根據交互,輸入你想要的名字(默認id_rsa),然后是密碼,可以為空,生成公私鑰對
ls // 這時候當前目錄下會多了一對公私鑰對(.pub結尾的是共鑰匙)。
(b). 已經有一組公私鑰對的可以不生成。
3.這一步是要把共鑰復制到服務器上,可以使 ssh-copy-id 這個腳本工具
ssh-copy-id -i [公鑰文件] user@host
// user是你的ssh的用戶,host是服務器地址,這時候還要輸入密碼。
// 例子:ssh-copy-id -i id_rsa.pub root@111.111.111.111
4.好一般別的系統到第三步就可以免密登陸了,但是mac並不這樣。還要調用ssh-add。
ssh-add -K [你的私鑰文件,就是那個不加.pub結尾的文件]
// 例如ssh-add -K id_rsa
注意上面的shell命令都在~/.ssh目錄下,中途請不要切換目錄。
公私鑰簡介
公私鑰是一個很聰明的發明,公鑰是公開的。就像用戶名,私鑰則跟密碼一樣。比特幣也是用了公私鑰,比特幣中公鑰是錢包地址,但是你光有錢包地址不能證明你擁有這個錢包。只有你同時擁有對應的私鑰,這個錢包才是你的。而要破解這個公私鑰很難,需要極大的計算量。