SSH를 통해 openssh 서버 버전 7.8 이상에 액세스할 수 없습니다.

SSH를 통해 openssh 서버 버전 7.8 이상에 액세스할 수 없습니다.

공개 키 인증을 사용하여 터미널에서 내 VPS에 새로 설치된 Centos8에 로그인할 수 없습니다.

로그인하면 정상적으로 인증되는 것처럼 보이지만 시간이 초과되어 "[원격 호스트 IP 주소]에 의해 연결 재설정"(피어가 아님)이 반환됩니다.

모든 로그를 확인했습니다. 그러나 실제로는 아무것도 오지 않습니다.

내가 확인한 사항:

  • /var/log/메시지
  • /var/log/audit/audit.log
  • /var/로그/보안
  • ~/.ssh 및 ~/.ssh/id_rsa* 파일에 대한 권한
  • /etc/ssh/sshd_config

LAN의 다른 컴퓨터에서 로그인을 시도했지만 성공하지 못했습니다.

  • 우분투18.04
  • CentOS 7 머신
  • 월드 SL

아무런 문제 없이 동일한 VPS에서 깨끗한 CentOS7 설치에 로그인했다는 점은 주목할 가치가 있습니다.

OpenSSH 8에 제가 모르는 변경 사항이 있나요?

CentOS7 및 CentOS8 시스템에 로그인하기 위한 자세한 출력을 첨부했습니다.

보시다시피 인증은 두 가지 측면 모두에서 성공합니다.

debug1: Authentication succeeded (publickey)

CentOS 8에서 볼 수 있는 주요 차이점은 이제 OpenSSH 7 대신 OpenSSH 8을 사용한다는 것입니다.

OpenSSH 8에 제가 모르는 변경 사항이 있나요?

미리 감사드립니다.


편집 1

@thehostingadmin 웹 GUI에서 복사하여 붙여넣는 방법을 모르지만 다음은 제공한 명령의 출력입니다.https://i.stack.imgur.com/9lJec.jpg

편집 2

# sysctl -w net.ipv4.tcp_tw_recycle=0
sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory

# sysctl -w net.ipv4.tcp_tw_reuse=0
net.ipv4.tcp_tw_reuse = 0

결과: 여전히 주사위가 없습니다

편집 3

성공/실패 매트릭스

|         OS         |  SSH Client   |   Network    | Auth |  Success   |
|--------------------|---------------|--------------|------|------------|
| Ubuntu 18.04 (WSL) | OpenSSH_7.6p1 | LAN (NAT x2) | OK   | E01 | TO/H |
| Debian 10 (RPi)    | OpenSSH_7.9p1 | LAN (NAT x2) | OK   | TO/H       |
| Ubuntu 18.04       | OpenSSH_7.6p1 | LAN (NAT x1) | OK   | E02        |
| CentOS 7.8         | OpenSSH_7.4p1 | LAN (NAT x1) | OK   | TO/H       |
| CentOS 7.8         | OpenSSH_7.4p1 | VPS          | OK   | OK         |
  • E01:[원격 호스트 IP 주소] 포트 22를 통해 연결 재설정
  • E02: packet_write_wait : [원격 호스트 IP 주소] 포트 22에 연결 중 : 끊어진 파이프
  • TO/H: 시간 초과/중단

편집 4 다음과 같이 변경되었습니다.

# /etc/ssh/sshd_config
TCPKeepAlive yes
ClientAliveInterval 20
ClientAliveCountMax 5

측정 가능한 차이는 없습니다.

편집 5

SSH 클라이언트에서 오류가 발생하면 E01서버에서 다음을 볼 수 있습니다.

# journalctl -u systemd-logind -fn0
Aug 27 14:51:18 host systemd-logind[701]: New session 136 of user root.
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 1
Aug 27 14:51:38 host systemd-logind[701]: Session 136 logged out. Waiting for processes to exit.
Aug 27 14:51:38 host systemd-logind[701]: Removed session 136.

성공적인 로그인은 다음과 같습니다.

