如何在 cygwin 上執行的 openssh 中配置基於 ssh 金鑰的身份驗證?

如何在 cygwin 上執行的 openssh 中配置基於 ssh 金鑰的身份驗證?

我能夠在 cygwin 上安裝和配置 openssh 並且運行正常,但有一個問題:我無法使用私鑰/公鑰身份驗證,它不起作用。

我按照與 Linux 上相同的步驟操作,添加了我的密鑰,~/.ssh/authorized_Keys但它沒有找到它。

我也檢查過/var/log/sshd.log,但它是空的並且具有以下權利:

-rw-r--r-- 1 cyg_server    None      0 Aug 21 12:53 sshd.log

drwx------+ 1 Administrator None    0 Aug 21 12:57 .ssh

-rw-r--r--  1 Administrator None  395 Aug 21 12:57 authorized_hosts

我缺什麼?

答案1

如果檔案名稱是 acually ~/.ssh/authorized_Keys,則需要將檔案名稱中的 K 小寫

如果不是這樣,請嘗試ssh -v對系統進行操作。這應該會給你一些更多的資訊。

答案2

這可能是由於未設定 HOME 環境變數造成的。結果是什麼echo $HOME?實際上解析到哪個完整路徑~/.ssh/authorized_Keys

另外,我認為authorized_keys檔案的檔案名稱應該全部小寫。

最後,cygwin 似乎存在一些奇怪的權限問題。嘗試將 .ssh 目錄及其內容的權限設為 600(而不是 700)。如果這不起作用,我找到了一些cygwin 郵件列表上的舊帖子由於某些原因,.ssh 目錄及其內部所有檔案的擁有者必須是 SYSTEM.SYSTEM。

如果這一切都不起作用,請檢查您的 Windows 事件日誌。我相信預設情況下,cygwin 的 sshd 會記錄在那裡而不是 in sshd.log(儘管我不知道為什麼它會在這種情況下建立日誌檔案)。

答案3

Windows 10 1909我透過檢查日誌Event Viewer -> Windows Logs -> Application -> sshd(Source column)並設定檔案的所有權和權限解決了這個問題home, .ssh and authorized_keys,如下所示

chown Gowtham:none ~/
chmod g-w ~/
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

相關內容