意图:能够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:\用户\管理员.ssh\config
Host 192.168.55.2
ForwardAgent yes
Vagrant文件
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)
- Ubuntu x64
- 192.168.55.2,仅可通过主机访问
- 不存在 SSH 密钥
/home/vagrant/.ssh
(我删除了它们)。目的是让通过主机操作系统(Keeagent)进行的用户代理转发负责使用密钥
LAN Web 主机(内部网网站)
- 假设它的域名是
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 连接服务器。