![공용 IP만 사용하는 SSH "거부된 키"는 로컬에서 작동합니다.](https://rvso.com/image/1568304/%EA%B3%B5%EC%9A%A9%20IP%EB%A7%8C%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20SSH%20%22%EA%B1%B0%EB%B6%80%EB%90%9C%20%ED%82%A4%22%EB%8A%94%20%EB%A1%9C%EC%BB%AC%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
그래서 내 문제는 클라이언트(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 ~/.ssh
ls -al
다음과 같이 나열됩니다 .drwx------
chmod 644 ~/.ssh/authorized_keys
ls -l
다음과 같이 나열됩니다 .-rw-r--r--
- PuTTY의 SSH > Auth에서 "인증용 개인 키"를 앞서 생성한 개인 키로 설정합니다.
- 포트 22에 연결하면
user@<local_ip>
... 성공합니다. user@<public_ip>
다음 과 같이 포트 22에 연결합니다Server refused our key
.
보너스로, 키가 거부되면 tail
ing은 나에게 아무것도 주지 않습니다. /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로 포트 전달해 볼 수 있습니다.