
ssh
클라이언트(기본적으로 최소한 Ubuntu 18.04 및 FreeBSD 12에서는)는 항상 서버의 키 지문이 파일에 있는지 확인합니다 known_hosts
.
LAN에 이중 부팅이 가능한 호스트가 있습니다. 두 OS 모두 동일한 고정 IP를 사용합니다. ssh
다음을 통해 연결하고 싶습니다 .둘 다그 중 오류가 발생하지 않고.
이는 분명히 수행된 검사를 위반합니다 known_hosts
. 하나의 지문을 수락하면 호스트 IP와 관련됩니다. OS가 바뀌면 지문이 바뀌고 IP는 그대로인데 수동으로 삭제해야 known_hosts
다시 연결할 수 있습니다. 그 지문 하나 갖고 싶어요.또는다른 하나는 해당 IP를 고려할 때 허용됩니다.
거기에고객 입장에서이 문제를 극복하기 위한 해결책은?
나는 OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018
및 을 사용하고 있습니다 OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
.
메모: 서버의 지문에 대한 "확인 없음"을 원하지 않습니다. 두 개의 대체 지문(한 개가 아닌)을 서버의 IP 주소에 연결할 수 있는지 궁금합니다.
답변1
문제는 호스트 키가 바로 호스트의 키라는 것입니다. 실제로는 호스트당 하나만 있어야 합니다. 물론 여러 유형의 키가 있기 때문에 여러 가지가 있지만 단일 호스트에 대해 허용되는 여러 키를 제공하기 위해 키 유형에 의존하는 것은 피하고 싶습니다.
서버 측에서
첫 번째 제안은 클라이언트 측에서 이 작업을 정말로 수행할지 신중하게 고려하라는 것입니다. 이 두 OS를 동일한 호스트로 취급하고 간단히 호스트 키를 한 OS에서 다른 OS로 복사할 수 있습니다.
OpenSSH에서 복사하면 /etc/ssh/ssh_host*
다른 운영 체제에서도 사용할 수 있습니다. 실행하는 SSH 서버에 따라 일부 재포맷이 필요할 수도 있습니다.
하지만 ...
서버 측 솔루션을 배제한 이유를 물어봐도 될까요? 가장 쉬운 방법은 두 OS가 동일한 호스트 키를 사용하도록 만드는 것이 아닐까요? – 필립 쿨링
@PhilipCouling 부분적으로는 사용 편의성을 위해 OS 중 하나가 Windows입니다. 부분적으로 호스트에서 다른 호스트로 키를 전송하지 않는 것이 좋습니다. 이는 때때로 권장되지 않는 방식입니다. 그러나 주된 이유는 가능하다면 SSH 클라이언트 구성에서 어느 정도 유연성을 얻고 싶습니다. – 보우파크
당신이 찾고 있는 것은 두 OS가 IP와 포트 번호를 공유하더라도 서로 다른 호스트로 취급하는 방법이라고 생각합니다.
클라이언트 측에서
아마도 가장 안정적인 방법은 각 OS에 대해 호스트별 구성을 설정하는 것입니다. ~/.ssh/config
추가하려면 편집(또는 생성)하세요 :
Host windows.dualbootbox
Hostname 192.168.10.20
UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts
Host ubuntu.dualbootbox
Hostname 192.168.10.20
UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts
Hostname
각각이 Host
이미 IP로 확인되었는지 여부 는 지정할 필요가 없습니다 . 보다man ssh_config
더 많은 구성 옵션을 보려면
위의 구성을 사용하면 다음 중 하나를 수행할 수 있습니다.
ssh [email protected]
ssh [email protected]
답변2
이를 수행하는 방법은 여러 가지가 있는데, 한 가지 방법은 StrictHostKeyChecking no
호스트에 대해 ssh를 수행하는 동안 사용하는 것인데, Known_hosts에 항목을 만들지 않습니다.
ssh -o StrictHostKeyChecking=no <ip>
또는
ssh -o UserKnownHostsFile=/dev/null <ip>
또는 필요에 따라 .ssh/config 파일을 변경할 수 있습니다.