Answers:
删除192.168.1.123
本地计算机上的缓存密钥:
ssh-keygen -R 192.168.1.123
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
后,你不需要在第一次连接主机到verificate新的密钥。
就我而言ssh-keygen -R ...
,没有解决警告。我有这样的额外信息:
Offending key for IP in /home/myuser/.ssh/known_hosts:8
Matching host key in /home/myuser/.ssh/known_hosts:24
我只是手动编辑~/.ssh/known_hosts
并删除了第8行(“违规键”)。我尝试重新连接,将主机永久添加,之后一切正常!
sed -e '8d' /home/myuser/.ssh/known_hosts
,将行号8
和文件名替换为系统上显示的内容。
known_hosts:8
引用是否为零索引值,会有些混乱。很高兴知道这是1:1映射...
ssh-keygen -R [hostname]:2022
我在局域网计算机和两个Web托管帐户之间进行了很多切换,因此我用SSH来解决了各种问题,包括ssh -v
用于查看问题出在哪里和出现问题的身份验证问题。
我刚刚解决了这个问题,对答案不满意,所以我想真正地知道自己的“为什么” ...
我的情况的触发因素是:在工作中安装了新的服务器操作系统,并且在安装openssh-server软件包后,在工作的服务器上生成了一组新的主机密钥。以前,我所有的服务器操作系统都是Ubuntu,但这次将其更改为Debian(我怀疑权限之间存在细微差别)。
当所有操作系统均为Ubuntu且我重新安装服务器的操作系统时,在第一次使用SSH时,我会收到这种警告,与上面的无声警告相比,我更喜欢这种警告!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
06:ea:f1:f8:db:75:5c:0c:af:15:d7:99:2d:ef:08:2a.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.
然后,我~/.ssh/known_hosts在计算机上打开ssh,删除该行,重新连接,然后发生这种情况:
chris@home ~ $ ssh work
The authenticity of host '[work]:11122 ([99.85.243.208]:11122)' can't be established.
ECDSA key fingerprint is 56:6d:13:be:fe:a0:29:ca:53:da:23:d6:1d:36:dd:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[work]:11122 ([99.85.243.208]:11122)' (ECDSA) to the list of known hosts.
Linux rock 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
大约:11122的那个位是我从防火墙路由SSH的端口号
我检查了以前的Ubuntu服务器上的备份,并与新的Debian安装进行了比较:
Ubuntu: Debian:
# Package generated configuration file # Package generated configuration file
# See the sshd(8) manpage for details # See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for # What ports, IPs and protocols we listen for
Port 22 Port 22
# Use these options to restrict which interface # Use these options to restrict which interfaces
#ListenAddress :: #ListenAddress ::
#ListenAddress 0.0.0.0 #ListenAddress 0.0.0.0
Protocol 2 Protocol 2
# HostKeys for protocol version 2 # HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_dsa_key
------------------------------------------------ HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security #Privilege Separation is turned on for security
UsePrivilegeSeparation yes UsePrivilegeSeparation yes
所以是的,很可能,主机最近开始使用ecdsa密钥,基于最近Ubuntu的更改,我将责任归咎于更新。Ubuntu摆脱了我指望的坚如磐石的Linux操作系统,这就是为什么我这次安装Debian的原因。
我在ecdsa上阅读了security.SE q / a,并且已经sshd_config
从新的Debian服务器上删除了该行。(跑了service ssh restart
)
ubuntu debian server
,您就会明白我的意思。
ssh-keygen -f“ /root/.ssh/known_hosts” -R 192.168.1.123
这应该替换known_hosts.old下的现有密钥并创建一个新密钥。在相同的情况下,此解决方案对我有用
您是否使用同一用户进行连接?
如果您以用户John之类的身份登录到本地PC 并以用户Adolf @ B的身份连接到服务器B,并且一切正常,这并不意味着如果您以用户Jane身份登录到本地PC 并连接到服务器,则一切正常。乙如用户阿道夫@乙。
如果要从PC A以用户Beda的身份登录服务器B 而不使用密码,请尝试以下命令,全部从PC A进行:
ssh-keygen -t rsa
此命令生成密钥并将密钥存储在文件中。请保留密码短语为空。
ssh Beda@B mkdir -p .ssh
如果目录不存在,则此命令将创建目录。否则,请勿打印错误消息。
cd ~/.ssh
此命令将目录更改为用户的主目录./ssh。
cat id_rsa.pub | ssh Beda@B 'cat >> .ssh/authorized_keys'
此命令将文件id_rsa.pub(您的公共密钥)打印到服务器上的authorized_keys中。
重要信息:Beda是您要连接的服务器上的用户名,B是您的服务器IP。
现在,您无需密码或密码即可连接到服务器B:
ssh Beda@B
问题:是什么原因造成的……?
因此,ssh服务器主机密钥已更改。是什么引起了变化?这很难说。以下是一些猜测:
问题:...以及如何解决?
正如其他人已经回答的那样,为您的帐户已缓存的myserver删除缓存的ECDSA主机密钥。
这个错误使我很烦了很长时间。由于某种原因,我是否会做一个改变
ssh host
要么
ssh host.domain
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
然后为我指出了更改配置文件的选项。请参阅我的脚本https://askubuntu.com/a/949731/129227,以实现流程自动化。
CanonicalizeHostname
,并CanonicalDomains
会避免去除严格的检查,并将使ssh考虑主机和host.domain是相同的。
以下是known_hosts
在Chrome操作系统上删除已知主机指纹(从文件中)的方法:
连接失败时,在ssh输出中找到有问题的主机条目的索引。例如,在下面的行中,索引为7:
Offending ECDSA key in /.ssh/known_hosts:7
打开Secure Shell窗口的JavaScript控制台(CTRL+ Shift+ J)并键入以下内容,并替换INDEX
为适当的值(例如7):
term_.command.removeKnownHostByIndex(INDEX);
该解决方案是从Leo Gaggl的Blog中借用的。
The ECDSA host key for server has changed
。我的方法是删除有关域的相关缓存字符串~/.ssh/known_hosts
。然后ssh起作用。