意圖:能夠部署到lan-example.com
任何開發環境;無論是直接來自虛擬作業系統,或是任何單一作業系統系統,甚至是使用 Keepass 中儲存的一個 SSH 金鑰透過網路。目前,我無法在 Vagrant 的作業系統中執行此操作,除非我明確產生自己的金鑰並在每個部署伺服器中對其進行授權。我相信做我想做的事情的方法是透過用戶代理轉發,是嗎?
主機作業系統
- Windows 7 x64
- puttygen 產生的 SSH 金鑰:
C:\Users\Administrator\.ssh\id_rsa.ppk
- Keepass 與 Keeagent 儲存我的 SSH 金鑰。 Keeagent 設定為「代理」模式
- pageant.exe 已安裝但未執行
- 如果我希望使用我的金鑰連接到外部/內部 LAN 伺服器,Putty 會遵循 Keeagent - Putty 不會在其組態中儲存私鑰位置。
C:\Users\Administrator.ssh\config
Host 192.168.55.2
ForwardAgent yes
流浪文件
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.network :private_network, ip: '192.168.55.2'
config.ssh.forward_agent = true
# Why would I need to set this if Keeagent is handling things?
config.ssh.private_key_path = '~/.ssh/id_rsa_jake_mitchell.ppk'
end
來賓作業系統(Vagrant)
- 烏班圖 x64
- 192.168.55.2,只能透過主機訪問
- 不存在 SSH 金鑰
/home/vagrant/.ssh
(我刪除了它們)。目的是讓使用者代理程式透過主機作業系統(Keeagent)轉送來處理使用金鑰
LAN Web Host(內部網路網站)
- 假設它的域是
lan-example.com
- 它允許僅使用 id_rsa.ppk 公鑰進行 SSH 無密碼登錄
- 192.168.0.2
- 在 sshd 中啟用使用者代理轉發
問題:
lan-example.com
有效的方法(使用主機作業系統):Putty,無需明確引用 SSH 金鑰即可連線。
什麼不起作用(使用來賓作業系統):因為它顯示沒有任何金鑰可以使用。ssh -v [email protected]
我注意到一些關於Keeagent 測試版這允許我設定 SSH_AUTH_SOCK。我已經這樣做了,並設定了一個 NFS 共享,允許來賓作業系統讀取該檔案;但這並沒有改變任何事情。在這種環境下代理轉發如何運作? Windows 有何不同導致此失敗?
答案1
您需要從啟用代理轉送的主機作業系統(在 Windows 上使用 PuTTY)進行 ssh。然後從該會話中,透過 ssh 從來賓作業系統連接到伺服器。