如何撤消ssh-copy-id?


15

我有一个2节点hadoop集群。

我在主服务器上运行了此命令:

$ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@192.168.1.1

我该如何撤消呢?我实际上想重新分配密钥。

192.168.1.1 是奴隶。

Answers:


20

标识您在运行时复制的公钥ssh-copy-id

cat ~/.ssh/id_rsa.pub

SSH到您将密钥复制到的服务器:

ssh hadoop@192.168.1.1

编辑文件~hadoop/.ssh/authorized_keys192.168.1.1使用您喜欢的编辑器,并删除包含您的键线。


1
有没有一种方法可以更自动地进行呢?喜欢ssh-rm-id hadoop@192.168.1.1
SR

@SR我不知道有一个可以自动执行此命令的命令。从理论上讲,您可以使用一个单行代码自己“自动” ssh执行该sed命令,以运行命令(或类似命令)来编辑~/.ssh/authorized_keys和删除该行。见superuser.com/questions/429954/...
大卫·爱德华兹

4

如果您已完成ssh-copy-id赞:

remote='user@machine'
ssh-copy-id -i $remote

因此,您无需使用密码即可访问此远程计算机:

ssh $remote

要以固定方式撤消它,可以编写如下脚本:

idssh=$(awk '{print $2}' ~/.ssh/id_rsa.pub)
ssh $remote "sed -i '#$idssh#d' .ssh/authorized_keys"

我在需要scp多个文件的脚本中使用它,因此只要求输入一次密码。


1
这可能有点危险:您正在寻找密钥的注释字段。它是一个任意字符串,没有任何意义,并且可以包含多次。我会为长AAA....==字符串(实际键)或从的完整行grep id_rsa.pub。但是+1表示如何自动删除密钥。
PerlDuck

1
@PerlDuck你是对的。与第三个字段相比,使用密钥($ 2)本身要好得多。谢谢。
哈维M.18年

@JaviM。我遇到了另一个问题。默认情况下,用作sed分隔符的正斜杠在我的公钥中。结果,我发现最好使用分号作为sed分隔符,因为它似乎不太可能出现在公共密钥中。为此,必须先转义角色。我最终得到的是这样的:ssh $remote "sed -i '\;$idssh;{d}' .ssh/authorized_keys"
ccalvert

以下是有关哪些字符可以以公共密钥结尾的信息。
ccalvert

谢谢@ccalvert。根据您的建议,我已经批准了chris-maes版
Javi M.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.