명령을 보낼 때 호스트 키 오류로 인해 SSH가 실패하지만 호스트 키 없이는 작동합니다.

명령을 보낼 때 호스트 키 오류로 인해 SSH가 실패하지만 호스트 키 없이는 작동합니다.

현재 오래되어 죽어가는 서버에서 처리하고 있는 호스트 키 인증으로 SSH를 지원할 수 있도록 서버를 설정 중입니다. 현재로서는 SSH에 성공적으로 연결하고 정상적으로 터미널에서 상호 작용할 수 있습니다. 그러나 RSync 명령에 명령을 포함하거나 SSH를 넣으면 "호스트 키 확인 실패" 오류가 발생합니다.

따라서 다음 명령이 작동합니다.

ssh -o StrictHostKeyChecking=no -i /cygdrive/C/keys/id_rsa [email protected]

다음은 그렇지 않습니다.

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa [email protected] ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

그러나 이전 서버를 가리킬 때는 둘 다 작동하므로 명령 자체는 문제가 없습니다. 또한 명령을 변경하지 않을 수 있다면 이전 버전과도 호환될 수 있습니다.

도움이 될 경우를 대비해 새 서버(이전 서버를 모방하도록 설정된)의 sshd_config 설정을 아래에 포함시켰습니다. 여기에 있는 유일한 항목은 주석 처리되지 않은 항목입니다.

HostbasedAuthentication 아니요
RhostsRSAAuthentication 아니요
PermitEmptyPasswords 아니요
ChallengeResponseAuthentication 아니요
UsePAM 예
X11Forwarding 예
PrintMotd 아니요
PrintLastLog 예
TCPKeepAlive 예
AcceptEnv LANG LC_*
하위 시스템 sftp /usr/lib/openssh/sftp-server
PubkeyAuthentication 예
RSAAuthentication 예
LoginGraceTime 2m
PermitRootLogin 예
StrictModes 예

새 서버는 Ubuntu 17.10입니다(다음 서버가 곧 출시되면 LTS로 업데이트 예정). 이전 서버는 Debian 6.0.6입니다.

편집: 언급하는 것을 잊었습니다. 이 오류는 '-e'와 함께 RSync를 사용할 때도 발생합니다. 그러나 RSync 명령에서 [email protected]:/mnt/storage/new_folder원격 경로 매개변수를 사용하여 문제를 해결할 수 있다는 것을 알았습니다. "username@"을 제거하면 오류가 다시 발생합니다. 다시 말하지만, 실패한 버전은 이전 서버에서는 제대로 작동하고 새 서버에서만 실패합니다. 또한 이는 레거시 코드이므로 이전 명령을 있는 그대로 작동할 수 있으면 업데이트를 추진하는 데 많은 시간을 절약할 수 있습니다.

답변1

좋습니다. 호스트 A(지정되지 않음)에 있고 명령 1을 실행하면 다음과 같습니다.

ssh -o StrictHostKeyChecking=no -i /cygdrive/C/keys/id_rsa [email protected]

호스트 B(192.168.0.2)에서 대화형 쉘을 얻게 됩니다. 그러나 명령 2를 실행하면 다음과 같습니다.

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa [email protected] ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

(호스트 A에서) 오류가 발생합니다.

좋습니다. 호스트 A에서 명령 1을 실행하고 호스트 B에서 대화형 셸을 가져옵니다. 이제 호스트 B에서 명령 2b를 실행합니다.

ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

무슨 일이야? 이 방법도 실패하면 문제는 "명령을 보낼 때 호스트 키 오류로 인해 SSH가 실패하지만 호스트 키 없이는 작동합니다"가 아니라 호스트 B가 자체적으로 SSH를 실행할 수 없다는 것입니다. 호스트 B의 ”은(는) 호스트 B에 SSH를 통해 연결할 수 있도록 구성되어 있지 않습니다.

그리고 완전성을 위해 명령 2c를 실행하면 어떻게 됩니까?

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa [email protected]  mkdir -p /mnt/storage/new_folder

(호스트 A에서)?

관련 정보