使用代理转发与 Windows 主机操作系统、Vagrant Ubuntu 客户操作系统和 Keepass/Keeagent 进行 SSH

使用代理转发与 Windows 主机操作系统、Vagrant Ubuntu 客户操作系统和 Keepass/Keeagent 进行 SSH

意图:能够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 套接字和 Linux 套接字是完全不同的概念 — VM 中的 Linux 不知道如何使用 Windows 套接字。为了确保 VM 可以利用主机上的身份验证代理,需要在两个都ssh 客户端和服务器,然后ssh通过主机进入 VM(而不是直接登录 VM 控制台)。

假设:

  1. 根据原始帖子,SSH 服务器代理转发设置已完成(我没有使用过 Vagrant,所以无法判断);
  2. Keeagent 设置已完成并正在运行(我已经尝试过客户端模式但在处理非 RSA/DSA 密钥时出现一些问题,所以代理模式更安全);

putty配置文件设置下,勾选连接 → SSH → Auth 下的“允许代理转发”选项,以便为客户端打开代理转发。或者,如果在主机上使用 Cygwin ssh,则有 2 个选择:

  1. 安装ssh-盛会~/.profile并使其使用 cygwin (in等)自动启动。
  2. 在 Keeagent 设置中指定所需的 Windows 套接字文件位置,并将$SSH_AUTH_SOCKcygwin 中的变量设置为相应的位置。

要检查代理转发是否正常工作,请通过 ssh 进入 VM 并检查变量$SSH_AUTH_SOCK。如果它不为空且指向存在的 Linux 套接字文件,则一切正常。如果变量为空,则表示缺少某些内容。

相关内容