如何生成SSH密钥(用于GitHub)

42
问题:如何使用命令行生成ssh私钥和公钥(用于GitHub/GitLab)。

下面的命令会生成错误信息:

sh.exe": syntax error near unexpected token '('

我正在使用Windows XP操作系统。

$ ssh-keygen -t rsa -C "xxxx@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/xxxx/.ssh/id_rsa.
Your public key has been saved in /c/Users/xxxx/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db xxxx@gmail.com

错误信息看起来像是你正在尝试运行一个 bash 脚本,但却使用了 sh。请参考 sh 和 bash 的区别 - tripleee
作为一则说明,多年来,“-t ed25519”已经足够好,以至于现在它是默认的、强烈推荐的类型。它提供了更好的安全性,具有更短的密钥和更短的签名,使用和检查速度更快。要与ed25519提供的256位密钥相匹配的安全性,你需要4096位的RSA密钥。 - jthill
6个回答

60

运行的命令只有

ssh-keygen -t rsa -C "you@example.com"

你脚本第2行开始的所有内容都是ssh-keygen的输出。

将you@example.com替换为你的电子邮件地址。

查看ssh-keygen手册以寻找其他选项。你可能应该在选项列表中添加-b 4096来使用更长的密钥。


我也需要保持这一行 (/c/Users/Tekkub/.ssh/id_rsa) 不变吗? - Q_Mlilo
2
这是命令的输出。您可以在其后输入自己的路径,但也可以使用默认设置。 - Residuum
加上“-b 4000”不是更好吗?这样你的密钥会更强大。 - chicks
你在Ubuntu操作系统中如何生成它? - Juniar
@Juniar 如果你已经安装了 openssh-client 包,那么运行这个命令。 - Residuum
@Residuum,谢谢。我猜这取决于您计算机上安装的SSH版本,例如针对Linux操作系统,Windows操作系统等都有不同的SSH版本。 - Juniar

13
这是指令:
ssh-keygen -t rsa -b 4096 -C "[your github's email]"
# Creates a new ssh key
# Generating public/private rsa key pair.

这将为您生成一个密钥。您需要将其复制并插入到您的Github帐户中(仅需一次)。 如何操作的步骤

1
最佳答案。您的回答值得一个绿色的勾号。 - user8106148

7

步骤1:生成SSH密钥

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

第二步:使用密钥。
$ eval $(ssh-agent -s)

然后添加我们刚生成的密钥。如果您选择了与默认不同的路径,请确保在命令中替换该路径。

ssh-add ~/.ssh/id_rsa

第三步:在GitHub上添加SSH密钥。
clip < ~/.ssh/id_rsa.pub

如果找不到剪贴板,则添加下一个命令。

cat ~/.ssh/id_rsa.pub

最终结果类似于您的命令行界面

ssh-rsa AAAAB3NzaC1yc2EAAAAD173Oe1kp0Ojnsn7sRWt/XT5nFH3CSTv6VWyxq4YUJ4ZykWa5opyiAJmvtjxOMCmVTuX2r1T4Livn0foHGt7+66FJXrXUQgyJ4RXanufb3bAekxbFPg3S6Gyr2kk+I3TYWcFsLLwjU0VVJwodQkpyygAUzhomx9OQ0FMpfkQa5VrZnaSLjjtNOUSAaq30e7JWYxtoVih2HfVkcmqc53QjY4T3Xb0cmLZF3EmwCeB66dgJtpTNMvM54ceD30INsaMFNqG8XjbJtGUCHYEIR5l/LI20K5F25BRTnCzRV9dB5FUJ8taVMGRHJob9PDUdxpA2HEJYilm8ZbLbRmKJtU+H91WNCG6pvy9Yf9MREkOZQHcWIuAsH8uJvTTbqm1eAY2g34FjarRdqZIpvdxkrErDHqh4k42owNEmHjSaAw53Y8M54fjBdFHTjGDqHBamlKcIzQbin/czFq1a+pgopIANDhZjWZNvMiTak7BjVrVOciKD3Pa/KKy03nSEfEGExLbFEi1Q8QEGd6idtUAjL7fyVPWatRwCnOvGLMPTk73m7t0IAYTm4n7dO0S5OeWTUPTT+8vIfFCmE9OT2aJDIpZY1+f8Q== youremail@gmail.com

复制你的cmd并进入你的GitHub账户设置,找到ssh和gpg密钥。


2
只需执行两个命令:
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub
复制ssh密钥并粘贴到浏览器中
进入home/.ssh文件夹。点击config文件并添加以下两行(如果config文件不存在,则创建一个名为"config"的文件):
HostKeyAlgorithms ssh-rsa
PubkeyAcceptedKeyTypes ssh-rsa

1

使用以下命令生成SSH密钥

ssh-keygen -trsa -C user@xyz.com

只需按回车键应用所有输入框的默认值

输出结果将会是:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
/home/user/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user@xyz.com
The key's randomart image is:
+---[RSA xxxx]----+
| ..++xX*Ox        |
| x..xx/+.x. + .   |
|.. +..*+xx x +    |
|... +x+o x.       |
|x.. + +..x        |
|xx.. x            |
|...               |
|x x               |
|x  x.             |
+----[SHA256]------+
  

只需使用cat命令将ssh密钥文件内容记录在终端上(在此处使用您自己的路径)。

cat /home/user/.ssh/id_rsa.pub

输出结果将是

ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user@xyz.com

复制内容并转到您的 GitHub 帐户,在“帐户设置”下的“SSH 和 GPG 密钥”中单击“新 SSH 密钥”,提供所需名称,并将已复制的内容粘贴到值中,然后保存。这样,您就可以在不使用用户名和密码的情况下提交更改了。


0

解决方案ssh-keygen -t rsa

说明ssh-keygen 是用于为 SSH 创建新身份验证密钥对的工具。这些密钥对用于自动登录、单点登录以及验证主机。

(例如,将项目从您的私人存储库直接克隆到您的 AWS 机器上)。

选项:您可以执行更复杂的操作并使用标志,以根据您的用例生成定制的密钥,扩展功能更强大和安全。基本标志包括:bits(大整数使 RSA 密钥更不容易破解)、passphrase(与密码类似)、type(dsa/ecdsa/ed25519/rsa)、comment 指定 ssh 令牌的特定注释(电子邮件或用户名)和 output key(默认存储在 ~/.ssh/ 路径下)

概要:ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa] [-N new_passphrase] [-C comment] [-f output_keyfile]

示例:

ssh-keygen -b 4096 -t rsa -n "tHiSiaPasSWoRd" -c "johnDoe@gmail.com" -f ~/.ssh/id_rsa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接