Tailscale: SSH는 수동으로 컴파일된 Openssh에서 작동하지만 시스템에 설치된 Openssh에서는 작동하지 않습니다.

Tailscale: SSH는 수동으로 컴파일된 Openssh에서 작동하지만 시스템에 설치된 Openssh에서는 작동하지 않습니다.

(이 질문에는 "Tailscale" 태그가 지정되어야 하지만 아직 존재하지 않습니다. Tailscale에 대한 지식이 필요합니다.)

SSH를 통해 원격 Raspberry Pi(포트 22)에 연결하는 표준 Ubuntu 20.04 노트북이 있습니다. 원격 위치에서는 라우터에 포트 전달(59995->22)이 있습니다.

~/.ssh/config참고: 테스트 중에 제거했습니다 .

SSH는 다음을 사용하여 항상 성공적으로 연결됩니다.

ssh user@public_ip -i ~/.ssh/id_rsa -p 59995

그러나 Tailscale IP를 사용하면 연결되지 않고 120초 동안 중단된 후 시간 초과됩니다.

ssh user@tailscale-ip -i ~/.ssh/id_rsa(작동하지 않음)

그러나 OpenSSH v8.2를 수동으로 컴파일하고 /usr/bin/ssh 바이너리 대신 해당 버전을 사용하면 완벽하게 작동합니다! /usr/bin/ssh도 v8.2이지만

./ssh user@tailscale-ip -i ~/.ssh/id_rsa(이것은 작동합니다!)

요약: 시스템 바이너리는 "일반" SSH에서는 잘 작동하지만 ssh-via-tailscale에서는 작동하지 않습니다. 그러나 Openssh의 수동으로 컴파일된(동일한) 버전은 일반 ssh 및 ssh-over-tailsale 모두에서 잘 작동합니다. 이 문제의 원인이 무엇인지 아는 사람이 있나요?

추가 참고 사항

나는 이것이 tailscale 네트워크에 어떤 명백한 문제도 없다고 생각합니다. 즉, tailscale IP를 통해 검색하면 nmap스캔 결과 올바른 포트가 열려 있는 것으로 표시되고 netcat에 직접 연결할 수 있으며 tailscale_ip:22수신 및 응답 중입니다.

diff ~/openssh-8.2p1/ssh /usr/bin/ssh바이너리가 다르다는 것을 보여줍니다. (크기 차이도 큽니다. 약 3MB 대 0.7MB)

/usr/bin/ssh -V: OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f 2020년 3월 31일

~/openssh-8.2p1/ssh -V: OpenSSH_8.2p1, OpenSSL 1.1.1f 2020년 3월 31일

로그 /usr/bin/ssh -vvv user@tailscale_ip -i ~/.ssh/id_rsa(IP 수정됨)

OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname 100.1.1.1 is address
debug2: ssh_connect_direct
debug1: Connecting to 100.1.1.1 [100.1.1.1] port 22.
< 2 minute hang here >
ssh: connect to host 100.1.1.1 port 22: Connection timed out

답변1

내 SSH 클라이언트가 Tailscale의 2FA 메시지를 표시하지 않았고 기본 ACL 정책 ssh/action"check".

사용자/태그에 대한 ACL 설정을 확인해 보시겠습니까? SSH의 작업 값은 무엇입니까? 로 설정된 경우 "check"-로 변경 "access"하고 SSH를 통해 호스트에 액세스해 보세요. 이것이 작동한다면 SSH 클라이언트에 2FA를 추가하여 "check"모드 에서 필요한 Tailscale의 인증 링크를 표시하는 방법을 조사할 것을 제안하겠습니다 .

유사한 문제를 조사하고 해결하는 데 도움이 된 일부 링크:

관련 정보