Skip to content

密钥登录

1. SSH密钥生成

SSH密钥对是基于非对称加密原理生成的一组密钥,包含一个私钥(如id_rsa)和一个公钥(如id_rsa.pub)。在Linux、macOS和Windows等操作系统上,你可以使用ssh-keygen命令来生成SSH密钥对,主要用于无密码自动登录服务器或授权访问Git仓库等场景。

以下即为在终端中生成SSH密钥的操作步骤

  1. 打开终端 对于Windows用户,可以使用PowerShell、Windows Terminal或Git Bash等工具打开命令行界面。

  2. 生成RSA密钥对 在终端中输入以下命令,用您的实际电子邮件地址替换 "your_email@example.com" 来作为密钥注释:

ssh-keygen -b 3072 -t rsa -f ~/.ssh/id_rsa -C "your_email@example.com"

其中:

  `-b 3072` 表示生成3072位长度的密钥,推荐使用至少2048位,且为1024的倍数以保证安全性。

  `-t rsa` 指定使用的加密算法类型为RSA。

  `-f ~/.ssh/id_rsa` 设置密钥文件的保存路径及文件名,默认存储在用户的`.ssh`目录下。

  `-C "your_email@example.com"` 为密钥添加一个可选的注释,便于识别密钥所有者。
  1. 交互提示 默认情况下,程序会询问是否要覆盖已存在的密钥文件,按回车键接受默认位置(如果不希望覆盖,则可以指定一个不同的文件名)。 接下来,系统可能会提示您为私钥设置一个密码(passphrase)。如果您想设置密码以增加安全性,请输入并确认;如果不需要密码保护,只需连续按两次回车跳过此步骤。

  2. 完成密钥生成 成功执行上述命令后,会在默认的 .ssh 目录下生成两个文件:

    • id_rsa:私钥文件,应妥善保管,不对外分享。

    • id_rsa.pub:公钥文件,可用于远程服务器认证或其他需要公钥的应用场景。

其他密钥类型

若要生成基于不同加密算法的安全密钥,如 ECDSA 或 ED25519 类型,只需将 -t rsa 替换为相应类型

ssh-keygen -b 3072 -t ecdsa -f ~/.ssh/id_ecdsa -C "your_email@example.com"
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "your_email@example.com"

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命令)

远程服务器上的操作

ssh user@remote_host
cd ~
./Tools/edit_ssh_key.sh 
选择1,并将剪贴板中的内容粘贴到命令行即可完成

# 在远程服务器上创建或编辑 authorized_keys 文件
mkdir -p ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

# 将公钥粘贴到远程服务器的authorized_keys文件末尾
vim ~/.ssh/authorized_keys  # 或者使用你喜欢的编辑器

# 粘贴并保存退出
# ESC键->冒号->输入wq->回车键
  1. 首先确保你已将公钥(.pub文件内容)内容复制到剪贴板。
  2. 登录GitHub或其他Git服务网站。
  3. 进入账户设置->SSH和GPG密钥部分。
  4. 点击“New SSH key”或类似按钮。
  5. 给密钥起个标题(比如“Personal Computer”),然后将剪贴板里的公钥内容粘贴到Key文本框中。
  6. 点击“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文件配置部分。