AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1692785
Accepted
Danijel
Danijel
Asked: 2021-12-14 02:12:36 +0800 CST2021-12-14 02:12:36 +0800 CST 2021-12-14 02:12:36 +0800 CST

在相同的 IP 地址但不同的操作系统上 SSH 登录?

  • 772

我已经将带有 Raspbian OS 的 Raspberry Pi 连接到本地网络,并使用 ssh 密钥设置了 SSH 登录。ssh [email protected]我仅通过(为Raspberry Pi分配了静态IP)成功登录。

我现在已经删除了 Raspbian 操作系统,并插入了一张带有 Ubuntu Server(无头)的 SD 卡。

我打开 Raspberry Pi 并尝试登录,但出现错误:

ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
ERROR: Someone could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ECDSA key sent by the remote host is
ERROR: SHA256:asfasfdasdfasfdasfdasdfasdfasdfasdfasfasdf.
ERROR: Please contact your system administrator.
ERROR: Add correct host key in /home/joedoe/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /home/joedoe/.ssh/known_hosts:13
ERROR:   remove with:
ERROR:   ssh-keygen -f "/home/joedoe/.ssh/known_hosts" -R "192.168.5.163"
ERROR: ECDSA host key for 192.168.5.163 has changed and you have requested strict checking.
ERROR: Host key verification failed.

我继续添加到我的.ssh/config:

host 192.168.5.163
    StrictHostKeyChecking no

但现在我明白了

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:asdfasdfasdfasdfasdfasdfasdfasdfasdf.
Please contact your system administrator.
Add correct host key in /home/joedoe/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/joedoe/.ssh/known_hosts:13
  remove with:
  ssh-keygen -f "/home/joedoe/.ssh/known_hosts" -R "192.168.5.163"
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
[email protected]: Permission denied (publickey,password).

显然问题是我想在同一个 IP 地址上登录到两个不同的操作系统,但是新的 Ubuntu 操作系统不支持 SSH 登录设置,它不允许我以任何方式登录。

为了能够互换使用这两个操作系统,我应该如何进行?

ssh
  • 5 5 个回答
  • 5433 Views

