在服务器的git配置
在多人共享的科研服务器上,且每个人有独立的用户账号,最安全、最方便的认证方式是配置 SSH 密钥。
因为你有自己的独立用户,你生成的密钥会保存在你自己的 ~/.ssh 目录下,其他用户无法访问,这样既保证了安全,又可以免密码进行 git pull 和 git push。
以下是完整的步骤指南:
第一步:在服务器上生成 SSH 密钥
- 使用你的账号通过 SSH 登录到服务器。
- 在终端中输入以下命令生成新的 SSH 密钥(推荐使用更安全的
ed25519算法)。请将双引号内的邮箱替换为你注册 GitHub 使用的邮箱:1
ssh-keygen -t ed25519 -C "your_email@example.com"
- 系统会提示你保存密钥的文件位置:直接按回车(Enter),使用默认路径即可。
1
Enter file in which to save the key (/home/your_username/.ssh/id_ed25519):
- 系统会提示你输入 passphrase(密码短语):为了平时拉取/推送时免密码的便利性,建议直接按两次回车留空。(如果你对安全性要求极高,可以设置密码,但每次 push 都会要求输入)。
1
Enter passphrase (empty for no passphrase):
第二步:获取并复制你的公钥
密钥生成后,会有公钥(.pub)和私钥两个文件。你需要把公钥告诉 GitHub。
在终端输入以下命令查看你的公钥内容:
1 | cat ~/.ssh/id_ed25519.pub |
终端会输出一长串以 ssh-ed25519 开头,以你的邮箱结尾的字符串。用鼠标选中并复制这一整段内容。
第三步:将公钥添加到 GitHub
- 在你的个人电脑上打开浏览器,登录 GitHub。
- 点击右上角的头像,选择 Settings(设置)。
- 在左侧边栏找到并点击 SSH and GPG keys。
- 点击绿色的 New SSH key 按钮。
- Title(标题):随便填,建议填一个能让你认出这台机器的名字,比如
Lab-Server-MyName。 - Key type:保持默认的
Authentication Key。 - Key:将你刚才在服务器终端里复制的那一长串公钥粘贴到这里。
- 点击 Add SSH key 保存。
第四步:测试连接是否成功
回到服务器的终端,输入以下命令测试与 GitHub 的连接:
1 | ssh -T git@github.com |
- 第一次连接时,系统可能会问你是否信任该主机的指纹(
Are you sure you want to continue connecting (yes/no)?),输入yes并按回车。 - 如果配置成功,你会看到类似这样的提示:
1
Hi YourGitHubUsername! You've successfully authenticated, but GitHub does not provide shell access.
第五步:配置 Git 用户信息(重要)
为了让提交记录(Commit)正确显示你的名字和邮箱,别忘了在服务器上配置全局 Git 信息:
1 | git config --global user.name "你的名字或GitHub用户名" |
💡 关键提示:后续克隆或修改仓库地址
完成上述配置后,请确保你使用的是 SSH 链接 而不是 HTTPS 链接来操作仓库。
- 克隆新仓库时,请选择
SSH选项,命令格式应该像这样:1
git clone git@github.com:用户名/仓库名.git
- 如果是服务器上已经存在的仓库,并且之前是用 HTTPS 克隆的(
https://github.com/...),你需要修改它的远程地址为 SSH:1
2
3
4# 进入你的仓库目录
cd your_project_folder
# 修改 origin 的 URL
git remote set-url origin git@github.com:用户名/仓库名.git
方法2
使用 Personal Access Token (最推荐,简单快捷)
这种方法不需要在机器上生成密钥,非常适合 AutoDL 这种随时可能释放的云端实例。
- 生成 Token(以 GitHub 为例):
登录 GitHub,点击右上角头像 -> Settings -> 左侧最下方 Developer settings -> Personal access tokens -> Tokens (classic)。
点击 Generate new token (classic),随便写个名字,勾选 repo 权限(重要,这决定了你能否拉取私有库)。
生成后,复制那一长串 Token(关掉页面就看不到了)。
- 在 AutoDL 终端拉取代码:
使用带有 Token 的专属 HTTPS 链接进行 Clone:
Bash
git clone https://<你的Token>@github.com/<你的用户名>/<你的私有仓库名>.git
例如:git clone https://ghp_xxx123456@github.com/myname/myproject.git
