我在将SCP从运行Raspbian GNU / Linux 7(轻巧)的RaspberryPi到运行Ubuntu 16.04.4 LTS的DigitalOcean Droplet进行SCP转换时遇到麻烦。
这两台机器通过StrongSwan VPN连接。 ubuntu机器上运行着防火墙,但是我仔细检查了一下,没有什么应该对文件的传输有任何影响。我可以使用相同的凭据通过SCP和SFTP通过Internet远程传输文件。
scp
的详细输出如下:
debug1: Authentication succeeded (password).
Authenticated to 10.16.0.5 ([10.16.0.5]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending command: scp -v -t /var/sftp/snapshots/scp.png
Sending file modes: C0644 3057 snapshot.png
Sink: C0644 3057 snapshot.png
snapshot.png 100% 3057 3.0KB/s 00:00
您可以看到,文件传输率似乎为100%。该文件实际上是在远程计算机上创建的,但是文件大小为零。转移似乎从未完成。
这是我路由器上的防火墙问题。当路由器通过IPSEC VPN连接到我要复制到的服务器时,由于不正确的MTU大小而出现碎片问题(我认为)。
iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
我找到了解决方法here。