在 Windows 10 上设置 SSH 和 Git

2025-06-04

在 Windows 10 上设置 SSH 和 Git

欢迎阅读我在 Dev.to 上的第一篇官方指南。今天我想讲解如何在 Windows 10 电脑上设置 SSH 和 Git。

注意:这并不是关于 100% 保护您的密钥,而是关于如何生成用于 GitHub 的密钥。

感谢garethdd的建设性反馈。

什么是 SSH?

SSH 代表安全外壳,是一种在远程服务器(例如 Github 服务器)上验证自己身份的绝佳方式,无需每次都输入密码。

SSH 通过两个密钥工作:私钥公钥。私钥应始终保持私密和安全,而公钥则可以在互联网上共享而不会出现任何问题。

私钥允许您访问已注册公钥的服务器,因此只有当攻击者以某种方式获取您的密钥时,您的访问权限才会被窃取,因此请确保其安全!

新的 Windows 10 机器上应预先安装 SSH。

什么是 Git?

Git 是一个免费的版本管理工具,可帮助您对代码进行版本控制并将其保存在远程服务器上(例如 Github、Gitlab 或 Bitbucket)。

您可以从这里安装 Git:
https://git-scm.com/download/win

您还可以通过chocolatey安装 Git :



choco install git -Y


Enter fullscreen mode Exit fullscreen mode

创建 SSH 密钥

第一步是生成一个新的 SSH 密钥。使用 cmd 或 Powershell 并运行以下命令:



ssh-keygen -t rsa -b 4096 -C "your_email@example.com"


Enter fullscreen mode Exit fullscreen mode

你可以设置密码,但并非必须设置,因为你应该将你的密钥泄露给别人,但设置密码可以确保密钥的安全。请记住,每个人都可以拥有任意数量的私钥。

这将生成一个新的 SSH 私钥,采用 RSA 加密,长度为 4096 位。它还会根据私钥生成一个公钥,供您共享。

您的 Windows 用户文件夹中将会有一个新文件夹和文件。

一般来说,您可以创建任意数量的密钥。id_rsa密钥是 ssh 生成的默认密钥,如果您未指定使用其他密钥,ssh-agent 将自动使用该密钥。

什么是 ssh-agent?

ssh-agent 是用于实际通过 ssh 进行身份验证的代理进程。市面上有很多代理程序(例如,PuTTY 和 Pageant),但在本例中,我们将使用 Windows 10 原生默认 ssh-agent 提供的 ssh-agent。

如果需要,您可以使用 PuTTY 和 Pageant 来增强密钥的安全性。阅读Digital Ocean上的这篇文章了解更多信息。

如果要更改 ssh-agent 使用的密钥,必须先启动该服务。Windows 10 系统默认禁用该服务。搜索“服务”,打开“服务”设置,找到“OpenSSH 身份验证代理”并激活它:

现在您将能够通过从控制台访问 ssh-agent ssh-agent

在此示例中,我们将尝试加载example代理中调用的另一个密钥,并使用它代替该id_rsa密钥。为此,您可以运行以下命令:



ssh-add example


Enter fullscreen mode Exit fullscreen mode

现在您将拥有可用于此会话的两个密钥。

在 Github 上注册你的 SSH 密钥

下一步是在 Github 上注册你生成的 SSH 密钥。为此,请运行以下命令:



type C:\Users\your_user_name\.ssh\id_rsa.pub


Enter fullscreen mode Exit fullscreen mode

并将输出字符串复制到剪贴板。现在转到你的Github 密钥设置,使用你的公钥添加一个新的 SSH 密钥并保存。

恭喜!现在您无需密码即可获取并推送代码到 Github!

注意:还应该有一个C:\Users\your_user_name\.ssh\id_rsa文件。这是您的私钥,请勿泄露!

在 Shell 中设置 Github

现在是时候在你的机器上设置 Git 了。从上面的链接安装后,打开一个新的 cmd 或 Powershell 窗口。现在我们需要设置你的公共 Git 名称和 Git 电子邮件地址。在推送代码时,这些名称和电子邮件地址将始终是公开的。

幸运的是,Github 提供了一个私有的电子邮件地址供您使用。前往https://github.com/settings/emails,您将找到@users.noreply.github.com您帐户的电子邮件地址。复制此电子邮件地址。

接下来在 Git 中注册您的姓名和电子邮件:



git config --global user.name "Your Name"
git config --global user.email your_email@users.noreply.github.com


Enter fullscreen mode Exit fullscreen mode

恭喜!现在,您的所有提交都将注册为来自您的 Github 用户。

签署你的 GitHub 提交(可选步骤)

要对提交进行签名,首先必须安装GPG 命令行工具。安装 GPG 工具包后,可以运行以下命令生成新的 gpg 密钥:



gpg --full-generate-key


Enter fullscreen mode Exit fullscreen mode

这会询问你想要哪种密钥。选择 RSA 和 RSA。

现在您需要输入位长度。建议为4096 位

之后,您可以指定密钥的有效期,或者是否永不过期。您可以根据需要选择。通常情况下,过期密钥更安全,因为您需要不时地更新它们。

现在输入您的个人信息以使用您的 gpg 密钥验证您的身份。

完成后,系统会要求你输入密码。输入一个安全的密码后,你的 gpg-key 生成就完成了。

之后,您将能够.gnupg在成功消息中指定的用户文件夹中找到您的密钥。

如果你想列出你的 gpg 密钥,只需运行



// short version
gpg --list-secret-keys

// long version
gpg --list-secret-keys --keyid-format LONG


Enter fullscreen mode Exit fullscreen mode

您可以与 Github 共享的 GPG 密钥是后面的密钥,sec rsa4096/例如



/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10


Enter fullscreen mode Exit fullscreen mode

gpg 密钥将是3AA5C34371567BD2

要获取您的公钥块,只需运行



gpg --armor --export YOUR_GPG_KEY


Enter fullscreen mode Exit fullscreen mode

这将输出你的公共 GPG 密钥块。复制并粘贴到你的 GitHub 帐户(此处)

从现在开始,您的提交将在提交时签名。

使用 Git

现在你已经准备好实际使用 Git 了。现在,你可以通过 GitHub 克隆代码库git clone,或者将新代码推送到 GitHub。以下是快速参考:



# Clone a repository to the current directory
git clone [REPOSITORY_CLONE_URL]

# Create a new commit with a message
git commit -m "Your commit message"

# Add files to the commit
git add .
git add ./filename.ext

# Push your commits to Github
git push origin master
git push origin [YOUR_BRANCH_NAME]

# Reset your repo to the last version
git reset --hard

# Create a new branch
git checkout -b [YOUR_BRANCH_NAME]

# Switch branches
git checkout [YOUR_BRANCH_NAME]
git checkout master

# Reset a single file
git checkout ./filename.ext


Enter fullscreen mode Exit fullscreen mode

结论

感谢您阅读这篇文章。希望它能帮助您完成设置。如果您需要帮助或有任何疑问,请随时告诉我!

文章来源:https://dev.to/bd​​bchgg/setting-up-ssh-and-git-on-windows-10-2khk
PREV
我为什么拒绝了我的第一份全职开发工作



NEXT
JavaScript 开发人员面试问题:提升、原型继承以及属性与属性