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

Ubuntu 24.02服务器配置:无需指定用户名的SSH自动登录及分场景行为实现

Ubuntu 24.02服务器配置:无需指定用户名的SSH自动登录及分场景行为实现

我完全懂你的需求——现在要让用户只输入ssh mydomain.net就能自动用alpha用户免密登录并启动交互应用,同时指定其他用户名(比如ssh beta@mydomain.net)时还能正常登录对应用户,不会触发强制应用。下面给你两种可行的方案,你可以根据实际情况选择:

方案一:用SSH服务器匹配规则快速实现(适合大多数场景)

这个方案通过修改sshd_config的Match块,让除了指定用户之外的所有登录请求自动切换到alpha用户,操作简单,不需要额外脚本。

  1. 编辑SSH服务器配置文件
    打开终端,执行命令编辑配置:

    sudo nano /etc/ssh/sshd_config
    
  2. 添加匹配规则到文件末尾
    在文件最后添加以下内容(注意Match块必须放在所有普通配置之后):

    # 规则说明:匹配所有用户,除了root、beta(你可以根据需要添加更多排除用户)
    # 符合规则的请求会强制切换到alpha用户,并启动你的交互应用
    Match User *,!root,!beta
        User alpha
        ForceCommand /path/to/your/interactive/application
        # 禁用密码登录(因为你用的是免密公钥登录,可选但推荐)
        PasswordAuthentication no
    

    如果你希望哪怕客户端本地用户名是beta,输入ssh mydomain.net也强制转到alpha,那就把!beta从规则里删掉。

  3. 验证配置并重启SSH服务
    先检查配置是否有语法错误:

    sudo sshd -t
    

    如果没有报错,就重启SSH服务生效:

    sudo systemctl restart sshd
    

效果:

  • 用户输入ssh mydomain.net时,客户端会发送本地用户名,服务器匹配到该用户名不在排除列表里,就自动切换到alpha用户,免密登录后启动应用。
  • 用户输入ssh beta@mydomain.net时,服务器匹配到beta用户,会正常登录beta的账户,使用默认shell,不会启动应用。

方案二:用公钥映射实现精准控制(适合复杂场景)

如果你希望不管客户端发送什么用户名,只要公钥属于alpha就自动登录alpha(完全避免客户端本地用户名的干扰),可以用AuthorizedKeysCommand实现公钥到用户的映射。

  1. 创建公钥查找脚本
    先创建一个脚本文件,用来检查客户端公钥是否属于alpha用户:

    sudo nano /usr/local/bin/ssh_default_user
    

    写入以下内容:

    #!/bin/bash
    # 客户端公钥会作为参数$1传入
    ALPHA_AUTH_KEYS="/home/alpha/.ssh/authorized_keys"
    PUBKEY="$1"
    
    # 检查公钥是否在alpha的authorized_keys中
    if grep -Fxq "$PUBKEY" "$ALPHA_AUTH_KEYS"; then
        echo "$PUBKEY"
        exit 0
    fi
    
    # 不属于alpha的公钥,返回空让sshd继续尝试其他用户
    exit 1
    

    给脚本添加执行权限:

    sudo chmod +x /usr/local/bin/ssh_default_user
    
  2. 修改SSH服务器配置
    再次编辑sshd_config:

    sudo nano /etc/ssh/sshd_config
    

    在文件中添加以下内容:

    # 启用公钥查找脚本,让sshd先检查公钥是否属于alpha
    AuthorizedKeysCommand /usr/local/bin/ssh_default_user
    AuthorizedKeysCommandUser root
    
    # 给alpha用户设置强制启动应用的规则
    Match User alpha
        ForceCommand /path/to/your/interactive/application
        PasswordAuthentication no
    

    确保其他用户(比如beta)的authorized_keys配置正确,这样指定beta登录时就能正常验证。

  3. 验证配置并重启服务
    同样先检查语法:

    sudo sshd -t
    

    重启服务:

    sudo systemctl restart sshd
    

效果:

  • 不管用户输入ssh mydomain.net时客户端发送什么本地用户名,只要公钥在alpha的authorized_keys里,就会自动登录alpha并启动应用。
  • 用户输入ssh beta@mydomain.net时,如果公钥在beta的authorized_keys里,就会正常登录beta账户,不受强制应用的影响。

额外注意事项

  • 确保alpha用户的.ssh目录和authorized_keys文件权限正确:
    chmod 700 /home/alpha/.ssh
    chmod 600 /home/alpha/.ssh/authorized_keys
    
  • 测试时可以用ssh -v mydomain.net查看详细连接日志,排查可能的问题。

备注:内容来源于stack exchange,提问作者xnylbn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 07:32:59