嗨,我正在通过 PuTTy 连接到远程服务器。在这台服务器上,我还在处理一些代码,我想将其推送到 git 存储库,这需要 ssh-rsa 身份验证。
因此在推的时候
git push origin master
服务器要求输入密码。但是,我已经使用 pageant 加载了我的私钥,因此 PuTTy 实际上应该知道我的私钥,并且不会要求输入密码,而是直接接受推送。
我的主要问题是: 如果您想通过 PuTTy 将 git-push 推送到需要身份验证(用户拥有有效私钥)的远程服务器,标准程序是什么?
将我的密钥上传到服务器当然不是一个好选择。
答案1
您需要在 PuTTy 中启用代理转发。在 Putty 配置中,导航至连接 -> SSH -> 身份验证并选中“允许代理转发”
编辑:在 PuTTy 中启用代理转发并通过 SSH 连接到具有您的公钥的系统后,您将能够从该系统通过 SSH 连接到也具有您的公钥的第二个系统。您无需执行任何特殊操作即可实现此操作。当您连接到第二个系统时,无需启用代理转发(使用-A或转运代理 是在你的〜/.ssh /配置)。只有当您要从您登录的系统进行另一次跳转时,才需要启用代理转发。
当您从计算机连接到服务器时,您将进行另一次跳跃(使用 git),因此您必须启用代理转发。当 git 通过 ssh 连接到另一台服务器时,它不会进行另一次跳跃,因此您无需启用代理转发。
如果你想了解代理转发的工作原理,请查看优秀的SSh 代理转发图解指南。
答案2
PuTTy 知道 pageant 中的密钥,但是 git 代码在远程服务器上运行 ssh 客户端,而不是在您的桌面上,因此您需要创建一个密钥对来用于推送代码或通过密码登录。