密钥登录
1. SSH密钥生成
SSH密钥对是基于非对称加密原理生成的一组密钥,包含一个私钥(如id_rsa)和一个公钥(如id_rsa.pub)。在Linux、macOS和Windows等操作系统上,你可以使用ssh-keygen命令来生成SSH密钥对,主要用于无密码自动登录服务器或授权访问Git仓库等场景。
以下即为在终端中生成SSH密钥的操作步骤
-
打开终端 对于Windows用户,可以使用PowerShell、Windows Terminal或Git Bash等工具打开命令行界面。
-
生成RSA密钥对 在终端中输入以下命令,用您的实际电子邮件地址替换
"your_email@example.com"来作为密钥注释:
其中:
`-b 3072` 表示生成3072位长度的密钥,推荐使用至少2048位,且为1024的倍数以保证安全性。
`-t rsa` 指定使用的加密算法类型为RSA。
`-f ~/.ssh/id_rsa` 设置密钥文件的保存路径及文件名,默认存储在用户的`.ssh`目录下。
`-C "your_email@example.com"` 为密钥添加一个可选的注释,便于识别密钥所有者。
-
交互提示 默认情况下,程序会询问是否要覆盖已存在的密钥文件,按回车键接受默认位置(如果不希望覆盖,则可以指定一个不同的文件名)。 接下来,系统可能会提示您为私钥设置一个密码(passphrase)。如果您想设置密码以增加安全性,请输入并确认;如果不需要密码保护,只需连续按两次回车跳过此步骤。
-
完成密钥生成 成功执行上述命令后,会在默认的
.ssh目录下生成两个文件:-
id_rsa:私钥文件,应妥善保管,不对外分享。 -
id_rsa.pub:公钥文件,可用于远程服务器认证或其他需要公钥的应用场景。
-
其他密钥类型
若要生成基于不同加密算法的安全密钥,如 ECDSA 或 ED25519 类型,只需将 -t rsa 替换为相应类型
2. 公钥上传
假设你要将公钥上传到远程服务器以便无密码登录,你需要将id_rsa.pub的内容追加到远程服务器上的~/.ssh/authorized_keys文件中。
个人电脑上的操作
# 将本地公钥内容复制到剪贴板
cat ~/.ssh/id_rsa.pub | clip # Windows (使用clip命令)
cat ~/.ssh/id_rsa.pub | pbcopy # macOS (使用pbcopy命令)
cat ~/.ssh/id_rsa.pub | xclip -sel clip # Linux (使用xclip命令)
远程服务器上的操作
- 首先确保你已将公钥(
.pub文件内容)内容复制到剪贴板。 - 登录GitHub或其他Git服务网站。
- 进入账户设置->SSH和GPG密钥部分。
- 点击“New SSH key”或类似按钮。
- 给密钥起个标题(比如“Personal Computer”),然后将剪贴板里的公钥内容粘贴到Key文本框中。
- 点击“Add SSH key”完成上传。
3. 私钥上传(特殊情况:用于Git)
在使用Git的情况下,私钥仅用于本地,当你推送代码到远程仓库时,Git会自动使用这个私钥与远程仓库进行安全认证。
通常情况下,私钥无需上传,而是保留在本地计算机上,但为能够在GPU服务器中使用Git,需要将私钥上传到服务器。
建议生成一个用于Git的单独的SSH密钥文件,并命名为id_rsa_git,然后将该文件复制到GPU服务器的~/.ssh/git目录下,并保持相应的权限(一般为600),即完成私钥上传。
最后需要配置修改SSH Config文件,将id_rsa_git文件作为Git的默认SSH密钥文件,具体操作件见SSH远程连接中Config文件配置部分。