美文网首页
如何使用终端创建SSH密钥

如何使用终端创建SSH密钥

作者: 辣枭子 | 来源:发表于2018-10-24 15:13 被阅读122次
 当公司的项目业务逐渐增多时,我们就会考虑到对项目进行组 
件化开发,一般情况都是把组件放在公司的Gitlab 上,这意味 
着您可以在本地工作,但您也可以将更改共享或“推送”到其他服 
务器。在将更改推送到GitLab服务器之前,您需要一个安全的 
通信通道来共享信息。SSH协议提供此安全性,允许您在不提 
供用户名或密码的情况下对GitLab远程服务器进行身份验证。

找到现有的SSH密钥对

    在生成新的SSH密钥对之前,通过打开shell或Windows 上的 
    命令提示符并运行以下命令,检查您的系统是否已在默认位 
    置具有一个密钥对:
    Windows命令提示符:
    type %userprofile%\.ssh\id_rsa.pub
    Windows / GNU / Linux / macOS / PowerShell上GitBash:
    cat ~/.ssh/id_rsa.pub
    如果您看到以ssh-rsa您开头的字符串已经有SSH密钥对,您
    可以跳过下一部分的生成部分并跳到复制到剪贴板步骤。如 
    果您没有看到该字符串或想要生成具有自定义名称的SSH密 
    钥对,请继续执行下一步。
    请注意,公共SSH密钥也可以如下命名:
    id_dsa.pub
    id_ecdsa.pub
    id_ed25519.pub

生成新的SSH密钥对

1. 要生成新的SSH密钥对,请使用以下命令:
   Windows / GNU / Linux / macOS上的Git Bash:
   ssh-keygen -t rsa -C "your.email@example.com" -b 4096
   注意:生成密钥时需要你设置密码,请记住设置的密码
   视窗:
    或者在Windows上,您可以下载PuttyGen 并按照此文档文章 
    生成SSH密钥对。

2.接下来,系统将提示您输入文件路径以保存SSH密钥对。如 
果您还没有SSH密钥对,请按Enter键使用建议的路径。使用建 
议的路径通常允许SSH客户端自动使用SSH密钥对而无需其他 
配置。
 如果你已经有了一个SSH密钥对建议的文件路径,则需要输入 
 一个新的文件路径,并声明此SSH密钥对将在您使用什么主 
 机.ssh/config文件,请参阅使用非默认的SSH密钥对路径工作 
 的更多信息。

3.输入文件路径后,系统将提示您输入密码以保护SSH密钥 
  对。最好使用SSH密钥对的密码,但这不是必需的,您可以通 
  过按Enter键跳过创建密码。
注意: 
  如果要更改SSH密钥对的密码,可以使用
  ssh-keygen -p <keyname>。

4.下一步是复制公共SSH密钥,因为我们之后将需要它。
  要将公共SSH密钥复制到剪贴板,请使用以下相应的代码:
苹果系统:
pbcopy < ~/.ssh/id_rsa.pub
GNU / Linux(需要xclip包):
xclip -sel clip < ~/.ssh/id_rsa.pub
Windows命令行:
type %userprofile%\.ssh\id_rsa.pub | clip
Windows / Windows PowerShell上的Git Bash:
cat ~/.ssh/id_rsa.pub | clip

最后一步是将您的公共SSH密钥添加到GitLab。
导航到“配置文件设置”中的“SSH密钥”选项卡。将您的密钥粘贴 
到“密钥”部分,并为其指定相关的“标题”。使用可识别的标题, 
如“工作笔记本电脑 -  Windows 7”或“家用MacBook Pro 15”。

如果您手动复制了公共SSH密钥,请确保从ssh-rsa您的电子邮 
件开始复制整个密钥。
   (可选)您可以通过运行ssh -T git@example.com
   (替换example.com为GitLab域)并验证是否收到Welcometo 
    GitLab消息来测试您的设置。

使用非默认SSH密钥对路径

如果您使用GitLab SSH密钥对的非默认文件路径,则必须配置 
SSH客户端以查找GitLab专用SSH密钥以连接到GitLab服务器 
(可能gitlab.com)。

 对于当前的终端会话,您可以使用以下命令(other_id_rsa使 
 用私有SSH密钥替换)来执行此操作:

 Windows / GNU / Linux / macOS上的Git Bash:
 eval $(ssh-agent -s)
 ssh-add ~/.ssh/other_id_rsa
 要保留这些设置,您需要将它们保存到配置文件中。对于 
 OpenSSH客户端,这是在~/.ssh/config某些操作系统的文件中 
 配置的。以下是使用自己的SSH密钥的两个示例主机配置:
      # GitLab.com server
      Host gitlab.com
      RSAAuthentication yes
      IdentityFile ~/.ssh/config/private-key-filename-01

     # Private GitLab server
     Host gitlab.company.com
     RSAAuthentication yes
    IdentityFile ~/.ssh/config/private-key-filename
 由于SSH客户端种类繁多,配置选项非常多,因此对这些主题 
 的进一步说明超出了本文档的范围。
 公共SSH密钥必须是唯一的,因为它们将绑定到您的帐户。您 
 的SSH密钥是通过SSH推送代码时唯一的标识符。这就是它需 
 要唯一映射到单个用户的原因。

