本地生成密鑰
這里選擇在購買前先在本地生成密鑰key(分為private key和public key),所以先生成密鑰再進行購買,購買完以后直接ssh登錄,不需要輸入密碼(安全性考慮)
其中,public key存放在欲登錄的服務器上,而private key為特定的客戶機所持有。
當客戶機向服務器發出建立安全連接的請求時,首先發送自己的public key,如果這個public key是被服務器所允許的,服務器就發送一個經過public key加密的隨機數據給客戶機,這個數據只能通過private key解密,客戶機將解密后的信息發還給服務器,服務器驗證正確后即確認客戶機是可信任的,從而建立起一條安全的信息通道。
通過這種方式,客戶機不需要向外發送自己的身份標志“private key”即可達到校驗的目的,並且private key是不能通過public key反向推斷出來的。這避免了網絡竊聽可能造成的密碼泄露。客戶機需要小心的保存自己的private key,以免被其他人竊取。(這就是為什么先在本地生成密鑰,而不是在登錄你的vps以后生成然后把私鑰下載到本地,任何時刻都要保證私鑰處在一個安全的地方)
簡單的理論知識就補這么多很好理解,接下來就是步驟了
生成密鑰命令
ssh-keygen -t rsa
后面還可以帶很多參數,感興趣可以google
執行命令會出現這樣,執行后讓你輸入東西的全部回車,文件保存路徑也是默認回車就行啦,不需要輸入任何東西!!!(因為我已經生成過了,所以把路徑選在了桌面)
這步驟完了以后在 cd 到 .ssh
文件下就能看見生成的公鑰和密鑰,一會公鑰有用。
購買騰訊雲
然后在下面的ssh密鑰輸入框那里點擊現在創建,出來一個界面以后再次點擊創建密鑰,會出現如下的圖:注意在創建方式那里不要默認選擇創建密鑰對(這是騰訊給你創建的,不安全,原因前面已經說過了),選擇使用已有公鑰選項。 還記得剛開始用ssh-keygen -t rsa
生成的公鑰嗎?在你的用戶主目錄下cd到那個文件去,把他拷貝下來(注意拷貝的是公鑰id_rsa.pub),然后粘貼到‘輸入公鑰’那個長方形框里去,至於密鑰名稱隨意起。
ssh密鑰登錄vps:
購買完以后注意查收你的郵箱,會給你發郵件,有用戶登錄密碼,注意騰訊給的默認用戶是ubuntu而不是root用戶,登錄的時候登錄名請用ubuntu,不然登不上
方法
1. 使用vnc客戶端:直接在網頁界面你買到的vps后面點擊登錄(可以試着玩玩),這不是本文的重點!
2. 使用ssh登錄,打開終端輸入如下:
~$ ssh ubuntu@xxxxxxxxxx
注意騰訊給的默認用戶是ubuntu,@后面加你購買到的vps的公網Ip,vps界面后邊有,直接復制
回車以后,直接就登錄到你的vps去了(如上圖),不用輸入密碼,這樣一是保證安全性,二是方便
成功登錄以后說明你的電腦已經可以通過ssh密鑰方式直接登錄你的電腦了!!
簡單的ssh安全配置:
- .ssh文件設置
首先我們來找到公鑰的存放位置,默認在/home/ubuntu/.ssh
里面,也就是ubuntu用戶目錄下的.ssh里,cd到這個文件夾后可以ls一下可以看見id_rsa.pub
(也就是你購買時復制本地生成的那個公鑰)
這里多說一句,正是因為這個文件只有這里有,根目錄下沒有,所以不能ssh root@xxxxxxx
登錄。
廢話不多說//在ubuntu用戶下執行如下命令就好了 -
cd .ssh ls //ls你可以看到這個文件 touch authorized_keys //生成認證文件,其實已經有了 cat id_rsa.pub >> authorized_keys chmod 600 authorized_keys //設置文件權限 chmod 700 -R .ssh //是指文件夾權限
sshd_config文件配置
進入到ssh的配置文件sshd_config里,修改一些選項,先找到這個文件(/etc/ssh/sshd_config),如下圖,使用超級用戶權限打開,其中會要求你輸入密碼,密碼就是騰訊在郵件里給你發的那個密碼(不喜歡可以改) - 需要進行的幾個操作:
-
//使用密鑰登錄 RSAAuthentication yes PubkeyAuthentication yes //禁止空密碼和Root密碼登錄: PermitEmptyPasswords no PasswordAuthentication no
至於AuthorizedKeysFile這個選項不用管,直接用#注釋掉就行啦,這個是認證文件的地址,注釋掉表示默認地址,就是在/ubuntu/.ssh這個文件里。
-
#AuthorizedKeysFile %h/.ssh/authorized_keys
理一理思路
- 當你在遠程啟動ssh登錄vps時,首先vps端口監聽到請求,從sshd_config配置文件找到公鑰存放位置,也就是.shh這個文件,與你的本地主機發來的公鑰對比,如果匹配上,vps再給你的本地主機發送加密數據,本地主機通過私鑰進行解密,將解密的數據再發送給vps,若正確就可以遠程登錄。