5 个回答

  • Voted
  1. davidgo
    2021-12-14T02:37:09+08:002021-12-14T02:37:09+08:00

    您可以按照错误中的说明解决直接问题(每次切换框时都必须这样做)-

    ssh-keygen -f "/home/joedoe/.ssh/known_hosts" -R "192.168.5.163"
    

    您遇到的问题是您的计算机检测到其登录的系统与之前看到的系统不同,并且警告是为了防止中间人攻击。

    有很多方法可以正确处理这个问题。他们包括:

    1. 为每个框设置名称,/etc/hosts然后按名称而不是 IP 引用 SSH 连接。这样,SSH 会将不同的服务器指纹与每个名称相关联。

    2. 忽略检查(这会使您面临中间人攻击,因此只有在您了解并接受风险时才这样做。)您可以通过添加-o UserKnownHostsFile=/dev/null到您的 ssh 命令或-o StrictHostKeyChecking=no

      2a。您可以创建一个仅忽略一个 IP 的密钥检查的配置,方法是将以下内容放入~/.ssh/config

      主机 192.168.5.163 StrictHostKeyChecking no UserKnownHostsFile=/dev/null

    3. 除非机器扮演相同的角色,否则我不会建议这样做,但是您可以/etc/ssh在两台服务器(以及restart sshd您更改的服务器)上使主机密钥相同。这样,两台服务器对客户端来说都是一样的。

    • 30
  2. Best Answer
    Morfildur
    2021-12-15T01:45:00+08:002021-12-15T01:45:00+08:00

    有几种潜在的解决方案。

    最简单的解决方案是 davidgo 在他的回答中提出的一个,正如他所提到的,这会让您容易受到中间人攻击(不太可能,但即使在私人情况下也可以练习良好的安全性)。

      Host 192.168.5.163
          StrictHostKeyChecking no
          UserKnownHostsFile /dev/null
    

    正如 Eugen Rieck 所提议的,一个稍微好一点的解决方案是/etc/ssh/ssh_host_*key*在两个目标操作系统系统之间同步文件。

    一种更可靠的方法是专门决定要连接到哪个操作系统,因此如果您连接到错误的操作系统,您会收到错误消息。例如,如果脚本针对错误的操作系统,这将允许使用 ssh 的脚本失败。
    您可以通过在~/.ssh/ssh_config.

    Host raspbian-pi
      Hostname 192.168.5.163
      UserKnownHostsFile ~/.ssh/known_hosts_raspbian
    
    Host centos-pi
      Hostname 192.168.5.163
      UserKnownHostsFile ~/.ssh/known_hosts_centos
    

    然后您可以连接ssh <your_user>@raspbian-pi以检索 Raspbian OS 密钥,然后在您的 Raspberry Pi 上切换到 CentOS,执行相同操作ssh <your_user>@centos-pi以获取 CentOS 密钥。然后,将来,每当您连接到错误的操作系统时,您都会收到主机密钥错误。确保在第一次使用 SSH 命令时使用正确的操作系统,这样就不会意外地将 CentOS 主机密钥存储在 Raspbian 已知主机文件中。

    免责声明:我从未使用过此解决方案,也无法对其进行测试,但根据我的理解和 ssh 的文档,它应该可以正常工作。

    • 29
  3. Eugen Rieck
    2021-12-14T02:37:27+08:002021-12-14T02:37:27+08:00

    最简单的方法是从一个安装复制/etc/ssh/ssh_host_*_key*到另一个 - 这将为两个操作系统提供相同的主机密钥,从而获得指纹。

    • 21
  4. Criggie
    2021-12-14T13:44:14+08:002021-12-14T13:44:14+08:00

    另一种选择是为每个操作系统提供不同的 IP 地址。他们现在得到相同的,因为 DHCP 服务器看到相同的 MAC 地址。因此,您可以配置一个安装以使用静态 IP 地址。

    不过,我会遵循 Eugen 的建议 - 这可以简化事情。或者获得第二个 Pi 并同时运行两台机器。

    • 8
  5. iBug
    2021-12-17T07:05:58+08:002021-12-17T07:05:58+08:00

    我个人对我的所有 Linux 服务器都使用 OpenSSH 证书颁发机构。这在设置新设备和编排我的终端设备(台式机、笔记本电脑和跳转主机)时节省了很多麻烦,我之前在博客中提到过.

    虽然此功能最初并非针对此(不寻常的)用例而设计,但它提供了该问题的替代解决方案。只需使用 CA 的私钥签署两个主机密钥并将公共部分添加到您的known_hosts文件中,您的 SSH 客户端将自动信任两组主机密钥,而不会因差异而对您大喊大叫。不过,您可能仍需要ssh-keygen -R事先删除任何记住的主机密钥。

    这样做的好处是两个系统都可以保持它们的主机密钥分开和不同,这使您能够通过主机密钥(和证书 - 您可以在签署证书时自定义“身份”字段)来区分它们。这也是安全的,因为您不必盲目信任出现在该特定 IP 地址的任意主机。

    即使您想保护自己免受泄露的密钥,您也可以在签署证书时添加“允许的名称/IP 地址”作为“主体”,例如:

    ssh-keygen -s my_ca -I "RaspOS on RPi" -h -n 192.0.2.0 ssh_host_rsa_key.pub
    

    除非从 的主机提供,否则证书将不受信任192.0.2.0,除非攻击者以某种方式劫持您的流量以及主机密钥和证书。


    好吧,现在我不得不承认在两个操作系统之间复制主机密钥更容易,因为它们毕竟在同一台物理机器上。

    • 0

相关问题

  • OpenVPN 可以连接,流量有效但我不在本地网络中

  • 如何使用 GUI 远程访问 EC2 控制台

  • 需要 LDAP 身份验证 * 和 * ssh 身份验证

  • 加载密钥“ec256.pem”:尝试从私钥生成公钥时抛出无效格式

  • 为什么 chown 600 id_rsa 修复权限问题?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve