이상한 SSH/SCP 진행률 표시기 동작

이상한 SSH/SCP 진행률 표시기 동작

내 SSH가 매우 이상하게 작동하여 약간 불안해졌습니다. 기본적으로 일정은 완전히 가짜입니다. 너무 가짜여서 거의 쓸모가 없습니다. 혹시 다른 일이 벌어지고 있지는 않을까 걱정됩니다(자세한 내용은 아래 참조).

기본적으로 업로드 링크는 약 60KB/s에 불과하지만, 실행하는 모든 SCP는 2MB/s라고 말하기 시작합니다.

그런 다음 항상 숫자를 "수정"하여 천천히 실제 값으로 수렴하려고 시도합니다.

그런 다음 "큰" 파일(몇 MB 이상)의 경우 항상 몇 초 동안 100%에서 정지됩니다(결국 성공하고 프롬프트로 돌아갑니다).

출력은 다음과 같습니다.

...
test.tgz 16% 2112KB   2.1MB/s   00:04 ETA
test.tgz 17% 2208KB   1.7MB/s   00:06 ETA
test.tgz 18% 2320KB   1.2MB/s   00:08 ETA
test.tgz 19% 2448KB   1.1MB/s   00:08 ETA
test.tgz 20% 2576KB 942.2KB/s   00:10 ETA
test.tgz 21% 2704KB 697.3KB/s   00:14 ETA
test.tgz 22% 2832KB 576.3KB/s   00:16 ETA
test.tgz 23% 2960KB 478.3KB/s   00:20 ETA
test.tgz 24% 3088KB 399.0KB/s   00:23 ETA
test.tgz 25% 3216KB 334.7KB/s   00:27 ETA
test.tgz 26% 3344KB 282.6KB/s   00:32 ETA
test.tgz 27% 3472KB 240.4KB/s   00:37 ETA
test.tgz 28% 3600KB 185.6KB/s   00:48 ETA
test.tgz 29% 3728KB 161.9KB/s   00:54 ETA
test.tgz 30% 3856KB 142.7KB/s   01:01 ETA
...

(한 줄에 있습니다. scp -vvv문제를 더 잘 설명하기 위해 여기에 여러 줄을 붙여넣었습니다.)

마지막으로, 출력이 항상 100%에서 멈추면 실제로 많은 데이터가 손실됩니다. 반대편에서 이것을 확인했는데 파일이 아직 완전히 존재하지 않은 것 같습니다.

모든 백분율 측정은 기본적으로 의미가 없습니다. 12MB 파일의 80%가 존재한다고 하면 약 65%만 서버에 있습니다.

이것을 어떻게 설명할 수 있나요?

내 시스템 근처에서 중간자 공격이 발생하는 경우(아마도 손상된 라우터 등에서) 이 숫자가 어떻게 나타나는지 알고 싶어서 여기에 게시합니다.

나는 수년 동안 Linux와 SSH/SCP를 사용해 왔는데 숫자가 무엇인지 기억이 나지 않습니다.저것떠나다.

편집하다

다운로드는 예상대로 작동합니다. 원격 호스트에서 내 컴퓨터로 scp를 수행하면 %, ETA 및 KB/s가 모두 정확합니다.

답변1

이 동작은 출력 버퍼 크기와 TCP 창 설정으로 쉽게 설명할 수 있습니다.

우선, 언제인수하다데이터는 비트가 있거나 없거나 둘 중 하나입니다. 귀하의 지역에서는 scp예상되는 금액과 지금까지 받은 금액을 알고 있으므로 진행 상황과 남은 예상 시간에 대한 정확한 평가를 제공할 수 있습니다.

당신이 있을 때보내다데이터가 실제로 수신기에 도달하는 양에 대한 정보는 아직 없습니다. 로컬 머신에는 애플리케이션(scp)에 의해 "전송"된 후와 실제로 네트워크를 통해 전송되기 전에 데이터를 보유하는 출력 버퍼가 있습니다. 또한 TCP를 사용하면 발신자와 수신자 간에 일정량의 데이터를 "전송"할 수 있습니다.

데이터를 보낼 때 scp최종 전송을 위해 운영 체제에 얼마나 많은 데이터가 전달되었는지 확인하세요. 출력 버퍼는 매우 빠르게 채워지므로 scp초기에 높은 전송 속도가 측정되었습니다. 전송이 진행됨에 따라 이 값은 실제 전송 속도로 수렴됩니다. 운영 체제에 모든 데이터를 제공한 후에도 여전히 다른 쪽 끝에 도달해야 하기 때문에 마지막에 몇 초 동안 100%에서 "멈춘" 것처럼 보입니다.

최신 운영 체제와 TCP 네트워크는 TCP 창 크기를 늘렸습니다(참조:TCP 창 크기 조정 옵션) 높은 대역폭과 높은 대기 시간으로 "성장하는 네트워크"를 설명합니다. 그렇기 때문에 과거보다 이러한 행동을 더 자주 보게 될 수 있습니다.

답변2

최근 SSH를 통해 특정 속도 이상으로 데이터를 푸시하려고 할 때마다 WireShark에서 TCP ZeroWindow 오류를 표시하는 매우 유사한 문제가 발생했습니다. 결국 내 경로에서 IP 서비스 품질 처리가 엉망이 된 무언가를 추적했습니다. 이 구성을 sshd_config 및 ssh_config에 추가하면 문제가 해결되었습니다.

IPQoS=af21 cs1

이 설정은 현재 버전보다 최신 버전의 SSH에서 기본 설정이 됩니다.https://www.openssh.com/txt/release-7.8

관련 정보