Git add ssh authentication

本文介绍如何在本地和远程机器间通过生成公钥私钥对,简化SSH登录时的密码输入过程,提高操作效率。

密码认证 和 公私钥 只是2种不同的方式而已。

但是每次pull or push 代码的 时候 都要输入密码,让人很头疼。所以还是用公钥私钥的验证方便。

2台机器:local & remote

//在local上生成公钥私钥对:

cd ~/.ssh && ssh-keygen

//在.ssh目录下建一个文件夹(名字随意,比如remote_keys)用来单独存放 刚才生成的公私密钥对:

mkdir ~/.ssh/remote_keys

mv ~/.ssh/id_rsa* ~/.ssh/remote_keys/

//在.ssh/config 文件中 指明哪个域名对应哪个私钥

echo "Host remote.net">~/.ssh/config && echo "IdentityFile ~/.ssh/remote_keys/id_rsa" >> ~/.ssh/config

//上面三句可以写成一句:

mkdir ~/.ssh/remote_keys && mv ~/.ssh/id_rsa* ~/.ssh/remote_keys/  && echo "Host remote.net">~/.ssh/config && echo "IdentityFile ~/.ssh/remote_keys/id_rsa" >> ~/.ssh/config

//到这里,local的部分做完了,下面是remote的部分,你该把你的公钥给人家了。

//登录到remote,编辑~/.ssh/authorized_keys文件,把local的公钥即id_rsa.pub里的内容追加到这个文件里。

//这样,公钥,私钥的映射就建立起来了。
(千万不要在terminal里直接拷贝粘贴,应使用cat >>)



