当前位置: 首页 > news >正文

linux ssh公钥移除办法

移除通过 ssh-copy-id 添加的公钥,其操作逻辑正好是 ssh-copy-id 的逆过程。

ssh-copy-id 的作用是将你的本地公钥(例如 ~/.ssh/id_rsa.pub 的内容)追加到远程主机的 ~/.ssh/authorized_keys 文件中。

因此,要移除这个公钥,你需要在远程主机上编辑那个 authorized_keys 文件,并删除对应的公钥行。


详细步骤:如何从远程主机移除公钥

假设:

  • 本地主机 (Client):你发起控制的电脑。
  • 远程主机 (Server):被你控制的电脑,你想从这里移除本地主机的公钥。IP为 remote_host_ip,用户名为 username
步骤 1: 登录到远程主机

你首先需要登录到那台你想要移除公钥的远程主机。

ssh username@remote_host_ip

注意:此时你仍然可以使用之前设置好的密钥免密登录。如果你是从另一台没有授权的电脑登录,则需要输入密码(前提是远程主机的 SSH 服务没有禁用密码登录)。

步骤 2: 定位并编辑 authorized_keys 文件

登录成功后,你现在操作的是远程主机的终端。authorized_keys 文件位于用户主目录下的 .ssh 文件夹中。

使用一个文本编辑器(如 nanovim)打开它:

nano ~/.ssh/authorized_keys
步骤 3: 识别并删除正确的公钥

打开文件后,你会看到一个或多个很长的字符串,每个字符串占一行。每一行就是一个授权的公钥。
它的格式通常是:[key-type] [base64-encoded-key] [comment]

示例 authorized_keys 文件内容可能如下:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC... user@local-machine-A
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD... another-user@some-other-laptop

如何识别你要删除的那个?

关键在于每行末尾的注释(comment)。当你使用 ssh-keygen 生成密钥时,它会自动在公钥末尾添加一个 username@hostname 格式的注释,这个 hostname 就是你生成密钥时所在主机的名称。

  1. 找到与你本地主机匹配的行。例如,如果你想移除 user@local-machine-A 这台电脑的访问权限,就找到包含这个注释的公钥行。
  2. 如果你不确定是哪一行,你可以在本地主机上执行以下命令,查看你自己的公钥:
    cat ~/.ssh/id_rsa.pub
    
    然后将输出的内容与远程主机 authorized_keys 文件中的各行进行比对,找到完全匹配的那一行。
步骤 4: 删除并保存

nano 编辑器中:

  1. 使用键盘的上下箭头,将光标移动到你想要删除的那一行。
  2. 按下 Ctrl + K,这会剪切(删除)整行。
  3. 按下 Ctrl + X 准备退出。
  4. 编辑器会问你 “Save modified buffer?” (是否保存修改),输入 Y
  5. 最后按 Enter 键确认文件名,即可保存并退出。

现在,对应的公钥已经从远程主机的授权列表中被移除了。

步骤 5: 验证移除是否成功
  1. 在远程主机的终端中输入 exit 登出。
  2. 再次尝试从你的本地主机连接到远程主机:
    ssh username@remote_host_ip
    
  3. 此时,系统应该会提示你输入密码,而不是直接登录。这就证明了基于密钥的认证已经失效,移除操作成功!

重要警告:避免将自己锁在门外

在你删除公钥之前,请务必确认以下事项:

  • 不要删除唯一的访问方式:如果你禁用了密码登录(PasswordAuthentication no),并且 authorized_keys 文件中只有你将要删除的这一个公钥,那么删除它之后,你将无法再通过 SSH 登录这台主机。除非你有物理访问权限或通过云服务商的控制台访问,否则等于把自己锁在了门外。
  • 确认你知道密码:在移除公钥前,请确保你知道该用户的登录密码,并且服务器允许密码登录,以作为备用登录方式。

客户端清理(可选但推荐)

在你本地主机上,SSH 客户端会将它连接过的远程主机的“主机密钥指纹”保存在 ~/.ssh/known_hosts 文件中,用于验证服务器身份。

如果你确定以后不再连接该远程主机,或者该远程主机重装了系统(导致其主机密钥改变),你可以从你本地的 known_hosts 文件中移除它的记录。

使用以下命令可以轻松完成,而无需手动编辑文件:

ssh-keygen -R remote_host_ip

这会找到并删除 ~/.ssh/known_hosts 文件中与 remote_host_ip 相关的所有条目。

http://www.lryc.cn/news/608163.html

相关文章:

  • MySQL PostgreSQL JDBC URL 配置允许批量操作
  • SM2国密算法的大数运算原理详解
  • 牛客 - 旋转数组的最小数字
  • 【PCL点云库:下】
  • 详解Python标准库之互联网数据处理
  • 一个物理引擎仿真器(mujoco这种)的计算流程
  • 回溯 79 单词搜索一波三折想和
  • 中科院开源HYPIR图像复原大模型:1.7秒,老照片变8K画质
  • 深入剖析Nacos:云原生架构的基石
  • JVM 02 垃圾回收
  • 【LeetCode 热题 100】(三)滑动窗口
  • file命令libmagic、python的cchardet库使用、自定义magic文件的使用
  • 【Spring Boot 快速入门】五、文件上传
  • Python 入门指南:从零基础到环境搭建
  • Qt 信号和槽正常连接返回true,但发送信号后槽函数无响应问题【已解决】
  • AI原生数据库:告别SQL的新时代来了?
  • 飞书推送工具-自动化测试发送测试报告一种方式
  • Linux 动静态库的制作和使用
  • [硬件电路-121]:模拟电路 - 信号处理电路 - 模拟电路中常见的难题
  • FastAPI--一个快速的 Python Web
  • 网络安全突发事件应急预案方案
  • 2024年网络安全预防
  • 电脑手机热点方式通信(上)
  • 智能手表:小恐龙游戏
  • Linux自主实现shell
  • C#开发入门指南_学习笔记
  • Ubuntu系统VScode实现opencv(c++)图像翻转和旋转
  • Java 注解详解(含底层原理)
  • Vue 3.0 Composition API:重新定义组件逻辑的组织方式
  • 算法训练营DAY46 第九章 动态规划part13