OpenSSH SendEnv/AcceptEnv传递环境变量的数量限制问题咨询
OpenSSH SendEnv/AcceptEnv传递环境变量的数量限制问题咨询
大家好,我最近在使用OpenSSH的SendEnv和AcceptEnv功能传递环境变量时遇到了一个棘手的问题,想请教一下有没有朋友了解原因或者遇到过类似情况。
我已经在本地主机的~/.ssh/config里添加了:
SendEnv whatever_*
同时在远程主机的/etc/ssh/sshd_config里配置了:
AcceptEnv LANG LC_* whatever_*
原本希望能把本地的whatever_*系列环境变量传递到远程机器上使用,但实际测试发现,最多只能成功传递128个变量。
一开始我以为是某些变量的格式有问题(比如值里包含空格、特殊字符之类的),特意排查了这类异常变量,但结果发现并不是这个原因。
我写了下面的测试脚本,在多台Ubuntu远程机器(18.04和20.04版本)上运行,不管是本地18.04连远程18.04、18.04连20.04,还是20.04连18.04,结果都是只能传递128个变量。而且远程端的环境变量总大小每次都不一样(比如约5300、4700、4300字节),看起来也不是总大小限制导致的。
测试脚本:
for i in {0..150}; do export LC_custom_var_${i}=lc_custom_value_${i}; done var_num_host=$(printenv | grep LC_ | wc -l) env_size_host=$(printenv | wc --bytes) var_num_remote=$(ssh -vvv {user}@{remote_machine} printenv 2> debug.log | grep -c LC_) env_size_remote=$(ssh {user}@{remote_machine} printenv | wc --bytes) sent_vars=$(grep -c LC_custom_var debug.log) echo "Host var num: ${var_num_host}" echo "Env size host: ${env_size_host}" echo "Sent vars num: ${sent_vars}" echo "Remote var num: ${var_num_remote}" echo "Env size remote: ${env_size_remote}"
脚本输出:
Host var num: 151
Env size host: 7994
Sent vars num: 151
Remote var num: 128
Env size remote: 5281
从verbose日志里能看到OpenSSH确实发送了所有151个自定义变量,但远程端只收到了128个。我想知道,OpenSSH是不是有配置层面的最大环境变量数量限制?
备注:内容来源于stack exchange,提问作者Bogdan Prădatu
相关产品推荐
相关产品推荐

