cygwin sshd无法为某些用户分配pty

我(终于)在Win7下得到了sshd的工作 – 好吧。

sshd以用户“cyg_server”运行。 我能够使用相同的用户名成功ssh到我的电脑。

但是,如果我尝试使用我的正常(Windows)用户名ssh,它尝试为我的login会话分配一个pty失败。 例如,'sshd -D -d -d -d'的输出包含这个

debug1: Entering interactive session for SSH2. debug2: fd 4 setting O_NONBLOCK debug2: fd 5 setting O_NONBLOCK debug1: server_init_dispatch_20 debug1: server_input_channel_open: ctype session rchan 0 win 1048576 max 16384 debug1: input_session_request debug1: channel 0: new [server-session] debug2: session_new: allocate (allocated 0 max 10) debug3: session_unused: session id 0 unused debug1: session_new: session 0 debug1: session_open: channel 0 debug1: session_open: session 0: link with channel 0 debug1: server_input_channel_open: confirm session debug1: server_input_global_request: rtype [email protected] want_reply 0 debug1: server_input_channel_req: channel 0 request pty-req reply 1 debug1: session_by_channel: session 0 channel 0 debug1: session_input_channel_req: session 0 req pty-req debug1: Allocating pty. debug1: session_pty_req: session 0 alloc /dev/pty1 !!! chown(/dev/pty1, 17308, 10513) failed: Invalid argument debug1: do_cleanup debug1: session_pty_cleanup: session 0 release /dev/pty1 

目前/ dev属于我的正常帐户。 我已经尝试将其所有权更改为cyg_server以及SYSTEM。 在这两种情况下,问题依然存在。 我也改变了/ dev的权限(例如,700和777) – 再次问题依然存在。

[作为一个侧面说明 – 奇怪的是,每当我做'ls -al / dev'ptys不显示。 但是,如果我知道存在一个pty的“ls -l / dev / ptyX”,就会显示出来。 这是cygwin的正常吗?]

删除所有/ etc / ssh *文件并重新运行ssh-host-config作为pipe理员打开的cygwin窗口中为我解决了这个问题,我假定通过更正权限。

在我能够得到这个工作之前,我必须做相当数量的检查和纠正:

  • /etc/ssh*密钥文件由拥有权限的服务器帐户拥有,可读写(例如,cyg_server)
  • /dev是我的(pipe理员)用户帐户的所有者,pipe理员,用户和sshd的用户是rwxable
  • 该服务已重新启动
  • 你已经设置了环境variablesCYGWIN=ntsec

在最初做一个“sysprep”克隆原始的Windows VM后,我遇到了一个奇怪的问题 –
“改变了机器的SID =>所有本地用户的SID,但是/ etc / password当然不变,导致pubkey授权失败,出现”sshd:fatal:chown(/ dev / pty1)失败:权限被拒绝“ Win'应用程序事件日志中的消息。

TL; DR运行Cygwin控制台提升(以pipe理员身份),net stop sshd,执行'mkpasswd -l',并从/ etc / passwd中取出所有本地帐户信息,然后删除/ etc / ssh *,ssh-host -config,networking启动sshd是我的修复。