为啥连接 Cygwin 的 OpenSSH 服务器的用户名是 <hostname>+<username> 格式?

Posted

技术标签:

【中文标题】为啥连接 Cygwin 的 OpenSSH 服务器的用户名是 <hostname>+<username> 格式?【英文标题】:Why is username to connect Cygwin's OpenSSH Server is <hostname>+<username> format?为什么连接 Cygwin 的 OpenSSH 服务器的用户名是 <hostname>+<username> 格式? 【发布时间】:2020-04-28 10:17:36 【问题描述】:

目标

我的目标是使用 windows 帐户用户名打开 OpenSSH 连接。我有一台带有cygwin的Win10 PC。我有一台装有 Cygwin 的 OpenSSH 的 PC。

现状

目前,我可以通过以下命令从我的 mac 建立与 PC 的 OpenSSH 连接:

ssh mypc+user1@mypc

注意 mypc=pc 的计算机名,user1=window 的用户帐户名

但如果我执行以下操作,则无法建立连接。

ssh user1@mypc

因此,我看到此错误 Permission denied (publickey,keyboard-interactive)

我对 Windows 的原生 OpenSSH 有一些经验,但我可以简单地使用 user1@mypc 来建立连接。但是对于 cygwin,我必须使用“mypc+user1@mypc”才能使其工作至今。

问题

为什么在 Cygwin 中我必须使用这种主机名+用户名格式? 可以通过配置文件将其更改为更熟悉的仅用户名格式吗?

【问题讨论】:

【参考方案1】:

Cygwin 程序使用+ 而不是\ 字符将权限名称与帐户名称分开。 Cygwin的账号命名规则如下:

知名和内置帐户将在 Windows 中命名,没有权限名称。示例:AdministratorsSYSTEM

如果计算机不是域成员,则不使用权限名称。示例:Administrator(不是COMPUTERNAME+Administrator

如果计算机域成员,则使用计算机域中的帐户而无需授权名称。示例:kendyer(不是DOMAIN1+kendyer

来自其他域的帐户使用域名作为权限名称。示例:DOMAIN2+lynndyer

域成员计算机的本地计算机帐户使用计算机名称作为权限。示例:COMPUTERNAME+localuser

详情请见https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping。

【讨论】:

以上是关于为啥连接 Cygwin 的 OpenSSH 服务器的用户名是 <hostname>+<username> 格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Cygwin在Windows上运行OpenSSH SSHD服务器

cygwin openssh for windows

在 Windows 上使用 cygwin 由对等错误重置连接以通过 ssh 连接 minix

如何在Cygwin中安装并配置SSH

安装 openssh >=v8.2

sh Cygwin GPG代理转发脚本(与Gpg4Win 3一起使用,需要openssh和ssh-pageant)