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

如何阻止SSH登录同一用户时执行.bash_profile中的自启动程序

解决方案

你可以在.bash_profile中增加会话类型判断逻辑,仅当检测为本地tty1登录时才执行程序启动命令,具体修改如下:

方案1:通过SSH环境变量判断(通用性更强)

SSH登录时系统会自动设置SSH_TTY、SSH_CLIENT等专属环境变量,本地tty登录不存在此类变量,只需将启动逻辑包裹在判断规则内即可:

# 编辑.bash_profile
sudo nano /home/my_user/.bash_profile

将原有启动内容替换为以下配置:

# 仅非SSH登录时执行程序启动
if [ -z "$SSH_TTY" ]; then
    cd /home/my_user/my_program
    sudo ./program
fi

方案2:通过登录终端判断(精准匹配tty1自动登录场景)

如果仅希望tty1自动登录时启动程序,本地手动切换tty2/3等登录时也不启动,可以直接判断当前登录终端:

# 仅tty1登录时执行程序启动
if [ "$(tty)" = "/dev/tty1" ]; then
    cd /home/my_user/my_program
    sudo ./program
fi

补充说明:免密执行sudo配置(可选)

如果自动启动时出现sudo密码输入提示导致卡住,可以配置sudo免密规则:

  1. 执行sudo visudo打开sudoers配置文件
  2. 在文件末尾添加如下规则:
my_user ALL=(ALL) NOPASSWD: /home/my_user/my_program/program
  1. 保存退出即可生效,该用户执行指定program时无需输入sudo密码。

修改完成后重启验证即可:本地tty1自动登录会正常启动目标程序,同一用户SSH登录时不会触发启动逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:27:04