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




