我正在尝试使用 scp 从网络中的另一台计算机复制一个小文件,该计算机运行的是 Linux Mint 18.3。
我从 macOS 尝试过,我得到了这个:
$ scp fyde@192.168.1.211:/home/fyde/Downloads/notes/ubuntu.txt .
fyde@192.168.1.211's password:
\033]4;0;#2b1229\033\\033]4;1;#FFD36D\033\\033]4;2;#6559B6\033\\033]4;3;#E1549E\033\\033]4;4;#788FA3\033\\033]4;5;#778BE1\033\\033]4;6;#D88AA7\033\\033]4;7;#d2d8d2\033\\033]4;8;#939793\033\\033]4;9;#FFD36D\033\\033]4;10;#6559B6\033\\033]4;11;#E1549E\033\\033]4;12;#788FA3\033\\033]4;13;#778BE1\033\\033]4;14;#D88AA7\033\\033]4;15;#d2d8d2\033\\033]10;#d2d8d2\033\\033]11;#2b1229\033\\033]12;#FFD36D\033\\033]13;#d2d8d2\033\\033[s\033[1000H\033[8m\033]708;#2b1229\033\\033[u\033]13;#d2d8d2\033\C0644 6743 ubuntu.txt
Run Code Online (Sandbox Code Playgroud)
我在 Ubuntu 机器上尝试过,但得到了类似的结果:
$ scp fyde@192.168.1.211:/home/fyde/Downloads/notes/ubuntu.txt .
fyde@192.168.1.211's password:
C0644 6743 ubuntu.txt
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的文件,得到了相同的结果,从其他计算机复制工作正常。
有谁知道发生了什么?
你搞砸了你的登录 shell 的启动脚本,这真是太棒了scp
。
scp
正在启动一个非交互式SSH 会话并在没有控制终端的情况下调用非交互式登录 shell 。但是您的 shell 的启动脚本没有正确检查这种情况,并且正在执行它们为使用控制终端调用的交互式shell所做的事情。事实上,这些shell轻率且错误地假设终端是特定类型的终端。
所有这些神秘的输出都是 shell 启动脚本中的命令的结果,这些命令输出各种 OSC 控制序列(␛[
并且␛/
是 OSC 和 ST 控制字符的 ECMA-48 7 位别名)和 CSI 控制序列(␛]
即 ECMA-48 7 CSI 控制字符的位别名)。这些序列试图更改颜色映射并影响终端回滚。它们仅适用于特定的终端模拟器。
但是您的 SSH 连接的本地端并不是将所有这些都反映到您的本地终端上的东西(鉴于您使用的是 MacOS,它不太可能是那个特定的终端模拟器,并且更可能是类似 iTerm2 的东西,无论如何)。它是本地scp
程序,它期望通过 SSH 连接讨论一个专门的协议,它实现了文件复制机制。即使在非交互模式下,您的 shell 的启动脚本也错误地吐出的所有垃圾都在扰乱其通信。
更正错误的 shell 启动脚本,以免在非交互式或没有控制终端的情况下调用它们时尝试执行终端操作。
归档时间: |
|
查看次数: |
1067 次 |
最近记录: |