PuTTY 错误:连接到 Cygwin sshd 时不允许 /bin/bash 操作

PuTTY 错误:连接到 Cygwin sshd 时不允许 /bin/bash 操作

当我尝试使用 PuTTY 连接到 SSH 服务器时,出现错误:

/bin/bash: Operation not permitted

然后我收到一个消息框,提示:

Connection closed by remote host

今天意外地发生了这种情况,我不知道为什么,在此之前 SSH 连接工作正常。

在此处输入图片描述

是什么原因导致了这个错误?有什么方法可以修复它?

编辑:该服务器是 Windows 机器,而不是 Linux,并且运行 Cygwin 的 sshd。我还发现了这篇我认为可能相关的帖子 -https://cygwin.com/ml/cygwin/2016-03/msg00097.html

答案1

以下是 Константин Брызгалов 和 Mun-dee 之前发帖提到的更直接的方法。以管理员身份运行 cygwin 终端,然后:

# stop the running sshd:
net stop sshd
# give the ssh user required privileges:
editrights -a SeTcbPrivilege -u cyg_server
editrights -a SeAssignPrimaryTokenPrivilege -u cyg_server
editrights -a SeCreateTokenPrivilege -u cyg_server
# restart sshd:
net start sshd

答案2

我花了很多时间尝试解决同样的问题。偶然发现了一个解决方案:

https://cygwin.com/ml/cygwin/2015-08/msg00162.html

在 cygwin 服务器上:

  1. 转到“控制面板”>“管理工具”。
  2. 选择本地安全策略 > 本地策略 > 用户权限分配。
  3. 右键单击“替换进程级令牌”并选择“安全”或“属性”。
  4. 单击“添加”以添加正在运行 sshd 的帐户。(在我的情况下是 cyg_server)
  5. 更新
  6. 重启 sshd 服务

现在尝试通过 ssh 连接...我成功了

答案3

我遇到了这个问题并解决了。

最初我遵循了康斯坦丁·布列兹加洛夫并且能够使用密码登录,但无法使公钥认证正常工作。(我已手动创建了本地 cyg_server 管理员帐户。)

经过进一步调查,我读到了这一页它说要避免同时拥有域和本地帐户。我检查了一下,发现我确实同时拥有这两个帐户;显然我组织中的其他人正在运行 cygwin 服务器,并且已经在域上创建了 cyg_server,这与我的本地帐户混淆了。

我删除了本地 cyg_server 帐户,卸载了 sshd 服务,然后按照该页面的说明重新安装,一切都运行正常。诀窍是对使用现有的 cyg_server 帐户说“不”,并告诉 ssh-host-config 创建一个“cyg_server1”帐户。它创建了一个本地帐户并正确设置了所有内容。具体来说:

  1. cygrunsrv——停止 sshd
  2. cygrunsrv——删除 sshd
  3. 控制面板 > 用户帐户 > 管理用户帐户 > (删除本地 cyg_server 帐户)
  4. mkpasswd -l -d >/etc/passwd
  5. mkgroup -l -d >/etc/group
  6. ssh 主机配置
    • 覆盖 = 是
    • 严格 = 是
    • CYGWIN = ntsec
    • 运行用户 = cyg_server1
    • 密码 = {...}

检查用户帐户,您将看到 cyg_server1 确实是一个本地帐户,但有额外的设置。

答案4

感谢 Константин Брызгалов 为我指明了正确的方向,我也遇到了完全相同的问题。

您可以在这里找到更彻底的解决方案:https://cygwin.com/faq.html#faq.using.sshd-in-domain 实际上有 3 个策略设置需要配置 cyg_server:

  • 作为操作系统的一部分 (SeTcbPrivilege)
  • 创建令牌对象(SeCreateTokenPrivilege)
  • 替换进程级令牌(SeAssignPrimaryTokenPrivilege)

相关内容