我试图调试 ssh 问题Too many authentication failures
,发现ssh -vv
ssh 在回退尝试密码之前会提供大量密钥。
经过调查,我发现这些键是ssh-agent
在startx
X11 启动时以某种方式添加的。
我的目录中有很多~/.ssh
不同机器的密钥,这些密钥是多年来通过许多系统更新转移的。我什至没有意识到它ssh-agent
正在运行。
我认为ssh-add
,根据手册页,默认情况下只会添加id_dsa
,id_rsa
和identity
。但不知何故,它还添加了BillBrewer.pub
、JanStewer.pub
、PeterGurney.pub
、PeterDavy.pub
、DanlWhiddon
、HarryHawke.pub
,OldUncleTomCobley.pub
并且当我希望提供密码时在每个登录会话上呈现全部内容。因此服务器上的 sshd 认为足够了并断开连接。
我怎样才能控制这种行为?除了从 .ssh 目录中删除多余的公钥并只保留我需要的私有密钥之外,这一直是一个方便的地方来保存它们。
就此而言,如果我愿意,如何停止 ssh-agent 运行?
这是一个安全问题(将密钥发送到不应获取密钥的服务器)吗?
我意识到我可以在每个会话的基础上覆盖它,-o PreferredAuthentications=password
但我更喜欢系统修复。
- 更奇怪的是:我尝试使用
ssh-add -D
来删除所有身份,或者ssh-add -d *.pub
,但是当我使用 时ssh-add -l
,它们仍然存在。
CentOS 版本 6.5、OpenSSH_5.3p1、openssh-clients-5.3p1
答案1
首先,密钥应该识别客户端,而不是远程服务器。因此,您应该只拥有很少数量的键(例如 1 个)。
官方实用程序本身在查找您的密钥(和)ssh-agent
时只会查找一些预定义的名称。 然而,除了 之外,还有其他 ssh 密钥代理。您可能正在运行一个密钥环守护程序(例如)。默认情况下,密钥环守护程序可能由您的桌面环境启动。查看桌面环境会话设置以将其关闭。~/.ssh/id_rsa
~/.ssh/id_dsa
~/.ssh/id_ecdsa
~/.ssh/identity
ssh-agent
gnome-keyring-daemon
您也可以放入IdentitiesOnly=yes
您的~/.ssh/config
文件,但我不认为这是“正确”的答案。
关于向服务器发送额外的密钥。不,这不是任何类型的安全风险。