Windows 10 SSH密钥


112

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

还有其他人遇到吗?我需要为不同的存储库提供3个SSH密钥,这确实使我感到困惑。


2
Windows 10隐藏点文件夹吗?
Leland Barton

不,这也是我起初的想法,但是自安装以来它增加了一些内容。
Rudenate3 2015年

2
请将您的问题移至“ 超级用户”。这是题外话这里。
2015年

3
@MartinPrikryl由于在Linux上进行了大量编码,使用Github等涉及ssh和.ssh密钥,因此我认为对于Stackoverflow来说,它是非常重要的话题。
haziz

2
我同意马丁的观点。编程问题是有关编写程序的问题,而不是程序员可能会问的任何问题。
培根

Answers:


130
  1. 打开Windows命令行(在搜索框中键入“ cmd”,然后按Enter键)。
  2. 它默认为您的主文件夹,因此您无需cd使用其他文件夹。
  3. 类型 ssh-keygen
  4. 遵循指示,您一切顺利
  5. 您的ssh密钥应存储在所选目录中,默认值为: /c/Users/YourUserName/.ssh/id_rsa.pub

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


36
看起来不错,但是不起作用。没有命令ssh-keygen
robertotomás16-10-5

10
由于某种原因,我不得不ssh-keygen在git-bash shell而不是cmd-shell中运行命令。
Olian04年

6
为此,您可以使用Git Bash sheel或git cmd,而不能使用Windows cmd。
Pavan T

6
截至2018年12月,它在Win 10中对我来说是开箱即用的
-Urs

1
@Suncatcher是的。要登录Github,DigitalOcean等,您需要位于同一文件夹中“ id_rsa.pub”中的公共密钥。使用记事本之类的文本编辑器将其打开,然后在需要添加SSH密钥的任何地方复制并粘贴。
Goose

57

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

  1. 打开命令提示符(cmd)
  2. 输入ssh-keygen并按Enter
  3. 按Enter键进入所有设置。现在您的密钥保存在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客户端和服务器的beta版。为了能够创建密钥,您需要安装OpenSSH服务器。为此,请按照下列步骤操作:

  1. 打开开始菜单
  2. 输入“可选功能”
  3. 选择“添加可选功能”
  4. 点击“添加功能”
  5. 安装“ Open SSH Client”
  6. 重新启动电脑

现在,您可以打开提示,ssh-keygen并且客户端将被Windows识别。我还没有测试。如果您没有Windows 10或不想使用Beta,请按照以下说明使用腻子。


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

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

对于openssh键,还需要执行几个步骤:

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

现在,密钥已保存。pagent在此处启动并添加私钥(Putty格式的ppk文件) Pagent键对话框

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


6
ssh-keygen包含在Windows 10中,不确定“管理可选功能”中的哪个版本
sebbu,

1
@sebbu确实,现在在Windows 10上,您可以在“管理可选功能”中安装Open SSH服务器的beta版本,这将使您使用ssh-keygen以及其他一些功能。但是它没有安装,而且也不容易找到。我将更新我的答案。
franksands

1
@KarlMorrison pagent是执行ssh身份验证的GUI。通常可以在开始菜单中找到它。
franksands

1
您不需要安装Open SSH服务器。Open SSH Client功能包括ssh-keygen。
Onots

1
@Onots我使用新版本的Windows 10(2018年10月更新)进行了测试,不仅打开ssh客户端已经足够,而且已经安装了:D我将更新答案
franksands 19-4-7的

31

WINDOWS:如果您已安装Windows的git,请转到其文件夹。

在此处输入图片说明

在bin目录中查找。没有sh.exe文件。运行它。

在此处输入图片说明

然后输入:

ssh-keygen -t rsa -C“您的电子邮件在这里”

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

猫〜/ .ssh / id_rsa.pub | 夹

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


13
  1. 打开Windows命令行(在搜索框中键入“ cmd”,然后按Enter键)。
  2. 它默认为您的主文件夹,因此您无需cd使用其他文件夹。
  3. 类型 mkdir .ssh

9

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

最新的Windows 10更新(版本1607)之后,我的.ssh文件夹为空。这是我的按键一直以来的位置,但是Windows决定在更新时删除它们。

值得庆幸的是,我已经备份了我的钥匙...但是...我敢打赌有些人今天将恢复他们的PC。


那么大多数应用程序希望您将密钥存储在哪里?
wcochran

3
升级Windows 10时,Windows可能会随机删除该文件夹中的内容?
安德鲁

8

我正在运行Microsoft Windows 10 Pro版本10.0.17763内部版本17763,并且无需编辑权限或进行任何操作即可轻松地在C:\ Users \ jrosario \ .ssh看到我的.ssh文件夹(尽管在File Explorer中,我确实选择了“显示隐藏的文件,文件夹和驱动器”): 在此处输入图片说明

密钥存储在一个名为known_hosts的文本文件中,其外观大致如下: 在此处输入图片说明


5

我发现一个明显的例外,在Windows 10中,如果文件名在ssh-keygen生成器中指定,则使用所述路由仅将文件写入文件夹。

提供自定义密钥名称会导致包含RSA公钥和私钥的文件无法写入该文件夹。

  • 打开Windows命令行
  • 类型 ssh-keygen
  • 将文件名保留为空白,只需按回车键,
  • 设置密码
  • 生成密钥文件。它们现在将存在。并存储在c:/Users/YourUserName/.ssh/

使用Admin Command Line和Windows 10 Pro


@Braineeee负面。这不会覆盖您的密钥,如果目标中当前存在密钥,则在命令行窗口中它将询问您是否要覆盖这些密钥。同一文件夹中的其他键不起作用。我知道在阅读您的评论后,我进行了一次测试运行,发现情况确实如此。
马丁

你知道为什么吗?
Damainman '17

@Damainman不幸的是,我还没有机会进一步探索这个问题,所以没有:-/
Martin-

1
谢谢@马丁,您保存了我的一天。我可以用不同的名称创建文件。我们必须以Unix方式提供路径分隔符!以下对我有用。ssh-keygen -t ed25519 -C“我的Github密钥”输入用于保存密钥的文件(C:\ Users \ bilix / .ssh / id_ed25519):c:\ users \ bilix \ .ssh \ id_ed25519_github
Prakash P

@PrakashP很高兴为您提供帮助!
马丁

4

创建私钥/公钥:

  1. 打开了终端(git bashPowerShellcmd.exe等)
  2. 输入 ssh-keygen
  3. 按Enter键保存默认文件(~/.ssh/id_rsa
  4. 按Enter键以获取默认密码(无密码)
  5. 再按一次Enter
  6. 查看输出,并确保RSAis 3072或以上

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

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


2

我终于通过运行带有“运行管理员”的命令行来运行它,即使我已经是管理员并且可以手动创建目录


1

如果您具有带有OpenSSH客户端的Windows 10,则可以生成密钥,但是由于ssh-copy-id命令不是客户端工具集的一部分,因此将密钥复制到目标Linux盒时会遇到麻烦。

遇到此问题后,我编写了一个小的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"      
    }
}

你可以在这里找到要点

在这里有简短的评论


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.