通过SFTP部署Laravel项目至OVH服务器后,SSH连接执行命令即断开的问题求助
我之前在Windows环境用PowerShell连远程服务器时也碰到过类似的坑,结合你描述的场景——连接成功后输入命令就断开,还感觉像进了文本编辑器,大概率是这几个细节没处理好,咱们一步步来解决:
1. 强制指定远程Shell连接
最可能的原因是你的OVH服务器账号默认Shell被设置成了非交互式的程序(比如nano、vim这类编辑器),而非标准的bash/sh。这时候你可以在SSH连接时直接指定要使用的Shell,强制进入交互式环境:
在PowerShell里执行这个命令:
ssh xxxxx@ssh.cluster0xx.hosting.ovh.net -t /bin/bash
-t参数是强制分配伪终端,确保能进入交互式Shell环境。输入密钥密码后,再尝试执行pwd、ls,应该就不会断开了。
2. 修正PowerShell的编码/换行符问题
Windows和Linux的换行符、编码格式不一样,PowerShell默认的CRLF换行可能会导致服务器端解析命令时出错,直接断开连接。你可以先在PowerShell里设置编码为UTF-8,再连接:
$OutputEncoding = [System.Text.Encoding]::UTF8 ssh xxxxx
或者在SSH命令里加上编码相关的参数:
ssh -o SendEnv=LANG xxxxx
3. 检查本地SSH密钥的权限配置
虽然你已经成功通过密钥登录,但Windows下SSH密钥的权限设置不对也可能导致会话不稳定。找到你的C:\Users\xxx/.ssh/id_rsa_xxx文件,右键点击「属性」→「安全」,确保只有你当前用户拥有读写权限,其他用户(比如Everyone、管理员组)没有任何权限——SSH对密钥文件的权限要求很严格,权限过宽会触发隐性的会话异常。
4. 检查OVH服务器端的Shell配置
如果上面的方法都没用,你可以登录OVH的控制面板,找到对应服务器的SSH配置选项,查看你的账号默认Shell是不是被设置成了/bin/bash或者/bin/sh。有些共享主机可能会默认把Shell设成受限模式或者编辑器,改成标准Shell就能解决问题。
先从第一个方法开始试,这个解决这类问题的概率最高,要是还不行再依次排查后面的点。
内容的提问来源于stack exchange,提问作者John_Underscore