Aug 27 15:04:42 host systemd-logind[701]: New session 143 of user root.

편집 6

뒤돌아 LogLevel보니 DEBUG3다음과 같은 것이 있었다/var/log/secure

# Login Fail
Aug 27 15:59:07 host sshd[9387]: debug3: monitor_read: checking request 124
Aug 27 15:59:26 host sshd[9389]: Read error from remote host <wan ip> port 2611: Connection reset by peer
Aug 27 15:59:26 host sshd[9389]: debug1: do_cleanup

# Login Success
Aug 27 15:57:48 host sshd[9360]: debug3: monitor_read: checking request 124

편집 7

@fra-san에게 사과드립니다. 더 자세한 로깅( -vvv)을 추가하면 더 많은 세부정보가 제공됩니다.

# SSH fail
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: send packet: type 1
Connection reset by <remote host ip> port 22

# SSH Success
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Activate the web console with: systemctl enable --now cockpit.socket

편집 8

내 홈 라우터(사용자 정의 펌웨어)를 내 ISP에서 제공한 라우터로 교체했습니다. 아직도 기쁨이 없습니다.

편집 9

Wireshark 패킷 추적에 참여해 보세요.

참고: 호스팅 공급자에게 문제를 제기한 후(해당 업체에서는 작동함) 서버의 OpenSSH 서버가 OpenSSH 7.8로 전환되었지만 문제는 여전히 지속됩니다.

편집 10

라인상어. 클라이언트와 서버:https://i.stack.imgur.com/XRZRW.jpg

노트

  • 클라이언트가 서버로부터 프레임 29를 수신하지 못했습니다.
  • 호스팅 제공업체가 opensshv8로 다시 변경되었습니다.

답변1

DEBUG 로깅을 활성화한 다음 Journalctl을 사용하여 VPS에서 sshd를 추적하지 않으면 알 수 있는 방법이 없습니다.

이렇게 하려면 VPS 공급자에게 콘솔을 통해 서버에 액세스하는 방법을 문의해야 합니다. 공급자마다 방법이 다릅니다.

/etc/ssh/sshd_configVPS의 어느 위치에나 다음 구성을 추가하세요.

LogLevel DEBUG

VPS에서 sshd를 다시 시작합니다.

sudo systemctl restart sshd

VPS에서 sshd 로그를 추적합니다.

journalctl -u sshd -fn0

이제 로컬 컴퓨터에서 ssh를 시도하면 sshd에서 말하는 오류를 확인할 수 있습니다.

편집하다:댓글 결과에 따라 업데이트됨:

NATd 호스트에서 연결하는 데 어려움이 있다는 점을 고려하여 Cent 8 VPS에서 다음 커널 구성이 활성화되어 있는지 확인하고 활성화되어 있으면 비활성화하십시오.

sysctl -w net.ipv4.tcp_tw_recycle=0

sysctl -w net.ipv4.tcp_tw_reuse=0

이것이 작동하면 /etc/sysctl.conf재부팅을 사용하여 변경 사항을 유지하십시오.

답변2

좋은 소식이 있어요.

ISP에 문제를 제기했습니다. 그들은 나에게 새로운 IP를 주었다. 그 밖에 무엇을 했는지는 모르겠지만 문제가 해결되었습니다.

나는 아직도 그 일을 하고 싶다 openssh.

그들은 특히 VMWare 커뮤니티 내에서 이것이 알려진 문제라고 말합니다.

https://communities.vmware.com/thread/590825

이 문제는 OpenSSH_7.8의 이 플래그와 관련된 변경 사항과 관련이 있습니다 QoS.

http://www.openssh.com/txt/release-7.8

이것해결책~/.ssh/config파일에서 다음을 사용하는 것입니다

Host *
    IPQoS=throughput

이것이 나에게 맞는지 확인하기 전까지는 이것을 답변으로 표시하지 않겠습니다.

답변3

이것은 나에게 중요합니다:

restorecon -Rv ~/.ssh 

여기에서:https://wiki.centos.org/HowTos/Network/SecuringSSH

관련 정보