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

如何强制Windows终端下SSH连接时提示输入登录用户名

回答

Windows终端里调用的是原生OpenSSH客户端,本身没有提供能直接配置弹出login as:用户名提示的选项。你之前在.ssh/config里给Host *留空User字段的写法不生效,是因为OpenSSH解析配置时会直接跳过空值的配置项,最后还是会默认用当前Windows登录账号当连接用户名。

不用写复杂脚本的实现方法

根本不需要写复杂包装脚本,只要改下命令写法就能触发原生的用户名交互提示:

ssh @<servername>

只要@前面的用户名位置留空,OpenSSH就会主动弹出用户名输入提示,输完用户名就会进入后续的密钥/密码验证流程,和你用Putty、MobaXterm的交互逻辑完全一样。

要是觉得每次多打个@麻烦,加个极简的别名就行,比如在PowerShell的配置文件里加下面这段函数:

function ssh {
    param($Target)
    if ($Target -notmatch '@') {
        ssh.exe "@$Target"
    } else {
        ssh.exe $Target
    }
}

加完之后你直接敲ssh <servername>就会自动弹出用户名输入提示,要是需要直接指定用户名连接,正常敲ssh 用户名@servername也完全不受影响。

补充:OpenSSH的配置优先级是「命令行参数 > 用户目录下的ssh/config > 系统级ssh_config > 当前系统登录用户」,没有任何内置配置项可以全局设置“默认不读取系统用户名、强制交互式输入用户名”,上面说的空用户名传参是原生客户端下实现这个效果最简便的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:57:21