동일한 IP 주소이지만 다른 OS에서 SSH 로그인이 가능합니까?

동일한 IP 주소이지만 다른 OS에서 SSH 로그인이 가능합니까?

Raspbian OS가 설치된 Raspberry Pi를 로컬 네트워크에 연결하고 SSH 키를 사용하여 SSH 로그인을 설정했습니다. (Raspberry Pi에 고정 IP 할당) 만으로 성공적으로 로그인했습니다 .ssh [email protected]

이제 Raspbian OS를 제거하고 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 주소에서 두 개의 다른 OS에 로그인하고 싶지만 새로운 Ubuntu OS는 SSH 로그인 설정을 웨이브하지 않으며 어떤 방식으로도 로그인을 허용하지 않는다는 것입니다.

두 OS를 서로 바꿔서 사용할 수 있으려면 어떻게 진행해야 합니까?

답변1

몇 가지 잠재적인 해결책이 있습니다.

가장 쉬운 해결책은 davidgo가 그의 답변에서 제안한 것입니다. 그가 언급했듯이 MitM 공격에 노출될 수 있습니다(가능성은 낮지만 개인적인 상황에서도 좋은 보안을 실천하는 것이 좋습니다).

  Host 192.168.5.163
      StrictHostKeyChecking no
      UserKnownHostsFile /dev/null

/etc/ssh/ssh_host_*key*약간 더 나은 해결책은 Eugen Rieck이 제안한 것처럼 두 대상 OS 시스템 간에 파일을 동기화하는 것입니다 .

보다 안정적인 방법은 연결할 OS를 구체적으로 결정하는 것입니다. 따라서 잘못된 OS에 연결하면 오류가 발생합니다. 예를 들어 잘못된 OS를 대상으로 하는 경우 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-piRaspbian OS 키를 검색한 다음 Raspberry Pi에서 CentOS로 전환하고 동일한 작업을 수행하여 ssh <your_user>@centos-piCentOS 키를 얻을 수 있습니다. 그러면 앞으로 잘못된 OS에 연결할 때마다 호스트 키 오류가 발생하게 됩니다. SSH 명령을 처음 사용할 때 올바른 OS를 사용하는지 확인하여 실수로 알려진 Raspbian 호스트 파일에 CentOS 호스트 키를 저장하지 않도록 하세요.

면책조항: 저는 이 솔루션을 사용한 적이 없으며 테스트할 위치에 있지 않습니다. 그러나 ssh에 대한 저의 이해와 문서에 따르면 올바르게 작동할 것입니다.

답변2

오류에 표시된 지침을 따르면 즉각적인 문제를 해결할 수 있습니다(상자를 전환할 때마다 이 작업을 수행해야 함).

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

현재 겪고 있는 문제는 로그인하는 시스템이 이전에 본 시스템과 다르다는 것을 컴퓨터가 감지하고 중간자 공격을 방지하기 위해 경고가 표시된다는 것입니다.

이를 올바르게 처리하는 방법에는 여러 가지가 있습니다. 여기에는 다음이 포함됩니다.

  1. 각 상자에 이름을 설정한 /etc/hosts다음 IP가 아닌 이름으로 SSH 연결을 참조합니다. 이러한 방식으로 SSH는 서로 다른 서버 지문을 각 이름과 연결합니다.

  2. 확인 무시(이렇게 하면 공격이 제한될 수 있으므로 위험을 이해하고 이에 대해 편안한 경우에만 수행하십시오.) -o UserKnownHostsFile=/dev/nullssh 명령에 추가하여 이 확인을 무시할 수 있습니다.-o StrictHostKeyChecking=no

    2a. 다음을 입력하여 하나의 IP에 대한 키 확인만 무시하는 구성을 만들 수 있습니다.~/.ssh/config

    호스트 192.168.5.163 StrictHostKeyChecking UserKnownHostsFile=/dev/null 없음

  3. 컴퓨터가 동일한 역할을 수행하지 않는 한 권장하지 않지만 두 서버(그리고 변경한 서버) /etc/ssh에서 호스트 키를 동일 하게 만들 수 있습니다. restart sshd이런 방식으로 두 서버 모두 클라이언트에 동일하게 표시됩니다.

답변3

이를 수행하는 가장 쉬운 방법은 /etc/ssh/ssh_host_*_key*한 설치에서 다른 설치로 복사하는 것입니다. 이렇게 하면 두 OS 모두에 동일한 호스트 키와 지문이 제공됩니다.

답변4

저는 개인적으로 모든 Linux 서버에 OpenSSH 인증 기관을 사용합니다. 이렇게 하면 새 장치를 설정하고 이전에 터미널 장치(데스크톱, 랩톱 및 점프 호스트)를 조정할 때 많은 번거로움이 줄어듭니다.에 대해 블로그에 올렸습니다.

이 기능은 원래 이러한(비정상적인) 사용 사례를 위해 설계된 것은 아니지만 문제에 대한 대체 솔루션을 제공합니다. CA의 개인 키로 두 호스트 키에 서명하고 공개 부분을 known_hosts파일에 추가하면 SSH 클라이언트가 불일치에 대해 소리를 지르지 않고 두 호스트 키 세트를 자동으로 신뢰합니다. ssh-keygen -R하지만 기억된 호스트 키를 미리 제거해야 할 수도 있습니다 .

이는 두 시스템 모두 호스트 키를 분리하여 다르게 유지할 수 있다는 장점이 있으며, 이는 호스트 키(및 인증서 - 인증서에 서명할 때 사용자 정의할 수 있는 "ID" 필드가 있음)로 구별할 수 있는 기능을 제공합니다. 이는 특정 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공격자가 어떤 식으로든 트래픽을 가로채지 않는 한 호스트에서 제공하지 않는 한 신뢰할 수 있습니다.게다가호스트 키와 인증서.


글쎄, 이제 두 OS가 결국 동일한 물리적 시스템에 있기 때문에 두 OS 간에 호스트 키를 복사하는 것이 더 쉽다는 것을 인정해야 합니다.

관련 정보