SSH(安全外壳协议)是一种网络协议,用于安全地访问远程计算机。SSH 密钥是一种身份验证方式,允许用户在没有密码的情况下安全地连接到服务器。本文将指导您如何在 Mac 和 Linux 系统上生成新的 SSH 密钥,配置 GitHub 密钥,以及设置 SSH 免密码登录服务器。
Mac/Linux 生成新的 SSH 密钥
- 打开终端。
- 输入以下命令生成新的 SSH 密钥:
替换
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
your_email@example.com
为您的电子邮件地址。 - 系统会提示您输入文件保存位置。可以直接按回车键使用默认位置。
- 接下来,系统会要求您输入密码。可以选择输入密码或直接按回车键创建无密码的密钥。
Mac/Linux 配置 GitHub 密钥
- 在生成 SSH 密钥后,需要将公钥添加到 GitHub 账户中。首先,复制公钥内容:
cat ~/.ssh/id_rsa.pub | pbcopy
pbcopy
命令会将公钥内容复制到剪贴板。 - 登录您的 GitHub 账户,进入 Settings > SSH and GPG keys。
- 点击“New SSH key”按钮,粘贴公钥内容,并保存。
Mac/Linux 配置 SSH 免密码登录服务器
- 将公钥复制到服务器的
~/.ssh/authorized_keys
文件中:替换ssh-copy-id user@hostname -p 22
user
为您的用户名,hostname
为服务器地址,-p
指定服务器的 ssh 端口。 - 输入服务器密码完成复制。
- 完成后,您应该能够不需要密码就能通过 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 用户名指定为 git
,IdentityFile 指定你要使用的 SSH 私钥路径。