前言
因为 github 和 公司的 gitlab 仓库不一致,但是我不想用一套密钥对连接 2端,所以需要配置不同的 ssh 进行连接。
操作说明
- 创建密钥对
ssh-keygen -t rsa -C "test" -f "/c/Users/my/.ssh/test"
-t:指定要使用的密钥类型。可以使用的密钥类型包括 rsa、dsa、ecdsa、ed25519 等,建议就使用 rsa ;
-C:为生成的密钥添加注释,用于标识该密钥的用途或所有者。一般是自己的邮箱,不过建议使用自己这台电脑的唯一标识
-f: 指定生成的密钥文件名及其路径。默认情况下,公钥保存在 ~/.ssh/id_rsa.pub,私钥保存在 ~/.ssh/id_rsa,这里是因为我们要多个 ssh, 所以需要重命名 /c/Users/{{自己当前登录账户的目录}}/.ssh/{{文件名,建议跟对应仓库域名联动}}
- 创建 ssh 配置文件
在当前登录用户的 .ssh 目录下创建 config 文件(无后缀)
对应写上连接的 git 仓库地址,如下图所示
Host github.com
IdentityFile ~/.ssh/github
User git
Host gitlab.test.cn
IdentityFile ~/.ssh/test
User git
Host 可以填写通配符 *, IdentityFile 指用于身份验证的私钥文件路径,User 是指连接目标主机时所使用的用户名,可以随便输入,当我们使用 git pull 等进行 ssh 连接时,就会使用对应私钥,其他参数放置在本文末尾。
- 复制公钥内容到对应代码仓库中,网上都有,就配置个截图展示下吧。
- 进行调试连接
相关 ssh 的 config 说明
- Host:设置一个别名来代替目标主机的主机名,可以在命令行中使用该别名来连接目标主机。
- HostName:设置目标主机的主机名或 IP 地址。
- Port:设置目标主机的 SSH 端口号。
- User:设置连接目标主机时所使用的用户名。
- IdentityFile:指定用于身份验证的私钥文件路径。
- Compression:启用或禁用压缩数据传输。
- ForwardX11:启用或禁用 X11 转发。
- ProxyCommand:设置代理命令,以便通过代理服务器进行连接。
- LogLevel:设置日志级别,以便记录更详细的连接信息。
- TCPKeepAlive:启用或禁用 TCP KeepAlive。
- ServerAliveInterval:设置发送心跳包的时间间隔。
- ExitOnForwardFailure:在端口转发失败时是否终止连接。
- PreferredAuthentications:设置首选的身份验证方式,可以包括 publickey、password、keyboard-interactive 等。
- ControlMaster:启用或禁用控制主进程,以便在使用相同连接的多个会话之间共享连接。
- ControlPath:设置控制连接的 UNIX 套接字路径,以便在使用控制主进程时共享连接。
- 这些选项可以通过在 SSH 的 config 配置文件中设置来自定义 SSH 客户端的行为。可以通过编辑 ~/.ssh/config 文件来修改配置。