安装 Windows 10 后,我很难让我的 SSH 密钥启动并运行。通常的方法是创建它并将其放入用户帐户中的.ssh
. 但此文件夹在 Windows 10 中似乎不可用。
我需要为不同的存储库提供 3 个 SSH 密钥。
安装 Windows 10 后,我很难让我的 SSH 密钥启动并运行。通常的方法是创建它并将其放入用户帐户中的.ssh
. 但此文件夹在 Windows 10 中似乎不可用。
我需要为不同的存储库提供 3 个 SSH 密钥。
cd
使用其他文件夹。ssh-keygen
(如果未找到,请在此处查看)/c/Users/YourUserName/.ssh/id_rsa.pub
ps:如果您安装了带有 bash 集成的 git(像我一样),请在第一步打开“Git Bash”而不是“cmd”
2019-04-07 更新:我今天使用新版本的 Windows 10(内部版本 1809,“2018 年 10 月更新”)进行了测试,不仅开放的 SSH 客户端不再处于测试阶段,因为它已经安装。因此,您需要做的就是创建密钥并将您的客户端设置为使用开放 SSH 而不是 putty(pagent):
ssh-keygen
并按回车我在 Git Extensions 和 Source Tree 上进行了测试,它与我在 GitHub 中的个人存储库一起工作。如果您使用的是较早的 Windows 版本或更喜欢 SSH 的图形客户端,请阅读下文。
2018-06-04 UDPATE:
在 Windows 10 上,从版本 1709(win+R 并键入winver
以查找内部版本号)开始,Microsoft 正在发布 OpenSSH 客户端和服务器的测试版。为了能够创建密钥,您需要安装 OpenSSH 服务器。为此,请按照下列步骤操作:
现在您可以打开一个提示,ssh-keygen
并且客户端将被 Windows 识别。我没有测试过这个。如果您没有 Windows 10 或不想使用测试版,请按照以下有关如何使用 putty 的说明进行操作。
ssh-keygen
不随windows一起安装。以下是使用 Putty 创建 ssh 密钥的方法:
对于 openssh 密钥,还需要几个步骤:
现在密钥已保存。开始pagent
并在那里添加私钥(Putty 格式的 ppk 文件)
请记住,pagent
必须运行才能使身份验证正常工作
cd
使用其他文件夹。mkdir .ssh
警告:如果您将密钥保存在C:/User/username/.ssh(默认位置)下,请确保在某处备份您的密钥(例如您的密码管理器)。
在最新的 Windows 10 更新(版本 1607)之后,我的 .ssh 文件夹为空。这是我的密钥一直存在的地方,但 Windows 决定在更新时删除它们。
谢天谢地,我已经备份了我的密钥……但是……我敢打赌,今天有些人会恢复他们的 PC。
I found a notable exception that in Windows 10, using the described route only wrote the files to the folder if the file names where not specified in the ssh-keygen generator.
giving a custom key name caused the files containing the RSA public and private keys not to be written to the folder.
ssh-keygen
c:/Users/YourUserName/.ssh/
(using Admin Command Line and Windows 10 Pro)
创建私钥/公钥:
git bash
,PowerShell
等cmd.exe
)ssh-keygen
~/.ssh/id_rsa
)RSA
is3072
或以上您现在已经创建了一个私钥/公钥对。
对于 GIT,密钥的强度必须为2048
,必须位于用户.ssh
目录中并被调用id_rsa
和id_rsa.pub
。将密钥粘贴到任何地方时,请确保使用不会添加新行的程序,例如 VIM。
此外,您可以尝试(对于 Windows 10 Pro)以管理员身份运行 Powershell 并键入ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
此外,您可以尝试ssh-keygen
从 Git Bash 终端运行
如果您有带有 OpenSSH 客户端的 Windows 10,您可能能够生成密钥,但您将无法将其复制到目标 Linux 机器,因为 ssh-copy-id 命令不是客户端工具集的一部分。
遇到这个问题我写了一个小的 PowerShell 函数来解决这个问题,你可以添加到你的配置文件中。
function ssh-copy-id([string]$userAtMachine, [string]$port = 22) {
# Get the generated public key
$key = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
# Verify that it exists
if (!(Test-Path "$key")) {
# Alert user
Write-Error "ERROR: '$key' does not exist!"
}
else {
# Copy the public key across
& cat "$key" | ssh $userAtMachine -p $port "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"
}
}
你可以在这里得到要点
我有一个简短的写在这里
尽管我已经是管理员并且可以手动创建目录,但我终于通过使用“运行管理员”运行打开命令行来使其工作
所有这些答案都会生成不够安全的默认密钥。这个答案建议了一种(多种方法中的一种)生成安全密钥的方法。我宁愿在此页面上使用我的答案而不是其他答案......到目前为止......
ssh-keygen -t rsa -b 4096