跳转至

3 ubuntu 密钥管理

在配置 SSH 密钥登录后,你可能需要管理和查看已有的 SSH 密钥。这些操作包括查看当前的密钥、删除无用的密钥、以及检查密钥的有效性等。以下是一些常见的操作和相关命令。

1. 查看当前的 SSH 密钥

默认情况下,SSH 密钥对保存在用户的主目录下的 .ssh 文件夹中,密钥文件通常位于 ~/.ssh/id_rsa~/.ssh/id_rsa.pub(私钥和公钥)。你可以使用以下命令查看当前密钥对:

ls -l ~/.ssh/

该命令列出了 .ssh 目录中的所有文件。常见的文件包括:

  • id_rsa: 私钥文件
  • id_rsa.pub: 公钥文件
  • known_hosts: 存储已连接主机的 SSH 公钥
  • authorized_keys: 存储允许连接的公钥(位于远程服务器上)

如果你有多个密钥对,文件名可能会有所不同,如 id_rsa_1, id_rsa_2 等。

2. 查看已添加到服务器的公钥

要查看当前登录用户的公钥(例如,你已经将某个公钥复制到服务器上并授权登录),你可以登录到远程服务器,然后查看 ~/.ssh/authorized_keys 文件:

cat ~/.ssh/authorized_keys

该文件列出了所有允许登录的公钥。如果该文件非常长,包含多个密钥,你可以使用以下命令按行查看:

less ~/.ssh/authorized_keys

或者使用 grep 来查找特定公钥:

grep 'ssh-rsa' ~/.ssh/authorized_keys

3. 删除远程服务器上的 SSH 公钥

如果你需要删除不再使用的公钥,编辑远程服务器上的 ~/.ssh/authorized_keys 文件,并删除相应的公钥行。执行以下步骤:

  1. 登录到服务器:

    ssh username@server_ip
    
  2. 编辑 authorized_keys 文件:

    nano ~/.ssh/authorized_keys
    
  3. 删除你不再需要的密钥行,保存并退出。

  4. 确保文件权限正确:

    chmod 600 ~/.ssh/authorized_keys
    

4. 删除本地 SSH 密钥

如果你不再需要某个本地生成的 SSH 密钥,可以删除相应的密钥文件。删除密钥文件时,你应该注意区分哪些文件是你需要保留的(例如 id_rsaid_rsa.pub),哪些是多余的。

  1. 查看 .ssh 文件夹中的文件:

    ls -l ~/.ssh/
    
  2. 如果你确认某个密钥不再需要,可以使用 rm 命令删除它:

    rm ~/.ssh/id_rsa_1 ~/.ssh/id_rsa_1.pub
    

    删除时,确保不要误删除了你仍然需要的密钥。

5. 查看 SSH 代理中的密钥

如果你使用了 SSH 代理来管理多个 SSH 密钥(如 ssh-agent),你可以查看当前已加载的 SSH 密钥。使用以下命令查看:

ssh-add -l

这将列出所有当前加载到 ssh-agent 中的密钥。如果你看到 "The agent has no identities" 的消息,表示没有密钥加载到代理中。

6. 从 SSH 代理中删除密钥

如果你不再需要某个密钥,可以使用 ssh-add 命令从 SSH 代理中删除它:

ssh-add -d ~/.ssh/id_rsa

或者,如果你想删除所有加载的密钥:

ssh-add -D

7. 测试密钥的有效性

如果你有多个 SSH 密钥,并且不确定哪个密钥正在被使用,或者想确保某个密钥是否正确工作,可以使用 -v(verbose)模式测试 SSH 连接:

ssh -v username@server_ip

这会显示详细的调试信息,其中包括使用的密钥文件。你可以查看输出信息中关于密钥的部分来确认是否使用了正确的密钥。

8. 生成新的 SSH 密钥对

如果你需要生成新的 SSH 密钥对,可以使用以下命令:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_new

其中: - -t rsa 表示生成 RSA 类型的密钥。 - -b 4096 表示生成 4096 位的密钥。 - -f ~/.ssh/id_rsa_new 指定新的密钥文件名称。

9. 将新的 SSH 公钥复制到远程服务器

生成新的公钥后,你可以使用 ssh-copy-id 或手动复制的方式将其添加到远程服务器的 authorized_keys 文件中。使用 ssh-copy-id 命令:

ssh-copy-id -i ~/.ssh/id_rsa_new.pub username@server_ip

10. 修改 SSH 配置文件

如果你需要修改 SSH 配置文件(例如,启用或禁用密钥认证、设置不同的登录端口等),编辑 /etc/ssh/sshd_config 文件:

sudo nano /etc/ssh/sshd_config

常见的配置项包括:

  • PasswordAuthentication: 设置为 no 禁用密码登录。
  • PubkeyAuthentication: 设置为 yes 启用公钥认证。
  • AuthorizedKeysFile: 指定存放公钥的文件位置。

修改后,重启 SSH 服务:

sudo systemctl restart ssh

总结

这些是一些常见的 SSH 密钥管理操作,包括查看、删除、和测试密钥的有效性。使用 SSH 密钥登录比使用密码更加安全,而理解如何管理密钥是确保系统安全和高效操作的关键。