You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SSH登录验证通过后会话立即关闭,无法通过数据提供商Web UI连接EC2实例

SSH登录验证通过后会话立即关闭,无法通过数据提供商Web UI连接EC2实例

看起来你遇到的问题是SSH认证成功后会话立刻终止,这种情况通常和SSH会话的shell配置或者用户环境有关,我帮你梳理几个常见的排查方向:

  • 检查用户的默认shell是否可用
    先通过Cyberduck或CLI登录到实例,运行以下命令查看目标用户的shell配置:

    cat /etc/passwd | grep user
    

    看输出的最后一列,比如如果是/sbin/nologin或者/bin/false,这类shell本身就是用来禁止交互式登录的,会导致认证后立刻退出。你可以用下面的命令修改为合法的交互式shell:

    usermod -s /bin/bash user
    

    另外还要确认这个shell在/etc/shells列表中,运行cat /etc/shells检查,如果不在的话,要么添加到列表,要么换一个列表里已有的shell。

  • 排查用户环境启动脚本的问题
    用户的~/.bashrc.bash_profile.profile等启动脚本如果存在错误命令,会导致登录shell启动失败并立刻退出。你可以临时重命名这些脚本测试:

    mv ~/.bashrc ~/.bashrc.bak
    mv ~/.bash_profile ~/.bash_profile.bak
    

    之后让数据提供商再次尝试连接,如果能成功保持会话,就说明是启动脚本的问题,再逐行排查脚本内容找出错误。

  • 开启SSHD详细日志定位问题
    修改/etc/ssh/sshd_config中的日志级别:

    LogLevel DEBUG3
    

    重启sshd服务:

    systemctl restart sshd
    

    然后触发数据提供商的登录请求,再查看日志:

    journalctl -u sshd.service
    

    详细日志会告诉你会话终止的具体原因,比如shell启动失败、环境变量错误等。

  • 检查SSH的强制命令配置
    查看/etc/ssh/sshd_config中是否有ForceCommand配置,这个选项会强制执行指定命令,命令执行完就会关闭会话。如果有针对该用户的配置,需要注释或修改。
    另外也检查用户的~/.ssh/authorized_keys文件,有没有在密钥行开头添加command="..."的限制,这种配置也会导致会话执行完命令就退出。

  • 排查PAM模块的限制
    从日志看PAM会话开启后立刻关闭,可能是PAM配置有异常。查看/etc/pam.d/sshd文件,有没有pam_access.so等模块的限制规则,你可以临时注释掉非必要的PAM规则,测试是否能正常连接,逐步定位问题。

你可以先从检查默认shell开始,这是这类问题最常见的原因,一步步排查应该能解决问题。

备注:内容来源于stack exchange,提问作者von_Olivenbaum

火山引擎 最新活动