什么定义了 SSH 远程命令的最大长度?

什么定义了 SSH 远程命令的最大长度?

这有点与什么定义了命令单个参数的最大大小?。但这与外壳本身有关。

我想知道什么定义了通过使用的命令的最大大小或字符串长度ssh。例子是$ ssh user@remote "echo very big command"

我发现一些脚本只是通过跟踪和错误来测试它。但我认为有更好的方法。但首先我想了解什么定义了字符串的最大长度。

以下是关于如何触发有关最大长度的错误的示例:

Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import Popen
>>> Popen(['ssh', 'user@localhost', 'echo', '{}'.format('T' * 500000)])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.9/subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.9/subprocess.py", line 1823, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 7] Argument list too long: 'ssh'

我的系统(ARM64hf 上的 Debian 11)上的限制从131067字符开始(不包括起始ssh,echo等)。而是getconf ARG_MAX高得多2097152

相关内容