153

安装 Windows 10 后,我很难让我的 SSH 密钥启动并运行。通常的方法是创建它并将其放入用户帐户中的.ssh. 但此文件夹在 Windows 10 中似乎不可用。

我需要为不同的存储库提供 3 个 SSH 密钥。

4

12 回答 12

181
  1. 打开 Windows 命令行(在搜索框中键入“cmd”并按回车键)。
  2. 它将默认为您的主文件夹,因此您无需cd使用其他文件夹。
  3. 类型ssh-keygen(如果未找到,请在此处查看
  4. 第一个参数留空(默认),如果你喜欢输入密码,或者留空
  5. 您的 ssh 密钥应存储在所选目录中,默认为:/c/Users/YourUserName/.ssh/id_rsa.pub

ps:如果您安装了带有 bash 集成的 git(像我一样),请在第一步打开“Git Bash”而不是“cmd”

于 2015-08-23T18:54:07.203 回答
62

2019-04-07 更新:我今天使用新版本的 Windows 10(内部版本 1809,“2018 年 10 月更新”)进行了测试,不仅开放的 SSH 客户端不再处于测试阶段,因为它已经安装。因此,您需要做的就是创建密钥并将您的客户端设置为使用开放 SSH 而不是 putty(pagent):

  1. 打开命令提示符 (cmd)
  2. 输入ssh-keygen并按回车
  3. 按进入所有设置。现在您的密钥保存在 c:\Users\.ssh\id_rsa.pub
  4. 打开您的 git 客户端并将其设置为使用开放 SSH

我在 Git Extensions 和 Source Tree 上进行了测试,它与我在 GitHub 中的个人存储库一起工作。如果您使用的是较早的 Windows 版本或更喜欢 SSH 的图形客户端,请阅读下文。

2018-06-04 UDPATE:

在 Windows 10 上,从版本 1709(win+R 并键入winver以查找内部版本号)开始,Microsoft 正在发布 OpenSSH 客户端和服务器的测试版。为了能够创建密钥,您需要安装 OpenSSH 服务器。为此,请按照下列步骤操作:

  1. 打开开始菜单
  2. 输入“可选功能”
  3. 选择“添加可选功能”
  4. 点击“添加功能”
  5. 安装“打开 SSH 客户端”
  6. 重新启动计算机

现在您可以打开一个提示,ssh-keygen并且客户端将被 Windows 识别。我没有测试过这个。如果您没有 Windows 10 或不想使用测试版,请按照以下有关如何使用 putty 的说明进行操作。


ssh-keygen不随windows一起安装。以下是使用 Putty 创建 ssh 密钥的方法:

  1. 安装腻子
  2. 打开 PuttyGen
  3. 检查要使用的密钥类型和字节数PuttyGen 参数
  4. 将鼠标移到进度条上用鼠标输入生成键
  5. 现在您可以定义密码并保存公钥和私钥键创建对话框

对于 openssh 密钥,还需要几个步骤:

  1. 从“粘贴的公钥”文本框中复制文本并将其保存为“id_rsa.pub”
  2. 要将私钥保存为 openssh 格式,请转到 Conversions->Export OpenSSH 密钥(如果您没有定义密码,它将要求您确认您不需要密码) 用于将密钥转换为 OpenSSH 格式的菜单
  3. 将其另存为“id_rsa”

现在密钥已保存。开始pagent并在那里添加私钥(Putty 格式的 ppk 文件) 页面键对话框

请记住,pagent必须运行才能使身份验证正常工作

于 2017-05-26T14:03:48.023 回答
35

WINDOWS:如果您安装了 git for windows,请转到其文件夹。

在此处输入图像描述

查看 bin 目录。有一个 sh.exe 文件。运行那个。

在此处输入图像描述

然后输入:

ssh-keygen -t rsa -C "你的邮箱在这里"

按照说明进行操作,然后键入:

猫 ~/.ssh/id_rsa.pub | 夹子

它将密钥复制到剪贴板。现在您可以将该公钥粘贴到服务器端。

于 2017-09-30T10:52:26.693 回答
12
  1. 打开 Windows 命令行(在搜索框中键入“cmd”并按回车键)。
  2. 它将默认为您的主文件夹,因此您无需cd使用其他文件夹。
  3. 类型mkdir .ssh
于 2015-08-25T05:19:11.263 回答
11

我正在运行 Microsoft Windows 10 Pro,版本 10.0.17763 Build 17763,我可以在 C:\Users\jrosario\.ssh 轻松查看我的 .ssh 文件夹,而无需编辑权限或任何内容(尽管在文件资源管理器中,我确实选择了“显示隐藏的文件、文件夹和驱动器”): 在此处输入图像描述

密钥存储在名为 known_hosts 的文本文件中,大致如下所示: 在此处输入图像描述

于 2019-04-09T22:11:50.473 回答
11

警告:如果您将密钥保存在C:/User/username/.ssh(默认位置)下,请确保在某处备份您的密钥(例如您的密码管理器)。

在最新的 Windows 10 更新(版本 1607)之后,我的 .ssh 文件夹为空。这是我的密钥一直存在的地方,但 Windows 决定在更新时删除它们。

谢天谢地,我已经备份了我的密钥……但是……我敢打赌,今天有些人会恢复他们的 PC。

于 2017-01-24T19:34:54.523 回答
7

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.

  • Open the windows command line
  • Type ssh-keygen
  • Leave file name blank, just press return,
  • Set your passphrase
  • Generate your key files. They will now exist. and be stored in c:/Users/YourUserName/.ssh/

(using Admin Command Line and Windows 10 Pro)

于 2016-09-29T16:26:22.810 回答
6

创建私钥/公钥:

  1. 打开终端(git bash,PowerShellcmd.exe
  2. 输入ssh-keygen
  3. 按回车键保存默认文件 ( ~/.ssh/id_rsa)
  4. 输入默认密码(无密码)
  5. 再按回车
  6. 查看输出并确保RSAis3072或以上

您现在已经创建了一个私钥/公钥对。

对于 GIT,密钥的强度必须为2048,必须位于用户.ssh目录中并被调用id_rsaid_rsa.pub将密钥粘贴到任何地方时,请确保使用不会添加新行的程序,例如 VIM。

于 2018-05-24T10:50:47.313 回答
3

此外,您可以尝试(对于 Windows 10 Pro)以管理员身份运行 Powershell 并键入ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

此外,您可以尝试ssh-keygen从 Git Bash 终端运行

于 2020-03-20T06:58:23.897 回答
2

如果您有带有 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"      
    }
}

你可以在这里得到要点

我有一个简短的写在这里

于 2020-03-11T17:26:22.800 回答
1

尽管我已经是管理员并且可以手动创建目录,但我终于通过使用“运行管理员”运行打开命令行来使其工作

于 2017-09-25T06:46:57.307 回答
1

所有这些答案都会生成不够安全的默认密钥。这个答案建议了一种(多种方法中的一种)生成安全密钥的方法。我宁愿在此页面上使用我的答案而不是其他答案......到目前为止......

ssh-keygen -t rsa -b 4096

于 2021-05-15T21:58:55.230 回答