如何生成SSH密钥

前言

github码云上需要做得方便一些,一般都会配置SSH。而且这个SSH都是能用的。


检查是否存在SSH key

如果有的话,可以直接走第3步,直接拷贝SSH key到需要的地方去,也可以再次走第2步,覆盖重新生成SSH key.

  • cd ~/.ssh //进入密钥 (或者open ~/.ssh)

    ~/ 表示用户的信息 。进入用户信息的.ssh文件 。

    可以直接 open ~/.ssh打开密钥文件夹,或者 open ~/ 打开用户信息列表 .有可能提示没有这个文件夹路径,这样就直接生成SSH就可以了。但也有可能,你进这用户信息列表看不到.ssh文件,因为默认情况下,它是隐藏的,包括cocoapods等这些安装包都是隐藏了的。
    
    补充一下:
    显示:defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder 来显示隐藏的文件夹 (也可以在文件Finder中进行操作,具体可以百度一下就出来)
    

    隐藏:defaults write com.apple.finder AppleShowAllFiles No && killall Finder

  • 如果存在的话

    ls:察看密钥
    这两个命令就是检查是否已经存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在,那么你可以跳过步骤2,直接进入步骤3。
    如果已级存在了终端会提示:
    id_rsaid_rsa.pubknown_hosts

创建一个 SSH key

  • ssh-keygen -t rsa -C “your_email@example.com”

    代码的一切含义:
    -t 指定密钥类型,默认是 rsa ,可以省略。
    -C 设置注释文字,比如邮箱。
    -f 指定密钥文件存储文件名。

    以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码:

    Generating public/private rsa key pair.# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

    当然,一般我们可以不输入文件名,它会使用默认文件名,自动会生成 id_rsa 和 id_rsa.pub 两个秘钥文件。

  • 接着又会提示你输入两次密码

    该密码是你push文件的时候要输入的密码,而不是github管理者的密码)

    直接回车:
    我是没有输入密码的,因为输入了密码后,每次提交都需要你输入密码,很麻烦。直接回车

    Enter passphrase (empty for no passphrase): # Enter same passphrase again:

  • 接着会生成ssh key

    显示代码:

当你看到上面这段代码的收,那就说明,你的 SSH key 已经创建成功,你只需要添加到github的SSH key上就可以了。

添加你的 SSH key 到指定地方

这里我们举例 配置SSH Key 到 github上去

  • 首先你需要拷贝 id_rsa.pub 文件的内容:
    有三种方法:

    (1).pbcopy命令的方法
    pbcopy < ~/.ssh/id_rsa.pub

    (2).或者:cat命令的方法
    cat < ~/.ssh/id_rsa.pub

    (3).或者clip命令的方法
    clip < ~/.ssh/id_rsa.pub

    后者有可能会失败,提示-bash: clip: command not found,说明你的终端无没有clip命令。

  • 登录到github.com上面。从右上角的设置( Account Settings )点击出现下拉列表,然后点击菜单栏的 SSH and GPG keys 进入页面添加 SSH key。

  • 点击 Add SSH key 按钮添加一个 SSH key 。把你复制的 SSH key 代码粘贴到 key 所对应的输入框中,记得 SSH key 代码的前后不要留有空格或者回车。当然,上面的 Title是显示在 github 上的一个别名。默认的会使用你的邮件名称。

  • 测试一下该SSH key

    ssh -T git@github.com

    如果出现

    The authenticity of host 'github.com (207.97.227.239)' can't be established.    # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.    # Are you sure you want to continue connecting (yes/no)?
    

    这是正常的,你输入 yes 回车既可。如果你创建 SSH key 的时候设置了密码,接下来就会提示你输入密码:

    Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa’:
    
    当然如果你密码输错了,会再要求你输入,知道对了为止。
    注意:输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。
    

    如果出现

    Hi your_username! You’ve successfully authenticated, but GitHub does not provide shell access.
    如果用户名是正确的,你已经成功设置SSH密钥。如果你看到 “access denied” ,者表示拒绝访问,那么你就需要使用 https 去访问,而不是 SSH 。

  • 如果把SSH部署到git@git.oschina码去上面的话,

    验证: ssh -T git@git.oschina.net

    第一次会提示你输入yes

    sc:~ mao$ ssh -T git@git.oschina.net
    The authenticity of host ‘git.oschina.net (120.55.226.24)’ can’t be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    Are you sure you want to continue connecting (yes/no)? yes

    成功后会提示:
    sc:~ mao$ ssh -T git@git.oschina.net
    Welcome to Git@OSC,your username!