原因分析:在香港VPS上运行SSR时,经常遇到因文件权限或用户权限不足导致的错误,比如启动时报Permission denied、无法写入日志或配置文件,或者监听低端口(<1024)被拒绝。
快速修复技巧:
1) 使用root或具有sudo权限的用户执行安装和启动命令:sudo / 切换到root执行。2) 检查并修改文件权限,常用命令:chown -R ssruser:ssruser /path/to/ssr、chmod -R 750 /path/to/ssr。3) 若绑定低端口(如80/443)导致权限问题,改用>1024端口或使用root启动;也可用端口转发(iptables或authbind)将低端口转发到高端口。4) 若使用systemd,确保服务单元文件中指定的User存在且具备相应权限,或把需要写入的目录设为该用户可写。
原因分析:SSR原版多基于Python(传统为Python2),如果系统没有正确安装Python环境或缺少依赖库,就会报类似ModuleNotFoundError或ImportError的错误。
快速修复技巧:
1) 确认使用的SSR版本需要的Python版本(很多老版需要Python2),在Debian/Ubuntu下可安装:sudo apt update && sudo apt install -y python2 python-pip;在CentOS下用yum安装相应包。现代fork可能支持Python3,则安装python3与pip3。2) 安装常见依赖:pip install -r requirements.txt(或pip3对应命令)。常见缺失包包括:pycrypto / pycryptodome、m2crypto、gevent、greenlet等。3) 遇到编译依赖(如m2crypto)报错,先安装系统开发包:Debian/Ubuntu:sudo apt install build-essential libssl-dev libffi-dev python-dev;CentOS:sudo yum groupinstall 'Development Tools' && sudo yum install openssl-devel libffi-devel python-devel。4) 若使用pycrypto安装失败,优先尝试pycryptodome替代,并在代码中兼容。
原因分析:这种情况多与端口被占用、防火墙未开放、VPS提供商或宿主机网络策略限制、或者服务监听地址配置错误有关。
快速修复技巧:
1) 确认SSR进程是否正常监听:sudo netstat -tulnp | grep 服务器端口或使用ss命令查看绑定地址,确保服务绑定到0.0.0.0或正确网卡。2) 检查是否端口被占用:若已有进程占用,停止占用进程或修改SSR端口。3) 检查VPS主机防火墙:Debian/Ubuntu(ufw):sudo ufw allow PORT/tcp && sudo ufw allow PORT/udp;iptables:确认有相应的INPUT规则并保存。4) 检查云服务控制面板/安全组(港VPS提供商):登录控制面板开放对应端口(TCP/UDP均视配置而定)。5) 测试从外网连接端口:本地用telnet或nc测试 telnet your.ip addr PORT,或用在线端口扫描工具。6) 若怀疑VPS提供商限速或屏蔽,尝试更换端口范围(如1024-65535)或联系商家确认。
原因分析:SSR的协议(protocol)和混淆(obfs)必须在服务端与客户端严格一致,否则会出现握手失败或认证错误。同时,某些混淆插件或参数不一致也会导致连接异常。
快速修复技巧:
1) 检查并逐字对齐服务端与客户端的protocol、protocol_param、obfs、obfs_param、加密方式(method)及密码。2) 对于使用obfs插件的情况,确保双方使用相同的插件版本或都使用内置混淆;若一方为simple-obfs或其它外部插件,服务器端也需安装相应插件并在启动参数中指明。3) 若出现不可解释的握手失败,可先简化配置:临时禁用协议混淆(改为plain/plain)测试连通性,确认基础连接正常后再逐项开启高级配置以定位问题。4) 注意一些客户端的默认设置会自动填充参数,手动检查配置文件或客户端GUI的每一项,避免“看似一致但字段名不同”问题。
原因分析:bind错误通常说明目标IP:端口已被占用或无权限绑定;systemd启动失败可能是单元文件配置错误、环境变量不正确或服务路径不一致导致。
快速修复技巧:
1) 使用sudo lsof -i:PORT或ss -ltnp | grep PORT查看占用进程,结束占用进程或修改SSR端口。2) 确认服务监听的IP:如果配置为绑定在特定IP(如127.0.0.1),但希望外部连接则应改为0.0.0.0。3) 若systemd启动失败,查看日志:sudo journalctl -u ssr.service -xe找出具体错误,检查ExecStart路径、WorkingDirectory和User设置是否正确。4) 若因SELinux导致绑定失败(常见于CentOS),临时可通过sudo setenforce 0测试,长期应通过semanage永久放行或写入正确的SELinux策略。5) 建议为SSR写一个标准的systemd服务文件,确保启动、重启策略和日志路径明确,例如指定完整的可执行路径及配置文件位置,避免相对路径带来的问题。