5.3 클라이언트에서 7.4 서버로의 SSH 연결 문제

5.3 클라이언트에서 7.4 서버로의 SSH 연결 문제

다음과 같은 설정이 있습니다.

  • Centos 6의 클라이언트 openssh 5.3
  • centos 7의 nginxplus 스트리밍 프록시(gitlab 서버 포트 22에 대한 프록시 사용자 정의 SSH 포트)
  • openssh 7.4를 실행하는 gitlab 서버

클라이언트에서 SSH를 통해 서버에 연결할 수 없습니다. 다른 곳에서 SSH 서버에 연결할 수 있습니다. 사용자 정의 TCP 포트에 연결할 수 있으며 ssh 클라이언트 명령을 실행하면 해당 포트에 TCP 연결이 표시됩니다. 그러나 클라이언트가 데이터를 제공하지 않기 때문에 데이터가 gitlab 서버로 프록시되지 않습니다.

또한 클라이언트 노드 IP에서 연결할 수 있도록 클라이언트 호스트와 SSH 세션을 시작하고 포트를 프록시/gitlab 서버로 전달하려고 시도했지만 최신 클라이언트를 사용했습니다. 이것은 작동하므로 방화벽이나 호스트 거부와 같은 문제는 아니라고 생각합니다. 클라이언트 노드에서 SSH 호스트 키를 업데이트했지만 이 역시 효과가 없었습니다.

연결할 때 tcpdump에서 SSH 프로토콜 협상이 시작되지 않는 것을 볼 수 있습니다. 이것이 클라이언트 버전과 관련이 있거나 구성 설정이 누락된 것일 수 있다고 생각하지만 무엇인지는 모르겠습니다.

[root@clienthost ~]#  ssh -i ~/.ssh/id_rsa [email protected] -p $CUSTOMPORT -vv
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /root/.ssh/config
debug1: Applying options for gitlab.test.fqdn
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to gitlab.test.fqdn [a.b.c.d] port $CUSTOMPORT.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug2: key_type_from_name: unknown key type 'Proc-Type:'
debug2: key_type_from_name: unknown key type 'DEK-Info:'
debug2: key_type_from_name: unknown key type '-----END'
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug2: key_type_from_name: unknown key type 'Proc-Type:'
debug2: key_type_from_name: unknown key type 'DEK-Info:'
debug2: key_type_from_name: unknown key type '-----END'
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1

내가 아는 한 이것은 대부분 이전 rsa 1 프로토콜과 관련이 있으며 rsa 2에는 중요하지 않습니다. id_rsa 파일의 권한은 0400 그런데 루트를 제외한 다른 사용자에게도 적용되지 않습니다.

SSH 클라이언트 구성:

Host gitlab.test.fqdn
  HostName gitlab.test.fqdn
  User git
  IdentityFile /root/.ssh/id_rsa
  Port $CUSTOMPORT

id_rsa 파일 속성의 주석 후 편집

또한 id_rsa를 ASCII 텍스트 파일로 보고하는 파일 명령 관련 문제가 해결되었습니다. 이제 pem rsa 개인 키 파일을 보고합니다.

내가 놓치고 있는 부분이나 내가 잘못하고 있는 부분에 대해 아는 사람이 있나요?

답변1

nc -v gitlab.test.fqdn $CUSTOMPORT또는를 실행하고 telnet gitlab.test.fqdn $CUSTOMPORT에이전트가 SSH와 직접 호환되는 방식으로 작동하는 경우 이제 SSH 서버 버전 문자열을 가져와야 합니다.

문자열은 다음과 같아야 합니다.

SSH-2.0-<something...>

HTTP 프로토콜을 예상하도록 프록시가 실수로 잘못 구성된 경우 연결은 성공하지만 초기 응답은 없습니다. HTTP에서는 클라이언트가 먼저 말해야 하지만 SSH 프로토콜에서는 서버가 먼저 말해야 합니다.

(HTTP 프록시를 지원하는 클라이언트할 수 있다그런 다음 HTTP CONNECT요청을 사용하여 지정된 대상에 대해 지정된 포트에 연결합니다. 그러나 이렇게 하면 클라이언트가 프록시 연결의 대상을 선택할 수 있지만 이는 분명히 원하는 것이 아닙니다. )

답변2

우리는 nginx에서 ssl_preread를 활성화했는데, 이는 분명히 서버 우선 프로토콜과 버전 발표를 차단합니다. 이 기능을 끄면 서버가 프로토콜과 버전을 먼저 보내고 모든 것이 예상대로 작동합니다.

telcoM의 답변이 많은 도움이 되었어요. 감사합니다! 하지만 해결책으로 특정 구성 변경 사항을 게시하고 싶습니다.

관련 정보