SSH 연결을 설정할 수 없습니다. "debug1: read_passphrase: /dev/tty를 열 수 없습니다: 해당 파일이나 디렉터리가 없습니다." 및 "호스트 키 확인에 실패했습니다."

SSH 연결을 설정할 수 없습니다. "debug1: read_passphrase: /dev/tty를 열 수 없습니다: 해당 파일이나 디렉터리가 없습니다." 및 "호스트 키 확인에 실패했습니다."

원격 서버 중 하나에 SSH 연결을 설정할 수 없습니다.

두 가지 모두에 대한 주소, 사용자 이름 및 비밀번호가 있습니다.

아래와 같이 SSH 연결을 생성하면 ssh user@server다음과 같은 오류가 발생합니다 .Host key verification failed.

이 주제에 대한 가장 일반적인 대답은 ssh-keygen -R hostname. 문제는 내 원격 서버에 있습니다. 권한이 매우 제한되어 있어 오류가 발생합니다 ssh-keygen: command is not found. 일반적으로 serviceor all 과 같은 명령은 su동일한 오류를 발생시킵니다 command is not found.

SFTP를 통해 Filezilla에 대한 연결을 생성할 수 있으므로 이 문제를 수동으로 수정할 수 있습니까? 또한 중요한 경우 내 .ssh디렉토리는 비어 있으므로 거기 known_host에는 아무것도 없습니다.

이것이 완전한 출력이다ssh -v user@server

OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Connecting to XXX port 22.
debug1: Connection established.
debug1: identity file /.ssh/id_rsa type -1
debug1: identity file /.ssh/id_rsa-cert type -1
debug1: identity file /.ssh/id_dsa type -1
debug1: identity file /.ssh/id_dsa-cert type -1
debug1: identity file /.ssh/id_ecdsa type -1
debug1: identity file /.ssh/id_ecdsa-cert type -1
debug1: identity file /.ssh/id_ed25519 type -1
debug1: identity file /.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1Debian-5+deb8u4
debug1: match: OpenSSH_6.7p1 Debian-5+deb8u4 pat OpenSSH* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: kex: [email protected] need=20 dh_need=20
debug1: kex: [email protected] need=20 dh_need=20
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA XXX
debug1: read_passphrase: can't open /dev/tty: No such file or directory
Host key verification failed.

저는 Windows PC를 사용하여 sshPuTTy를 통해 원격 서버(서버 1이라고 함)에 연결하고 있습니다. 서버 1에서는 scp및 및 기본 셸 명령을 제외한 ssh모든 항목을 실행할 권한이 거의 없습니다 . 이 서버에서 저는 온라인 상점을 운영하고 있는데, 그 백업은 다른 서버(서버 2라고 하겠습니다)에서 중지되어야 합니다.

작동했으면 좋겠지 sftp만 서버 1에 사용할 수도 없고 설치할 수도 없습니다. 그래서 나는 scp. 시도해 보았는데 curl sftp://xxx.xxx놀랍게도 실제로 작동했지만 여전히 새로운 오류가 발생합니다 curl: (51) SSL peer certificcate or SSH remote key was not ok.

답변1

Host key verification failed오류 메시지는 SSH 클라이언트가 원격 서버의 수신된 공개 키를 비교하여 ~/.ssh/known_hosts파일에 저장된 호스트 키 버전과 일치하지 않음을 발견했음을 의미합니다.

이 명령은 ssh-keygen -R hostname원격 호스트에서 아무 작업도 수행하지 않으며 특별한 권한이 필요하지 않습니다. 이 명령이 수행하는 작업은 이전 호스트 hostname키를 삭제하는 것뿐입니다.당신의 지역 known_hosts문서. 그런 다음 다음에 연결할 때 hostnameSSH 클라이언트에 현재 호스트 키의 지문이 표시되고 hostname이를 수락하라는 메시지가 표시됩니다. 처음으로 호스트에 연결할 때와 같습니다.

하지만 사용할 수 있는 명령이 없으면 연결을 시도할 수 있습니다.

ssh -o StrictHostKeyChecking=no user@server

StrictHostKeyChecking이 옵션의 기본값은 ask이전에 알려지지 않은 호스트 키를 수락하거나 거부하라는 메시지를 표시하는 것입니다. 그러나 세션에 의사 TTY가 없기 때문에 ssh클라이언트는 비대화형 모드에 있으며 메시지를 표시하지 않습니다. 값은 no호스트 키를 자동으로 수락해야 합니다. 가능하면 ssh호스트 키가 ~/.ssh/known_hosts파일에 기록됩니다. 성공하면 -o StrictHostKeyChecking=no이 옵션은 특정 서버에 처음 연결할 때만 필요합니다.

답변2

사용자 정의 빌드 루트 rootfs를 실행하는 호스트에서 SSH를 통해 원격 시스템에 연결하려고 할 때 이 문제가 발생했습니다.

내가 관찰한 것은 "호스트 키 확인 실패"라는 오류 메시지가 내가 겪고 있는 상황에 대해 오해를 불러일으킨다는 것입니다. 실제로 Known_hosts 파일에 관한 것이 아니라 ssh가 수행하려는 에코에 관한 것입니다(아래 참조).

이 키는 다른 이름으로 인식되지 않습니다. 계속 연결하시겠습니까(예/아니요/[지문])?

이를 위해서는 /dev/tty가 필요하지만 찾기/쓰기가 불가능하여 오류가 발생합니다.

read_passphrase: /dev/tty를 열 수 없습니다: 해당 파일이나 디렉터리가 없습니다

따라서 콘솔에 "yes"를 입력하고 ssh가 Known_hosts에 호스트 키를 추가할 수 있도록 이 문제를 수정해야 합니다.

나에게 도움이 된 해결책은 /dev/tty를 삭제하고 현재 tty를 여기에 소프트 링크하는 것이었습니다.

console=`tty`
ln -s $console /dev/tty

관련 정보