- 已编辑
操作系统信息
例如:虚拟机,Centos7.5
问题是:
failed to get SSH session: ssh: setenv failed
原因:
我这次的原因时因为服务升级了两个包,将其升级到了openssl-3.3.1和openssh-9.9p2。
原因分析:
这是 OpenSSH 9.8+ 引入的新限制,即使 PermitUserEnvironment 开启,也默认 拒绝客户端设置某些环境变量(如 kubekey 使用的 KUBERNETES_SSH_CHECK)。
解决方法:
解决方案:允许 kubekey 设置的特定环境变量
你需要在 /etc/ssh/sshd_config
中添加一行:
AcceptEnv KUBERNETES_SSH_CHECK LANG LC_*
这将明确允许客户端设置 kubekey 所需的环境变量,而不是完全放开所有变量(更安全)。
完整修复步骤如下:
Step 1: 修改 sshd_config
编辑文件:
sudo vi /etc/ssh/sshd_config
在任意位置添加以下行(建议放在 PermitUserEnvironment yes 下方,注意 PermitUserEnvironment 要开启并设置为 yes):
AcceptEnv KUBERNETES_SSH_CHECK LANG LC_*
LANG 和 LC_* 是常见的国际化环境变量,通常也会被 kubekey 或其他工具使用。
Step 2: 重启 SSH 服务
sudo systemctl restart sshd
即可!
一键脚本(可复制运行)
# 添加 AcceptEnv 行
echo "AcceptEnv KUBERNETES_SSH_CHECK LANG LC_*" | sudo tee -a /etc/ssh/sshd_config
# 重启 sshd
sudo systemctl restart sshd
# 可选:查看当前 sshd 配置中相关字段
grep -E 'PermitUserEnvironment|AcceptEnv' /etc/ssh/sshd_config