<think> 我们正在讨论Ubuntu系统下设置Git SSH的方法。根据引用[1]和引用[2],关键步骤包括生成SSH密钥、将公钥添加到Git服务器(如GitHub/GitLab等)。以下是详细步骤: ### Ubuntu系统下Git设置SSH密钥的步骤 #### 1. 检查SSH密钥是否已存在 打开终端,输入以下命令检查是否已有密钥: ```bash ls -al ~/.ssh ``` 如果看到`id_rsa`和`id_rsa.pub`(RSA密钥)或`id_ed25519`和`id_ed25519.pub`(ED25519密钥)等文件,说明已有密钥[^2]。 #### 2. 生成新的SSH密钥(若没有密钥) 使用以下命令生成新密钥(推荐ED25519算法,更安全): ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` - `-t ed25519`:指定密钥类型为ED25519(若系统不支持,可使用`-t rsa -b 4096`) - `-C`:添加注释(通常为邮箱) 按提示操作: - 密钥保存路径:直接回车使用默认路径`~/.ssh/id_ed25519` - 设置密码(可选):为空则无密码 #### 3. 启动SSH代理并添加密钥 ```bash eval "$(ssh-agent -s)" # 启动代理 ssh-add ~/.ssh/id_ed25519 # 添加私钥 ``` 若遇到`Could not open a connection to your authentication agent`错误,执行: ```bash exec ssh-agent bash ssh-add ~/.ssh/id_ed25519 ``` #### 4. 复制公钥内容 ```bash cat ~/.ssh/id_ed25519.pub ``` 终端会显示公钥内容,复制全部(从`ssh-ed25519`开头到邮箱结尾)[^1]。 #### 5. 将公钥添加到Git服务器 - **GitHub**:Settings → SSH and GPG keys → New SSH key - **GitLab**:Preferences → SSH Keys - **Gitee(码云)**:设置 → SSH公钥 [^1] 粘贴复制的公钥,保存。 #### 6. 测试连接 ```bash ssh -T git@github.com # 测试GitHub ``` 若显示`You've successfully authenticated`即成功[^2]。 ### 常见问题解决 | 问题 | 解决方法 | |------------------------------------------|--------------------------------------------------------------------------| | `Permission denied (publickey)` | 检查公钥是否正确添加至服务器;确认`ssh-agent`正在运行且密钥已添加[^2] | | `Could not open a connection...` | 执行`exec ssh-agent bash`重新启动代理[^3] | | 密钥生成位置错误 | 生成时指定正确路径,或使用`ssh-keygen`默认路径 | ### 安全建议 - **密钥类型**:优先选用ED25519(比RSA更安全高效) - **密码保护**:为密钥设置密码(`ssh-keygen`时会提示) - **定期更换**:每1-2年更换一次密钥 > 注意:**切勿泄露私钥**(`~/.ssh/id_ed25519`)。私钥相当于密码,一旦泄露需立即撤销服务器上的公钥[^2]。 §§ 相关问题 §§ 1. 如何为不同的Git账户配置多个SSH密钥? 2. 如何修改现有SSH密钥的密码? 3. 服务器提示"Invalid SSH key"时如何排查? 4. 为什么测试连接时出现`Host key verification failed`错误? 5. 如何彻底删除本地SSH密钥并重新生成? </think> ### Ubuntu系统下Git设置SSH的完整指南 在Ubuntu系统中设置Git SSH是安全连接远程仓库的关键步骤,以下是详细操作流程: --- #### 一、生成SSH密钥(核心步骤) 1. **打开终端** `Ctrl+Alt+T` 启动终端 2. **生成密钥对** 推荐使用更安全的ED25519算法(兼容性要求Ubuntu 14.04+): ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` - `-t ed25519`:指定密钥类型 - `-C`:添加标识注释(通常用邮箱) 3. **交互式配置** ```bash Enter file in which to save the key (/home/user/.ssh/id_ed25519): [回车使用默认路径] Enter passphrase (empty for no passphrase): [设置密钥密码,增强安全性] Enter same passphrase again: [确认密码] ``` --- #### 二、配置SSH代理 ```bash eval "$(ssh-agent -s)" # 启动SSH代理 ssh-add ~/.ssh/id_ed25519 # 添加私钥到代理 ``` ⚠️ 若出现 `Could not open a connection...` 错误: ```bash exec ssh-agent bash # 重新初始化代理 ssh-add ~/.ssh/id_ed25519 ``` --- #### 三、添加公钥到Git平台 1. **复制公钥内容** ```bash cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard # 复制到剪贴板 # 或手动复制: cat ~/.ssh/id_ed25519.pub ``` 2. **添加到Git服务商** | 平台 | 操作路径 | |-----------|----------------------------------------| | GitHub | Settings → SSH and GPG Keys → New SSH Key | | GitLab | Preferences → SSH Keys | | Gitee | 设置 → SSH公钥 [^1] | --- #### 四、验证连接 ```bash ssh -T git@github.com # 测试GitHub连接 ``` 成功响应示例: `Hi username! You've successfully authenticated...` --- #### 五、配置全局Git账户 ```bash git config --global user.name "Your Name" git config --global user.email "your_email@example.com" ``` 验证配置: `git config --global --list` --- ### 常见问题解决 | 问题现象 | 解决方案 | |-----------------------------------|--------------------------------------------------------------------------| | `Permission denied (publickey)` | 1. 执行 `ssh-add -l` 检查密钥加载状态<br>2. 确认公钥完整复制(含开头`ssh-ed25519`) | | 多平台账户冲突 | 创建 `~/.ssh/config` 文件配置多账户 [^2] | | 连接超时 | 检查防火墙:`sudo ufw status`,必要时开放SSH端口 | --- ### 安全增强建议 1. **密钥类型选择优先级**: $$ \text{ED25519} > \text{RSA-4096} > \text{RSA-2048} $$ 2. **定期轮换密钥**: 每6-12个月重新生成密钥对 3. **启用双因素认证**: 在Git平台配置2FA,与SSH形成纵深防御 > **关键提示**:首次连接Git服务器时遇到`The authenticity of host...`提示,必须验证指纹真实性后再输入`yes` [^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值