如何为我的密钥存储密码,以便在Windows上使用git时可以从存储库提交和提取?

Ric*_*ard 17 git github

有人能指出我需要的方向,所以我可以用我的私钥所需的密码配置我的GIT客户端吗?每次我从我的存储库中推送和拉出它都会要求我输入密钥的密码.我使用命令行并安装Windows GIT客户端以使用ssh.

谢谢你的任何指示.

Gui*_*ier 24

我刚才有这个问题.我的本地git树已损坏,因此我将其删除并再次从github克隆项目.在那之后,它开始在每次拉动或推动时询问我的密码.过了一段时间,我意识到我用HTTP URL(https://my_user@github.com/user/project.git)克隆了项目.当我使用SSH URL(git@github.com:user/project.git)再次克隆时,它停止询问密码.


Gre*_*con 16

您确定要通过SSH克隆吗?

git remote -v.下面的输出来自通过HTTPS克隆的存储库:请注意https://URL方案.

origin  https://github.com/git/git.git (fetch)
origin  https://github.com/git/git.git (push)

SSH的克隆URL将具有以下两种形式之一:

  • username@host.domain.tld:foo/bar/baz.git
  • ssh://username@host.domain.tld/foo/bar/baz.git

假设您的主机同时支持SSH和HTTPS(如GitHub,GitLab和Gitorious),则只需更改远程URL,而不是重新克隆整个历史记录.

git remote set-url origin git@host.domain.com:foo/bar/baz.git
Run Code Online (Sandbox Code Playgroud)

不同的主机将具有不同的URL设计.例如,将上面的GitHub URL从HTTPS切换到SSH

git remote set-url git@github.com:git/git.git
Run Code Online (Sandbox Code Playgroud)

GitHub有一个关于更改git远程URL的相关指南.

视窗

在Windows上,典型的设置使用PuTTY作为SSH客户端,这意味着您将需要运行Pageant,PuTTY的SSH代理.在Windows上,我从Startup组中运行快速批处理作业:

@echo off
start /b "C:\Program Files\PuTTY\pageant.exe" "C:\Users\Greg\Greg.ppk"
Run Code Online (Sandbox Code Playgroud)

Greg.ppk我用PuTTYgen创建的密钥在哪里.

还有一步:告诉git使用plink,PuTTY的客户端进行非交互式连接.将环境变量设置GIT_SSH

C:\Program Files\PuTTY\plink.exe

假设这是PuTTY生活的地方.

Unix,Linux,Cygwin,Git Bash

在类Unix平台上,修复很简单.如果ssh-agent没有运行,请启动它,例如

$ eval `ssh-agent`

然后添加您的默认标识

$ ssh-add

如果您在其他地方拥有身份,请运行

$ ssh-add /path/to/other/ssh_id

如果您仍然遇到问题,GitHub会有一个用于解决GitHub和SSH问题的页面,但请同时更新您的问题,以便我们可以将其作为更有用的资源.

无密码SSH密钥的缺点

它可能看起来很诱人创建和注册没有密码或口令,因为你不会被提示输入其与每个SSH密钥git clone,git fetch,git pull,或git push.但是,如果没有密码,则SSH密钥未加密.这意味着,任何人谁能够获得您的私人密钥的副本(命名的文件id_rsa,id_dsa,id_ecdsa-不带.pub扩展名)可以冒充你没有努力.

SSH的漂亮设计意味着可以使操作方便又安全.来吧,今天让您的设置安全.现在只需几分钟的额外努力,您就不必为此感到疑惑.

如果您已经设置了无密码密钥,请通过运行对其进行加密

ssh-keygen -p
Run Code Online (Sandbox Code Playgroud)

对于新密码,您将看到密钥文件的提示(使用默认值),并再次确认您是否正确键入了密码.


Pet*_*ans 8

您必须重新创建默认的ssh密钥并使用空密码.然后再将公共部分上传到git服务器.

如果没有您在客户端和服务器上使用的特定产品,则更具体一些是有点困难的.

另一种方法是使用ssh-agent,但我不知道这是否适用于Windows或类似的东西可用.


mar*_*lly 5

您正在寻找的神奇词是ssh-agent,这是一种自动输入 ssh 密钥密码的方法。

Github 上的这篇文章介绍了如何使用 msysgit Windows 客户端运行 ssh 代理。

Windows 上的 Git 是一种困难的体验。你会花很多时间在互联网上闲逛,寻找一些文章,这些文章开玩笑地建议了一系列只能在 Unix 上正常工作的按键。

我说这些并不是为了嘲笑你。只是为了让您做好准备,因为这将是困难的。从很多方面来说,无论您想要做什么,最好设置一个 Unix 虚拟机。

话虽这么说,这里有一些有用的链接:

GitHub 的在 Windows 上安装 Git系列 GitHub 的在 Windows 上生成 SSH 密钥 以及有关密码短语的一些一般说明

如果您在 Windows 上找不到所需内容,请务必先查看 Github 文档。据我所知,它们是唯一值得一看的 Windows 指南。