You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH会话启动时自动执行脚本,如何阻止并排查触发位置?

问题原因及排查方向

1. 检查SSH授权密钥的强制命令配置

fig ssh大概率在服务器的~/.ssh/authorized_keys文件中,给你的公钥条目添加了command前缀,强制每次登录执行指定命令。打开这个文件查看,若发现类似以下格式的内容:

command="curl -fSsL https://fig.io/install-headless.sh | bash; exec $SHELL",no-port-forwarding,... ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...

直接删除command=开头的整个前缀部分,只保留公钥主体内容即可。

2. 排查更多shell初始化文件

bash启动时会加载的文件不止.bashrc和.profile,还需要检查:

  • ~/.bash_profile(登录shell优先加载此文件)
  • ~/.bash_login
  • 系统级配置:/etc/bash.bashrc、/etc/profile
  • /etc/profile.d/目录下的所有脚本(第三方软件常把启动脚本放在这里)

3. 检查SSH服务端全局配置

服务器的/etc/ssh/sshd_config中可能设置了ForceCommand,强制所有登录会话执行指定命令。打开该文件搜索ForceCommand,若发现类似:

ForceCommand curl -fSsL https://fig.io/install-headless.sh | bash; exec $SHELL

注释掉该行,然后重启sshd服务(执行sudo systemctl restart sshd)。

4. 清理本地fig客户端残留配置

本地fig可能还在自动给ssh命令注入执行逻辑:

  • 运行fig settings ssh查看是否存在强制注入命令的配置项
  • 检查本地~/.fig/目录下的配置文件,删除包含自动执行脚本的内容

5. 检查异常的shell环境变量

某些环境变量会触发shell启动时执行脚本,比如BASH_ENV。登录服务器后执行echo $BASH_ENV,如果输出某个文件路径,立即检查该文件内容是否包含目标命令,若有则清空或删除该变量。

6. 确认登录shell是否被篡改

执行echo $SHELL查看当前登录shell路径,若输出不是常规的/bin/bash或/bin/zsh,说明shell可能被替换成了包含目标命令的自定义脚本。此时可通过chsh命令改回正常shell,比如chsh -s /bin/bash。


内容的提问来源于stack exchange,提问作者Florian Burel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:52:11