爛筆頭筆記:Windows 10下配置ssh免密鑰訪問需要注意的事項


本文出處:http://blog.csdn.net/chaijunkun/article/details/92799874,轉載請註明。由於本人不定期會整理相關博文,會對相應內容作出完善。因此強烈建議在原始出處查看此文。

簡介

從Windows 10 1803版本開始,系統自帶了OpenSSH Client(https://devblogs.microsoft.com/commandline/windows10v1803/),這讓廣大程序員朋友,尤其是經常操作Linux的IT從業者有了原生的訪問服務器方法。然而在實踐過程中本人遇到一些問題,隨手筆記,希望能幫到同樣遇到這些問題的朋友

開啓ssh-agent服務

在系統默認狀態,或安裝某些更新之後,可能ssh-agent服務沒有開啓,這會影響通過密鑰證書方式訪問ssh服務器的這部分用戶,導致無法連接,遠端提示:Permission Deny。通常的解決辦法是將本地的私鑰加入到ssh代理中。命令爲:

ssh-add %userprofile%\.ssh\id_rsa

但是運行後會提示:

Error connecting to agent: No such file or directory

此時只需要在“運行”(Win + R)中執行services.msc,找到名爲:OpenSSH Authentication Agent的服務,將其啓動類型設置爲:“自動”,並且將其啓動即可。

密鑰文件訪問權限問題

當嘗試將私鑰添加到ssh代理時,或許你會看到這樣一個錯誤提示:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\\Users\\someuser\\.ssh\\id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

此時你應該考慮自己的密鑰對權限設置過於寬鬆,會產生安全問題,最終導致本次私鑰添加動作失敗。設置密鑰的宗旨是什麼呢:

  1. 私鑰:當前系統的SYSTEM,Administrators用戶組,擁有該文件的完全控制權限;該文件的所有者擁有修改權限。
  2. 公鑰:除去私鑰的所有權限設置外,可以允許Everyone擁有讀取和執行權限。

除去上述權限,其他權限一律取消,設置好之後就OK了。如果還是記不住怎麼辦呢?那就在系統中嘗試使用:

ssh-kegen -t rsa -b 2048

來臨時生成一個密鑰對,然後分別點擊私鑰(id_rsa)和公鑰(id_rsa.pub)文件來查看其屬性的安全標籤來確認如何設置。

關於多個密鑰如何使用

如果你打算在訪問不同遠程服務器時使用不同的用戶和私鑰,那麼可以將策略保存在%userprofile%\.ssh目錄下,並以config作爲文件名(沒錯,沒有擴展名),文件權限與私鑰權限設置一樣。下面給出一個示例:

Host code.csdn.net
        HostName code.csdn.net
        User bob
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/csdn.rsa
Host github.com
        HostName github.com
        User bob
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/github.rsa
Host git.mycompany.com
        HostName git.mycompany.com
        User bob
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/git_key.rsa

Host:要連接的遠程服務器地址(IP或者域名、主機名);

HostName:含義同Host,與Host保持一致;

User:指登錄遠程服務器時使用的用戶名;

PreferredAuthentication:優先使用的鑑權方式,這裏填寫固定的public(即:使用公鑰鑑權);

IdentityFile:既然選擇了公鑰方式鑑權,則需要指定本地連接到遠程時使用的對應私鑰文件,所以在這裏設置對應的私鑰文件完整文件名即可(文件名可以使用“~”作爲當前用戶的home目錄,也可以使用C:\\Users\\someuser\\.ssh\\id_rsa這樣的絕對目錄,但是要注意在Windows中請使用“\\”來轉義目錄分隔符“\”)。

注意:在上面的配置文件中Host對應下面的配置項有縮進,這個縮進使用tab或者空格都可以,沒有具體要求。

測試配置是否正確

ssh工具爲我們提供了測試模式,來評估ssh配置是否能夠真的連接到遠程服務器。請使用如下命令(請根據實際情況替換user和host值):

ssh -T user@host

整個過程中出現任何配置問題都會在回顯信息中反饋,幫助定位問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章