Mac上如何使用SSH连接到GitHub

    xiaoxiao2025-05-23  52

    Mac上如何使用SSH连接到GitHub

    关于SSH检查现有的SSH密钥生成新的SSH密钥并将其添加到ssh-agent生成新的SSH密钥将SSH密钥添加到ssh-agent将新SSH密钥添加到GitHub帐户 测试使用SSH密钥密码添加或更改passphrase 参考资料

    关于SSH

    使用SSH协议,你可以连接和验证远程服务器与服务。 使用SSH密钥,你可以在每次访问时不提供用户名或密码就可以连接到GitHub,即免密登陆。

    当你设置SSH时,你需要生成SSH密钥并将其添加到ssh-agent,然后将密钥添加到您的GitHub帐户。 将SSH密钥添加到ssh-agent可确保你的SSH密钥通过使用passphrase而具有额外的安全层。

    如果你超过一年未使用SSH密钥,那么根据安全预防措施,GitHub将自动删除你的非活动SSH密钥。

    检查现有的SSH密钥

    在生成SSH密钥之前,你可以检查是否已经有SSH密钥存在。

    注意:在OpenSSH 7.0中不推荐使用DSA密钥。 如果你的操作系统使用OpenSSH,则在设置SSH时需要使用备用类型的密钥,例如RSA密钥。 例如,如果你的操作系统是MacOS Sierra,则可以使用RSA密钥设置SSH。

    打开终端

    输入ls -al ~/.ssh以查看是否存在现有SSH密钥:

    $ ls -al ~/.ssh # Lists the files in your .ssh directory, if they exist

    检查目录列表以查看你是否已拥有公共SSH密钥。

    默认情况下,公钥的文件名是以下之一:

    id_dsa.pub id_ecdsa.pub id_ed25519.pub id_rsa.pub 如你没有现有的公钥和私钥对,或者不希望使用任何可用的连接到GitHub,则生成新的SSH密钥。如果你看到要用于连接到GitHub的现有公钥和私钥对(例如id_rsa.pub和id_rsa),则可以将SSH密钥添加到ssh-agent。

    提示:如果收到~/.ssh不存在的错误,请不要担心! 我们可以通过指令生成新的SSH密钥。

    生成新的SSH密钥并将其添加到ssh-agent

    检查现有SSH密钥后,可以生成用于身份验证的新SSH密钥,然后将其添加到ssh-agent。

    如果你还没有SSH密钥,则必须生成新的SSH密钥。如果你不确定是否已有SSH密钥,请检查现有密钥。

    如果你不想在每次使用SSH密钥时重新输入密码,则可以将密钥添加到ssh-agent,ssh-agent管理你的SSH密钥并记住你的密码。

    生成新的SSH密钥

    打开终端

    在终端粘贴下面的文本,记得替换你自己的GitHub电子邮件地址。

    $ ssh-keygen -t rsa -b 4096 -C“your_email@example.com”

    这将使用你提供的电子邮件作为标签创建一个新的ssh密钥。

    > Generating public/private rsa key pair.

    当系统提你 “Enter a file in which to save the key”时,按Enter键。这将使用默认的文件位置。

    >Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

    在提示符下,键入安全密码。

    > Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]

    将SSH密钥添加到ssh-agent

    在将新的SSH密钥添加到ssh-agent以管理密钥之前,你应该检查现有的SSH密钥并生成新的SSH密钥。将SSH密钥添加到代理时,请使用默认的macOS ssh-add命令,而不是macports,homebrew或其他外部源安装的应用程序。

    在后台启动ssh-agent。$ eval "$(ssh-agent -s)" > Agent pid 59566 如果你使用的是macOS Sierra 10.12.2或更高版本,则需要修改 ~/.ssh/config文件以自动将密钥加载到ssh-agent中并在密钥链中存储密码。Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa 将SSH私钥添加到ssh-agent并将密码存储在密钥链中。如果使用其他名称创建密钥,或者要添加具有不同名称的现有密钥,请将命令中的id_rsa替换为私钥文件的名称。$ ssh-add -K ~/.ssh/id_rsa

    注意:-K选项是Apple的ssh-add标准版本,当您向ssh-agent添加ssh密钥时,它会将密码链存储在你的钥匙串中。 如果你没有安装Apple的标准版本,则可能会收到错误消息 Error: ssh-add: illegal option – K.。

    将SSH密钥添加到GitHub帐户(看下一步)

    将新SSH密钥添加到GitHub帐户

    要将GitHub帐户配置为使用新的(或现有的)SSH密钥,你还需要将其添加到GitHub帐户。 具体步骤请参考官网文档

    测试

    在设置SSH密钥并将其添加到GitHub帐户后,你可以测试你的连接是否成功。 在测试SSH连接之前,你应该:

    检查现有SSH密钥生成新的SSH密钥为你的GitHub帐户添加了新的SSH密钥

    测试连接时,你需要使用密码验证此操作,密码是你之前创建的SSH密钥密码。有关使用SSH密钥密码的更多信息,请参阅“使用SSH密钥密码”。

    打开终端

    输入以下内容:

    $ ssh -T git@github.com # Attempts to ssh to GitHub

    你可能会看到如下警告:

    > The authenticity of host 'github.com (IP ADDRESS)' 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)?

    或者:

    > The authenticity of host 'github.com (IP ADDRESS)' can't be established. > RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. > Are you sure you want to continue connecting (yes/no)?

    验证你看到的消息中的fingerprint是否与步骤2中的某条消息匹配,然后键入yes:

    > Hi username! You've successfully authenticated, but GitHub does not > provide shell access.

    验证生成的消息是否包含你的用户名。如果收到“permission denied”消息,请参阅"Error: Permission denied (publickey)"。

    使用SSH密钥密码

    你可以保护SSH密钥并配置身份验证代理,这样你就不必在每次使用SSH密钥时重新输入密码。

    使用SSH密钥,如果有人获得对你计算机的访问权限,他们也可以访问使用该密钥的每个系统。 要添加额外的安全层,可以向SSH密钥添加密码。 你可以使用ssh-agent安全地保存密码,这样你就不必重新输入密码。

    添加或更改passphrase

    你可以通过键入以下命令来更改现有私钥的密码,而无需重新生成密钥对:

    $ ssh-keygen -p # Start the SSH key creation process > Enter file in which the key is (/Users/you/.ssh/id_rsa): [Hit enter] > Key has comment '/Users/you/.ssh/id_rsa' > Enter new passphrase (empty for no passphrase): [Type new passphrase] > Enter same passphrase again: [One more time for luck] > Your identification has been saved with the new passphrase.

    如果你的密钥已有passphrase,系统将提示你输入密码短语,然后才能更改为新密码短语。

    参考资料

    Connecting to GitHub with SSH

    最新回复(0)