添加ssh密钥(当前机生成和远程机承认)
以下是从头开始生成自定义名称的SSH密钥的完整步骤(以GitHub为例,适用于任何SSH服务):
1. 生成自定义名称的SSH密钥对
bash
# 生成密钥对(-t 指定算法,-f 指定路径和名称,-C 添加注释)
ssh-keygen -t ed25519 -f ~/.ssh/github_mykey -C "[email protected]"
-
参数说明:
-t ed25519
:推荐使用更安全的Ed25519算法(若系统不支持,可用-t rsa -b 4096
)。-f ~/.ssh/github_mykey
:自定义密钥路径和名称(此处生成github_mykey
(私钥)和github_mykey.pub
(公钥))。-C "注释"
:可选,用于标识密钥用途(如邮箱)。
-
交互提示:
- 直接狂按回车跳过密码(或设置一个密钥密码增强安全性)。

生成密钥对
上传远程主机
2. 将公钥上传到目标服务
2.1 GitHub/GitLab等平台:
- 复制公钥内容:
bash
cat ~/.ssh/github_mykey.pub
- 登录GitHub → Settings → SSH and GPG keys → New SSH key,粘贴公钥。
2.2 修改服务器配置
适用于连接远程服务器的情况
# 确保远程主机已开启 SSH 服务
sudo apt update
sudo apt install openssh-server # Ubuntu
sudo systemctl enable --now sshd # 启动并设置开机自启
# 检查 SSH 服务状态
sudo systemctl status sshd

# 修改SSH的配置
nano /etc/ssh/sshd_config
# 在服务器上检查以下关键配置
PasswordAuthentication yes # 是否允许密码登录
PubkeyAuthentication yes # 是否允许密钥登录
PermitRootLogin no # 是否禁止root登录(建议禁用)
sudo systemctl restart sshd
2.2.2 自有服务器:
将公钥追加到服务器的 ~/.ssh/authorized_keys
:
bash
ssh-copy-id -i ~/.ssh/github_mykey.pub user@server_ip
(若命令不可用,手动复制公钥内容到服务器的 ~/.ssh/authorized_keys
文件中)
3. 配置SSH客户端(在本机处理)
编辑或创建 ~/.ssh/config
文件,指定自定义密钥:
bash
nano ~/.ssh/config
添加以下内容(以GitHub为例):
Host github.com
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/github_mykey
IdentitiesOnly yes
- 关键参数:
IdentityFile
:指向你的自定义私钥路径。IdentitiesOnly yes
:避免SSH尝试默认密钥。
4. 测试连接
bash
ssh -T [email protected]
- 成功时会显示:
Hi {username}! You've successfully authenticated...
总结
- 用
ssh-keygen -f
生成自定义密钥。 - 上传
.pub
公钥到目标服务。 - 通过
~/.ssh/config
指定私钥路径。 - 测试并修复权限问题。