공용 IP만 사용하는 SSH "거부된 키"는 로컬에서 작동합니다.

공용 IP만 사용하는 SSH "거부된 키"는 로컬에서 작동합니다.

그래서 내 문제는 클라이언트(PuTTY를 통한 Windows 7)에서 SSH 서버(Linux Mint Sarah에서 실행)에 연결할 수 없다는 것입니다. 로컬 IP를 통해서만 작동합니다.

서버와 클라이언트가 모두 동일한 서브넷에 있습니다. SSH 서버는 비밀번호 없이 SSH-RSA 키 연결만 허용하도록 설정되어 있습니다. 키를 설치했는데 서버의 로컬 IP에 연결하면 원하는 대로 성공적으로 작동합니다.

내 WAN 장치의 방화벽에서 포트 22를 열었고, 공용 IP를 시도하면 올바른 상자에 연결되는 것을 확인할 수 있습니다. 서버의 방화벽 켜기/끄기를 선택하면 거부가 발생하기 때문입니다. 따라서 SSH 연결이 서버에 성공적으로 도달하여 개인 키로 인증을 시도했지만 다음과 같이 실패했습니다.

Server refused our key

당연하게 들리지만 로컬에서 동일한 키를 사용하여 성공할 수 있는데 왜 키가 인증에 실패하는지 알 수 없습니다. 이 문제는 대부분의 결과가 잘못된 포트 전달이기 때문에 조사하기가 어려웠습니다.

이것이 내가 시도한 것입니다 (다음이것가이드 등):

  • 서버의 모든 패키지를 업데이트했습니다 apt-get install openssh-server.
  • 나는 /etc/ssh/sshd_config다음을 설정했습니다.
    • Port 22
    • AllowUsers user
    • PasswordAuthentication no
    • UsePAM no
  • PuTTYgen에서 디렉터리(Windows의 경우)에 저장된 공개 및 개인 키를 생성했습니다.
  • 에서는 끝에 캐리지 리턴이 있는 한 줄로 시작 하고 끝나는 /home/user/.ssh/authorized_keys공개 키 부분을 복사했습니다 .ssh-rsa== comment
  • chmod 700 ~/.sshls -al다음과 같이 나열됩니다 .drwx------
  • chmod 644 ~/.ssh/authorized_keysls -l다음과 같이 나열됩니다 .-rw-r--r--
  • PuTTY의 SSH > Auth에서 "인증용 개인 키"를 앞서 생성한 개인 키로 설정합니다.
  • 포트 22에 연결하면 user@<local_ip>... 성공합니다.
  • user@<public_ip>다음 과 같이 포트 22에 연결합니다 Server refused our key.

보너스로, 키가 거부되면 tailing은 나에게 아무것도 주지 않습니다. /var/log/auth.log로컬로 연결하면 한 Accepted publickey줄이 인쇄됩니다.

마지막으로 이것이 관련이 있는지 확실하지 않지만 공용 IP에서 FileZilla를 사용하여 SFTP에 연결하려고 하면 다음 오류가 발생합니다.

Error:  The first key-exchange algorithm supported by the server is diffie-hellman-group1-sha1, which is no longer secure. Aborting connection.
Error:  Could not connect to server

제가 중급 Linux 사용자라고 말하는 것은 무리일 수 있으므로 아마도 뭔가를 간과하고 있는 것 같습니다. 내 문제가 명확해지기를 바랍니다. 도움을 주셔서 감사합니다!


편집: PuTTY의 SSH 패킷 및 원시 데이터 출력(대부분 쓰레기이므로 사람이 읽을 수 있는 것으로 확인된 내용이 포함됨):

Event Log: Looking up host "<omitted>"
Event Log: Connecting to <omitted> port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.67
Event Log: Server version: SSH-2.0-dropbear_0.46
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Event Log: Using Diffie-Hellman with standard group "group1"
Event Log: Doing Diffie-Hellman key exchange with hash SHA-1
Event Log: Host key fingerprint is:
Event Log: ssh-rsa 1040 <omitted>
Outgoing packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Incoming packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Incoming packet #0x4, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
  00000000  00 00 00 12 70 75 62 6c 69 63 6b 65 79 2c 70 61  ....publickey,pa
  00000010  73 73 77 6f 72 64 00                             ssword.
Event Log: Server refused our key

답변1

이 줄을 보면 공용 IP의 포트 22에 연결할 때 실제로 라우터나 모뎀에 연결하고 있는 것으로 의심됩니다.

Event Log: Server version: SSH-2.0-dropbear_0.46

내부 IP로 접속하면 서버 버전 라인이 나오나요? 그렇지 않은 경우 모뎀 및/또는 라우터에서 SSH를 비활성화하고 Linux 서버 내부 IP에 대한 포트 22에 대한 포트 전달(아직 수행하지 않은 경우)을 설정해야 할 수 있습니다.

모뎀/라우터에서 SSH를 비활성화할 수 없는 경우 다른 포트(예: 2222)를 Linux 서버의 포트 22로 포트 전달해 볼 수 있습니다.

관련 정보