部署密钥

每个存储库部署密钥
部署密钥允许使用单个SSH密钥对对一个或多个项目进行只读 
或读写(如果已启用)访问。

这对于将存储库克隆到Continuous Integration(CI)服务器非 
常有用。通过使用部署密钥,您不必设置虚拟用户帐户。
如果您是项目主数据或所有者,则可以在“存储库”部分下的项目 
设置中添加部署密钥。为新部署密钥指定标题并粘贴公共SSH 
密钥。在此之后,使用相应私有SSH密钥的计算机具有对项目 
的只读或读写(如果已启用)访问权限。

您无法使用表单两次添加相同的部署密钥。如果要将相同的密 
钥添加到另一个项目,请在“从可用项目部署密钥”列表中启用 
它。您可以访问的所有项目的所有部署密钥都可用。该项目访 
问可以通过成为项目的直接成员或通过组来实现。

部署密钥可以在项目之间共享,您只需将它们添加到每个项目 
中。

全局共享部署密钥

Global Shared Deploy键允许在整个GitLab安装中的任何存储 
库上配置只读或读写(如果启用)访问。

这对于将存储库集成到安全的共享持续集成(CI)服务或其他 
共享服务非常有用。GitLab管理员可以在GitLab中设置Global 
Shared Deploy密钥,并将私钥添加到任何共享系统。当项目掌 
握(或更高)授权全局共享部署密钥与其项目一起使用时,各 
个存储库选择使用这些密钥公开其代理。

与每个项目部署密钥相比,全局共享密钥可以提供更高的安全 
性,因为目标集成系统的管理员是唯一需要知道和配置私钥的 
 人。

GitLab管理员在“ 部署密钥 ”部分下的“管理”区域中设置Global 
 Deploy密钥。确保密钥具有有意义的标题,因为这将是项目主 
人和所有者识别要添加的正确Global Deploy密钥的主要方式。 
例如,如果密钥提供对SaaS CI实例的访问权限,则在密钥名 
称中使用该服务的名称(如果它是用于的全部)。在创建全局 
共享部署密钥时,请考虑密钥的粒度 - 它们的使用范围非常狭 
窄,例如只是特定服务或更广泛的用途,例如“您需要提供对存 
储库的读取访问权限”。

 GitLab管理员添加全局部署密钥后,项目主服务器和所有者可 
 以通过展开“ 部署密钥”部分并单击任何项目可用的公共部署密 
 钥下列出的相应密钥旁边的“ 启用”,将其添加到项目的“设 
 置”>“存储库”部分中  。

注意:只有配置了至少一个Global Deploy Key时,才会显示任 
何项目可用的标题公共部署密钥。

小心:警告: 
定义全局部署密钥不会通过密钥公开任何给定的存储库,直到 
该资源库将Global Deploy密钥添加到其项目中。通过这种方 
式,全局部署密钥可以启用其他系统的访问,但不要仅通过设 
置它们来隐式地提供任何访问。
应用
 如何将您的SSH密钥添加到Eclipse:https://wiki.eclipse.org/EGit/User_Guide#Eclipse_SSH_Configuration

GitLab服务器上的SSH

GitLab与系统安装的SSH守护程序集成,指定一个用户(通常 
是命名的git),通过该用户处理所有访问请求。通过SSH连接 
到GitLab服务器的用户通过SSH密钥而不是用户名来标识。

在GitLab服务器上执行的SSH 客户端操作将作为该用户执行。 
虽然可以修改此用户的SSH配置,例如,提供私有SSH密钥来 
对这些请求进行身份验证,但这种做法不受支持,并且强烈建 
议不要这样做,因为它会带来很大的安全风险。

GitLab检查过程包括检查此情况,如果您的服务器配置如下, 
将指导您到此部分,例如:

 $ gitlab-rake gitlab:check
# ...
 Git user has default SSH configuration? ... no
 Try fixing it:
  mkdir ~/gitlab-check-backup-1504540051
  sudo mv /var/lib/git/.ssh/id_rsa ~/gitlab-check-backup- 
  1504540051
  sudo mv /var/lib/git/.ssh/id_rsa.pub ~/gitlab-check-backup- 
  1504540051 For more information see:
  doc/ssh/README.md in section "SSH on the GitLab server"
   Please fix the error above and rerun the checks.
 只要你能够删除自定义配置。明确不支持这些自定义,并且可 
能随时停止工作。

故障排除

如果在Git克隆上,系统会提示您输入密码,例如 
git@gitlab.com's password:
SSH设置有问题。
确保您正确生成了SSH密钥对,并将公共SSH密钥添加到GitLab配置文件中
尝试使用ssh-agent本文档前面所述的手动注册私有SSH密钥尝 
试通过运行调试连接ssh -Tv git@example.com
(替换example.com为您的GitLab域)

相关文章

网友评论

      本文标题:如何使用终端创建SSH密钥

      本文链接:https://www.haomeiwen.com/subject/ocuttqtx.html