Windows

在 Windows 上,如何設置 sshd 以便我可以通過來自另一個 Windows 框的基於密鑰的身份驗證進行 ssh?

  • October 28, 2010

我正在努力設置一些部署自動化,我正在嘗試的一件事是使用 Ruby 的 Capistrano 通過 ssh 遠端執行命令。我已經使用cygwin 的 openssh在我用作測試受害者的盒子上執行 sshd。

但是,開箱即用,這將要求每個受害者機器上都有相同的使用者,並使用相同的密碼,這顯然是一個壞主意。

因此,我想啟用公鑰身份驗證,但是在我的頭撞到牆上幾天之後,我沒有成功。誰能指出我在網路上的成功指南來實現這一點?

我覺得:

  • 在霸王箱上本地生成公鑰後,我需要執行 ssh-agent 然後 ssh-add ,對嗎?如,不在受害者盒子上。
  • 在每個受害者盒子上,我需要將公鑰放入 /home/username/.ssh/authorized_keys
  • 然後我需要像 ssh 一樣連接到受害者郵箱,ssh username@victim而且我不應該被要求輸入密碼……對吧?這是失敗的部分;我被要求輸入密碼。

要禁用密碼身份驗證,您需要在受害者上編輯 sshd_config 並設置 PasswordAuthentication=no

或者在 overlord 上編輯 ssh_config 或使用 -o 選項停止它提供密碼身份驗證。

您可以使用ssh -v -v -v ...來更清楚地看到正在發生的事情。


編輯

我熟悉使用 Putty、puttygen 和 pageant 設置 SSH 公鑰身份驗證,但不熟悉 OpenSSH 工具。使用 OpenSSH,我相信這個過程是

$ ssh-keygen -t rsa

然後復製~/.ssh/id_rsa.pub到伺服器~/.ssh/authorized_hosts並確保文件的權限為 600,目錄的權限為 700。

ssh-keygen 手冊頁應該解釋如何生成不受任何密碼保護的私鑰。如果你這樣做,你將永遠不必輸入密碼,但它會不安全。如果您設置了身份驗證代理,那麼我相信任何密碼片語在“霸王”的每個會話中只需要一次。如果您沒有密碼,我認為設置身份驗證代理沒有意義,應該只讀取私鑰而不提示輸入密碼。

引用自:https://serverfault.com/questions/191307