
先搞懂:SSH密钥到底是啥?为啥一定要配置?
其实SSH密钥就像你家的“钥匙+锁”组合:公钥是“锁”,你要挂在GitHub、GitLab这些远程平台上;私钥是“钥匙”,得老老实实存在自己电脑里。每次Git要连接远程仓库,就会用私钥去“开”公钥的锁——这样不用输密码,也能保证连接安全。
我之前嫌麻烦,坚持用HTTPS链接,结果每次拉代码都要输密码,有时候手快输错了,还要重新来;后来配置了SSH,才知道“无密码连接”有多香。GitHub官方文档里也明确说,SSH是推荐的连接方式——比HTTPS更安全,因为密码可能被截获,但密钥是加密的,别人拿到公钥也没用。
再举个例子:你把公钥贴在GitHub上,就像给家门装了一把“只认你钥匙的锁”;私钥存在你电脑里,就像你口袋里的钥匙。别人没有你的钥匙,就算知道锁在哪里,也进不去你家——这就是SSH的“非对称加密”,懂了吧?
三大系统分步走:从生成到验证全流程
接下来直接上步骤——我把Windows、Mac、Linux的差异揉进细节里,你对着自己的系统找对应的操作就行。先看个表格,快速定位终端工具和密钥位置:
系统 | 终端工具 | 密钥文件默认路径 |
---|---|---|
Windows | Git Bash(装Git时自带) | C:Users你的用户名.ssh |
Mac | Terminal( Spotlight搜“终端”) | ~/.ssh/(Finder按Shift+Command+G输入路径) |
Linux | Terminal(Ctrl+Alt+T打开) | ~/.ssh/(用ls -a命令查看隐藏文件) |
Windows系统:别再找“Git Bash在哪里”了
Windows用户先打开Git Bash(装Git时会自动生成快捷方式,找不到就搜“Git Bash”),然后跟着敲命令:
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
(比如你的GitHub注册邮箱),然后按3次回车——第一次问“保存密钥的路径”,默认就行;第二次问“密码”,直接回车(不用设密码,省得以后麻烦);第三次确认密码,再回车。 我第一次敲的时候,朋友问我“-t rsa是啥意思?”其实就是指定加密算法(RSA是最常用的),-b 4096
是说密钥长度是4096位——比默认的2048位更安全,亲测这个参数没坑。
C:Users你的用户名.ssh
文件夹(比如我是C:UsersZhang.ssh
),里面有两个文件:id_rsa
是私钥(别乱发!),id_rsa.pub
是公钥(要复制的就是它)。 注意:Windows默认隐藏“隐藏文件”,你得先打开“此电脑”→点击顶部“查看”→勾选“隐藏的项目”,才能看到.ssh
文件夹——我朋友之前就是没开这个,找了20分钟。
id_rsa.pub
,复制里面全部内容(从ssh-rsa
开始,到你的邮箱结束),粘贴到“Key”框里,点击Add SSH key就行。Mac/Linux系统:终端其实很好用
Mac和Linux的操作几乎一样,因为都是类Unix系统,终端命令通用:
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
,同样按3次回车——和Windows一样,默认路径、不设密码。 我用Mac的时候,第一次生成完,用ls ~/.ssh/
命令检查,看到id_rsa
和id_rsa.pub
,才放心——要是没看到,可能是命令敲错了,再重新来一遍。
pbcopy < ~/.ssh/id_rsa.pub
命令,直接把公钥复制到剪贴板(不用打开文件);Linux用户用xclip -sel clip < ~/.ssh/id_rsa.pub
(如果没装xclip,先输sudo apt install xclip
安装)。 这个技巧是我同事教的——之前我总是打开文件复制,有时候不小心多复制了个空格,结果验证失败,用命令复制就不会错。
ssh -T git@github.com
,如果弹出“Hi 你的用户名! You’ve successfully authenticated…”,就说明成了! 我第一次验证的时候,弹出“Are you sure you want to continue connecting (yes/no)?”,直接输yes就行——这是第一次连接GitHub时的安全提示,别怕。
最后提醒你几个坑:
id_rsa
是你的“家门钥匙”,要是发给别人,别人就能冒充你操作仓库——我朋友之前把私钥发给我,我赶紧让他重新生成,不然太危险。 ssh-rsa
开始,到你的邮箱结束,少一个字符都不行——我之前复制的时候漏了最后一个字母,结果验证失败,查了半小时才发现。 600
(只有自己能读能写),不然SSH会拒绝使用。如果权限不对,输chmod 600 ~/.ssh/id_rsa
就行——我之前帮Linux用户配置时,就遇到过这个问题,改了权限就好了。要是你按这些步骤试了,欢迎回来告诉我结果——毕竟我也是从“找不到密钥文件”过来的~要是卡在哪一步,把报错信息贴出来,我帮你参谋参谋!
SSH密钥和HTTPS链接有啥区别?为啥推荐用SSH?
SSH密钥就像“钥匙+锁”组合,公钥是挂在远程平台的“锁”,私钥是自己电脑里的“钥匙”,连接时不用输密码还安全;HTTPS链接每次拉代码都要输密码,手快输错得重新来,密码还可能被截获。GitHub官方文档明确说SSH是推荐的连接方式,比HTTPS更安全——别人拿到公钥也没用,因为密钥是加密的。
我之前嫌麻烦用HTTPS,后来配置了SSH才知道“无密码连接”有多香,再也不用反复输密码了。
Windows系统里的Git Bash在哪里找?找不到咋办?
装Git时会自动生成Git Bash的快捷方式,要是找不到就直接搜“Git Bash”就行。我朋友之前找不到,搜了一下就出来了,别慌。
生成SSH密钥时,ssh-keygen命令里的-t rsa -b 4096是啥意思?用默认参数行不行?
-t rsa是指定加密算法,RSA是最常用的;-b 4096是说密钥长度是4096位,比默认的2048位更安全,我亲测这个参数没坑。要是不用这个参数,默认2048位也能用,但4096位更稳妥。
复制公钥的时候要注意啥?漏了字符会咋样?
一定要复制公钥文件里的全部内容——从“ssh-rsa”开始,到你的邮箱结束,少一个字符都不行。我之前复制的时候漏了最后一个字母,结果验证失败,查了半小时才发现问题出在这。
Windows用户可以用记事本打开id_rsa.pub文件复制,Mac/Linux用户用命令复制(比如Mac的pbcopy命令),能避免手误漏字符。
验证SSH连接时弹出“Are you sure you want to continue connecting (yes/no)?”是啥意思?要输yes吗?
这是第一次连接GitHub时的安全提示,问你要不要继续连接,直接输yes就行。我第一次验证的时候也碰到过,以为出错了,后来才知道这是正常流程,输完yes就会提示连接成功啦。