在Mac/Linux上配置生成SSH密钥免密码登录服务器

文章目录

SSH(安全外壳协议)是一种网络协议,用于安全地访问远程计算机。SSH 密钥是一种身份验证方式,允许用户在没有密码的情况下安全地连接到服务器。本文将指导您如何在 Mac 和 Linux 系统上生成新的 SSH 密钥,配置 GitHub 密钥,以及设置 SSH 免密码登录服务器。

Mac/Linux 生成新的 SSH 密钥

  1. 打开终端。
  2. 输入以下命令生成新的 SSH 密钥:
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    替换your_email@example.com为您的电子邮件地址。
  3. 系统会提示您输入文件保存位置。可以直接按回车键使用默认位置。
  4. 接下来,系统会要求您输入密码。可以选择输入密码或直接按回车键创建无密码的密钥。

Mac/Linux 配置 GitHub 密钥

  1. 在生成 SSH 密钥后,需要将公钥添加到 GitHub 账户中。首先,复制公钥内容:
    cat ~/.ssh/id_rsa.pub | pbcopy
    
    pbcopy命令会将公钥内容复制到剪贴板。
  2. 登录您的 GitHub 账户,进入 Settings > SSH and GPG keys。
  3. 点击“New SSH key”按钮,粘贴公钥内容,并保存。

Mac/Linux 配置 SSH 免密码登录服务器

  1. 将公钥复制到服务器的~/.ssh/authorized_keys文件中:
    ssh-copy-id user@hostname -p 22
    
    替换user为您的用户名,hostname为服务器地址,-p指定服务器的 ssh 端口。
  2. 输入服务器密码完成复制。
  3. 完成后,您应该能够不需要密码就能通过 SSH 登录到服务器。

以上就是 SSH 密钥的基本配置方法。通过这些步骤,您可以提高安全性,同时简化登录过程。记得保护好您的私钥,不要泄露给他人。

SSH config 配置文件

SSH config 文件是一个非常强大的工具,它允许您为 SSH 客户端创建预设的配置。这意味着您可以为经常连接的服务器设置特定的参数,如主机名、端口、用户名和使用的密钥,从而简化连接过程。以下是一些基本的配置指南:

  • Host:这是一个标识符,用于在 SSH 命令中引用配置文件中的特定配置。例如,如果您有一个名为myserver的 Host 配置,您可以简单地通过ssh myserver命令来连接。
  • HostName:指定您想要连接的服务器的地址,可以是 IP 地址或域名。
  • User:设置默认登录用户名。
  • Port:如果您的服务器不是运行在默认的 22 端口上,您可以在这里指定一个不同的端口号。
  • IdentityFile:指定私钥文件的路径,用于密钥认证登录。
  • UseKeychain(仅限于 macOS):如果设置为yes,SSH 密钥将被添加到系统钥匙串中,这样您就不需要每次连接时都输入密钥的密码。

一个基本的~/.ssh/config文件示例可能如下所示:

Host myserver
  HostName server.example.com
  User myusername
  Port 2222
  IdentityFile ~/.ssh/mykey

在这个例子中,当您执行ssh myserver命令时,SSH 客户端会自动使用server.example.com作为主机名,myusername作为用户名,2222作为端口号,以及~/.ssh/mykey作为私钥文件。

通过合理配置 SSH config 文件,您可以大大简化 SSH 连接的复杂性,提高工作效率。

指定 GitHub 使用的 SSH KEY

git 提交的时候没有特殊配置,会使用默认的 ssh key,也就是 ~/.ssh/id_rsa.pub,当我们有多个 SSH key 时,如果想使用特定的 SSH Key 提交到 Github,也可以在 config 文件中进行配置:

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/my_github_private_key
    IdentitiesOnly yes

User 用户名指定为 gitIdentityFile 指定你要使用的 SSH 私钥路径。


也可以看看