Windows
在 Windows 上,如何設置 sshd 以便我可以通過來自另一個 Windows 框的基於密鑰的身份驗證進行 ssh?
我正在努力設置一些部署自動化,我正在嘗試的一件事是使用 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 手冊頁應該解釋如何生成不受任何密碼保護的私鑰。如果你這樣做,你將永遠不必輸入密碼,但它會不安全。如果您設置了身份驗證代理,那麼我相信任何密碼片語在“霸王”的每個會話中只需要一次。如果您沒有密碼,我認為設置身份驗證代理沒有意義,應該只讀取私鑰而不提示輸入密碼。