
한 국가에서 다른 국가로 이동한 후 이제 여러 Digital Ocean Ubuntu 서버에 SSH를 통해 연결할 수 없습니다. 그러나 한 상자에서 다른 상자로 콘솔과 SSH를 통해 계속 로그인할 수 있습니다(모두 동일한 물리적 데이터 센터에 있음).
-vvvv를 사용하여 ssh를 실행하고 time 명령을 실행할 때 마지막 디버그 메시지는 다음과 같습니다.
debug2: channel 0: open confirm rwindow 0 rmax 32768
Write failed: Broken pipe
1분 37초 후에 시간이 초과됩니다.
SSH 키 인증이 성공한 시점의 디버그 로그는 다음과 같습니다.
debug1: Authentication succeeded (publickey).
Authenticated to 128.199.170.168 ([128.199.170.168]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug3: Ignored env TERM_PROGRAM
debug3: Ignored env SHELL
debug3: Ignored env TERM
debug3: Ignored env TMPDIR
debug3: Ignored env Apple_PubSub_Socket_Render
debug3: Ignored env TERM_PROGRAM_VERSION
debug3: Ignored env TERM_SESSION_ID
debug3: Ignored env USER
debug3: Ignored env SSH_AUTH_SOCK
debug3: Ignored env __CF_USER_TEXT_ENCODING
debug3: Ignored env PATH
debug3: Ignored env MARKPATH
debug3: Ignored env PWD
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug3: Ignored env XPC_FLAGS
debug3: Ignored env PS1
debug3: Ignored env XPC_SERVICE_NAME
debug3: Ignored env SHLVL
debug3: Ignored env HOME
debug3: Ignored env GREP_OPTIONS
debug3: Ignored env LOGNAME
debug3: Ignored env SCALA_HOME
debug3: Ignored env SECURITYSESSIONID
debug3: Ignored env _
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
Write failed: Broken pipe
연결이 특별히 느리지는 않습니다. 제 쉘은 bash입니다(콘솔과 기타 네트워크 SSH를 통해 계속 로그인할 수 있습니다). 공개 키 인증이 진행되는 것을 확인했기 때문에 SSH 연결을 차단하는 것은 아무것도 없는 것 같습니다.
어떤 파이프가 파손되어 기록되고 있는지 모르겠습니다. FWIW OSX에서 연결하고 있지만 미국으로 갈 때까지는 아무런 문제가 없었습니다.
auth.log
로그인을 시도할 때 표시되는 내용은 다음과 같습니다 .
May 17 12:28:01 db1 CRON[24931]: pam_unix(cron:session): session opened for user root by (uid=0)
May 17 12:28:01 db1 CRON[24931]: pam_unix(cron:session): session closed for user root
May 17 12:28:02 db1 sshd[24955]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
May 17 12:28:04 db1 sshd[24955]: Accepted publickey for tomo from 24.210.28.151 port 63202 ssh2: DSA 3a:[redacted]
May 17 12:28:04 db1 sshd[24955]: pam_unix(sshd:session): session opened for user tomo by (uid=0)
연결 시도 중 포트 22 트래픽의 Tcpdump 캡처:
$ sudo tcpdump -i en0 port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:00:40.917870 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [S], seq 3430788632, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 1286503697 ecr 0,sackOK,eol], length 0
19:00:41.211348 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [S.], seq 4135716624, ack 3430788633, win 28960, options [mss 1460,sackOK,TS val 898678531 ecr 1286503697,nop,wscale 8], length 0
19:00:41.211415 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 1, win 4117, options [nop,nop,TS val 1286503989 ecr 898678531], length 0
19:00:41.215051 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1:22, ack 1, win 4117, options [nop,nop,TS val 1286503992 ecr 898678531], length 21
19:00:41.484824 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [.], ack 22, win 114, options [nop,nop,TS val 898678606 ecr 1286503992], length 0
19:00:41.488532 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 1:42, ack 22, win 114, options [nop,nop,TS val 898678609 ecr 1286503992], length 41
19:00:41.488616 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 42, win 4116, options [nop,nop,TS val 1286504260 ecr 898678609], length 0
19:00:41.490182 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], seq 22:1470, ack 42, win 4116, options [nop,nop,TS val 1286504261 ecr 898678609], length 1448
19:00:41.490183 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1470:1614, ack 42, win 4116, options [nop,nop,TS val 1286504261 ecr 898678609], length 144
19:00:41.491254 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [.], seq 42:1490, ack 22, win 114, options [nop,nop,TS val 898678609 ecr 1286503992], length 1448
19:00:41.592287 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 1490, win 4096, options [nop,nop,TS val 1286504362 ecr 898678609], length 0
19:00:41.760341 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 1490:1674, ack 22, win 114, options [nop,nop,TS val 898678676 ecr 1286504260], length 184
19:00:41.760401 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 1674, win 4090, options [nop,nop,TS val 1286504527 ecr 898678676], length 0
19:00:41.762375 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [.], ack 1614, win 136, options [nop,nop,TS val 898678676 ecr 1286504261], length 0
19:00:41.762409 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1614:1638, ack 1674, win 4096, options [nop,nop,TS val 1286504529 ecr 898678676], length 24
19:00:42.027042 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 1674:1826, ack 1638, win 136, options [nop,nop,TS val 898678743 ecr 1286504529], length 152
19:00:42.027103 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 1826, win 4091, options [nop,nop,TS val 1286504789 ecr 898678743], length 0
19:00:42.028104 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1638:1782, ack 1826, win 4096, options [nop,nop,TS val 1286504790 ecr 898678743], length 144
19:00:42.300304 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 1826:2546, ack 1782, win 148, options [nop,nop,TS val 898678812 ecr 1286504790], length 720
19:00:42.300357 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 2546, win 4073, options [nop,nop,TS val 1286505053 ecr 898678812], length 0
19:00:42.302441 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1782:1798, ack 2546, win 4096, options [nop,nop,TS val 1286505055 ecr 898678812], length 16
19:00:42.600776 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [.], ack 1798, win 148, options [nop,nop,TS val 898678888 ecr 1286505055], length 0
19:00:42.600843 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1798:1850, ack 2546, win 4096, options [nop,nop,TS val 1286505349 ecr 898678888], length 52
19:00:42.857852 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [.], ack 1850, win 148, options [nop,nop,TS val 898678952 ecr 1286505349], length 0
19:00:42.858552 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 2546:2598, ack 1850, win 148, options [nop,nop,TS val 898678952 ecr 1286505349], length 52
19:00:42.858584 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 2598, win 4094, options [nop,nop,TS val 1286505604 ecr 898678952], length 0
19:00:42.859131 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1850:1918, ack 2598, win 4096, options [nop,nop,TS val 1286505605 ecr 898678952], length 68
19:00:43.124310 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 2598:2650, ack 1918, win 148, options [nop,nop,TS val 898679019 ecr 1286505605], length 52
19:00:43.124374 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 2650, win 4094, options [nop,nop,TS val 1286505867 ecr 898679019], length 0
19:00:43.124473 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 1918:2434, ack 2650, win 4096, options [nop,nop,TS val 1286505867 ecr 898679019], length 516
19:00:43.394690 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 2650:2702, ack 2434, win 159, options [nop,nop,TS val 898679086 ecr 1286505867], length 52
19:00:43.394774 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 2702, win 4094, options [nop,nop,TS val 1286506134 ecr 898679086], length 0
19:01:04.685580 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2434:2582, ack 2702, win 4096, options [nop,nop,TS val 1286527239 ecr 898679086], length 148
19:01:04.966270 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 2702:2738, ack 2582, win 170, options [nop,nop,TS val 898684479 ecr 1286527239], length 36
19:01:04.966378 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 2738, win 4094, options [nop,nop,TS val 1286527514 ecr 898684479], length 0
19:01:04.967018 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2582:2702, ack 2738, win 4096, options [nop,nop,TS val 1286527514 ecr 898684479], length 120
19:01:05.269214 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [.], ack 2702, win 170, options [nop,nop,TS val 898684555 ecr 1286527514], length 0
19:01:06.027067 IP [redacted_ip].ssh > 192.168.1.2.50409: Flags [P.], seq 2738:2790, ack 2702, win 170, options [nop,nop,TS val 898684744 ecr 1286527514], length 52
19:01:06.027144 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [.], ack 2790, win 4094, options [nop,nop,TS val 1286528563 ecr 898684744], length 0
19:01:06.027497 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286528563 ecr 898684744], length 460
19:01:06.603432 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286529135 ecr 898684744], length 460
19:01:07.552730 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286530077 ecr 898684744], length 460
19:01:09.250116 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286531762 ecr 898684744], length 460
19:01:12.442790 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286534930 ecr 898684744], length 460
19:01:18.634929 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286541067 ecr 898684744], length 460
19:01:24.068621 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286546451 ecr 898684744], length 460
19:01:34.714519 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286557019 ecr 898684744], length 460
19:01:45.384050 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286567587 ecr 898684744], length 460
19:01:56.051835 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286578155 ecr 898684744], length 460
19:02:06.715163 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286588723 ecr 898684744], length 460
19:02:17.355823 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286599291 ecr 898684744], length 460
19:02:28.042962 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [P.], seq 2702:3162, ack 2790, win 4096, options [nop,nop,TS val 1286609859 ecr 898684744], length 460
19:02:38.690971 IP 192.168.1.2.50409 > [redacted_ip].ssh: Flags [R.], seq 3162, ack 2790, win 4096, length 0
내가 시도한 다른 것들:
- 서버에서 mtu를 줄이면 pmtu에서 오류가 발생할 수 있습니다. sudo ip link set mtu 1280 dev eth0
- Wi-Fi 인터페이스를 위해 OS X에서 mtu를 1280으로 줄입니다.
- ServerAliveInterval을 30으로 더 낮추면 연결 시간이 초과되지만 파이프가 끊어지지 않습니다.
- "bash" 또는 bash 대신 "cat"을 사용하여 ssh를 실행하지만 프로필/rc가 로드되지 않은 상태
- dhcp 대신 OS X wifi 인터페이스 IP 주소를 수동으로 설정
답변1
패킷 추적에서 우리는 최대 크기의 패킷이 흐름 중 초기에 양방향으로 교환되는 것을 볼 수 있습니다. 아무런 문제가 발생하지 않았으므로 MTU 문제를 암시하는 것은 없습니다.
나중에 연결 중에 상대 시퀀스 번호 2702:3162를 사용하여 클라이언트에서 서버로 향하는 패킷이 서버로부터 ACK를 수신하지 못하는 것을 볼 수 있습니다.
내 즉각적인 생각은 이 패킷 손실이 결함이 있는 미들박스(예: NAT, 방화벽 또는 유사)로 인해 발생한다는 것입니다.
TCP 연결 중에 TOS 변경을 처리할 수 없는 NAT 상자에 대한 이야기를 들었습니다. 귀하의 경우 문제는 클라이언트가 TOS가 변경되었음을 표시한 후에 발생합니다. 그러나 tcpdump는 TOS를 표시하지 않기 때문에 그것이 문제가 발생하는 정확한 지점인지 확실하게 말할 수 없습니다.
테스트를 위해 -o ProxyCommand='nc %h %p'
SSH 클라이언트가 TCP 연결을 직접 제어하지 않도록 사용해 볼 수 있습니다. 옵션 을 시도해 볼 수도 있습니다 IPQoS
. TOS 변경이 문제인 경우 -o IPQoS=cs0
또는를 지정하면 -o IPQoS=0
작동하지만 다른 설정은 실패합니다. 이는 ssh가 인증 중에 QoS로 0을 사용하고 인증 후에 선택한 QoS로 전환하기 때문입니다. QoS를 0으로 선택하면 미들박스를 혼란스럽게 하는 QoS 값이 변경되지 않습니다.
답변2
1.4.0 0.8.0 v0050.0 Build 160518 Rel.50944n
다른 사람이 이 문제를 겪을 경우를 대비해 TP-Link Archer VR2600 라우터/모뎀(펌웨어 포함 ) 과 비슷한 문제가 있었습니다 .
@kasperd가 제안한 대로 로 실행하면 -o IPQoS=0
내 라우터에 일종의 QoS 문제가 있음을 알 수 있습니다. 라우터 설정에서 찾을 수 있는 가장 가까운 항목을 활성화했습니다(고급의→대역폭 제어이 경우 라우터가 관련 플래그에 주의를 기울일 수 있다는 가정하에 내 회선에서 사용 가능한 것 바로 아래에 최대 대역폭을 설정합니다.
이것이 작동하는 것 같았고 이제 내 연결이 통과되고 있습니다. 이 옵션을 전환하면 통과할 수 있는지 여부가 안정적으로 제어됩니다.
답변3
사용자 SSH 구성(~/.ssh/config)이 있습니까?
생성하지 않은 경우 다음 줄을 추가해 보세요.
ServerAliveInterval 120 #ping the server every 120s
TCPKeepAlive no #do not set SO_KEEPALIVE on socket
답변4
안타깝게도 위의 Sam Mason의 답변에 투표하거나 의견을 제시할 만큼 평판이 충분하지 않습니다. 하지만 그가 말한 내용을 공개적으로 +1하고 싶습니다. 저도 VR2600을 가지고 있고, 같은 경험을 했습니다.
- 연결(ssh, sftp 등)이 설정되었으나 중단된 것 같습니다.
- tshark는 TCP 가짜 재전송을 보여줍니다.
- 클라이언트 측에서 -o IPQoS=0(자체적으로) 설정은 아무 작업도 수행하지 않았습니다.
- 활성화라우터의 고급->대역폭 제어 설정(이전에는 비활성화됨)은 가능한 가장 높은 제한(= 사실상 무제한)으로 IPQoS 플래그에 주의를 기울이도록 라우터를 수정하는 것으로 보입니다.
- tshark는 더 이상 TCP 가짜 재전송을 표시하지 않으며 연결이 더 이상 중단되지 않습니다(ssh, sftp 등 클라이언트는 이제 VR2600 라우터 뒤의 서버와 작동함).
VR2600 라우터에 심각한 버그가 있음을 시사하는 것 같습니다. 불행하게도 (작성 시점 기준) 최신 펌웨어(1.4.0 0.8.0 v0050.0 Build 160518 Rel.50944n, Sam과 동일)를 사용하고 있으며 이 라우터는 DD-WRT와 호환/테스트되지 않은 것 같습니다. .
그러나 위에서 논의한 내용에 덧붙여 다음과 같이 말씀드리겠습니다.
- 1~5단계를 수행한 후 이제 "-o IPQoS=0"을 지정하지 않고도 성공적으로 연결할 수 있습니다.
다시 말해서:
라우터 옵션에서 고급->대역폭 제어 옵션을 켜는 것만으로도(상한이 최대로 높더라도) 이 라우터 NAT가 예상대로 작동하도록 하는 데 충분한 것 같습니다. 대역폭 제어가 비활성화되면 OP에 설명된 문제(@malasa가 자세히 설명함)가 발생합니다.
해결 방법이 단순히 이 옵션을 활성화하는 것인지, 아니면 -o 옵션과 함께 적어도 한 번 연결해야 하는지는 확실하지 않습니다. 어쨌든 이 옵션을 활성화한 후 다음을 확인할 수 있습니다.장애를 입히다Advanced->Bandwidth Control 옵션을 선택하면 ssh/sftp/etc가 이전처럼 손상됩니다. 만약 내가~할 수 있게 하다고급->대역폭 제어 옵션을 선택하면 모든 것이 다시 예상대로 작동하는 것으로 보입니다. 그리고 (이 옵션을 활성화하면) 라우터 재부팅 시에도 모든 것이 제대로 작동하는 것으로 보입니다.
따라서 내 관점에서 볼 때 클라이언트 측 변경이나 유지 관리가 필요하지 않은 매우 좋은 해결 방법/수정입니다(@leonardoborges 우려에 대한 답변)