SSH 多会话 -> “stdin:不是 tty”

SSH 多会话 -> “stdin:不是 tty”

我有一个 Linux-VPS,使用它作为 GIT 和 HTTP 服务器。

HTTP:Apache

Git 服务器:通过 vhost 进行 git-http-backend

当我通过 SSH 登录时,一切都很好。
但是,如果我打开第二个 SSH 连接,就会出现此错误:

stdin:不是 tty

我使用 ssh 多年,从未见过这样的错误。我搜索了超过 1.5 小时...

当我写这篇文章时,错误变得更加奇怪——现在错误出现了每一个联系!

我还没有找到任何对我有帮助的解决方案。

我在用着:

  • 视窗
  • 安全外壳客户端(相当过时,但比 putty 好得多)

答案1

由于我不明白的原因(但稍后会看到),您的 shell 未设置为交互式;只需在远程服务器上发出

  bash -i 

这将使 shell 具有交互性,你就可以开始了。此时你可能必须获取 .bashrc 文件,因为标准文件通常提供以下几行,位于文件顶部:

 case $- in
          *i*) ;;
           *) return;;
 esac

这将检查 shell 标志 ($-) 中是否存在, 为了交互的;如果不存在,它会跳过获取文件。因此现在需要运行

 source ~/.bashrc

这将为你提供标准环境。我强烈反对你执行bash -i自动,例如在你的 .bashrc 文件中:执行一个将 shell 设置为交互的自动脚本是一个矛盾的说法,相当于用一把上了膛的枪指着你的太阳穴。

至于为什么会出现这个错误信息,我只能推测:

  1. 您的 ISP 允许为每个用户分配少量同时 PTY;例如,这是 GitHub 的政策(它允许零个 PTY),但无法真正看到允许少量但不为零的数量的优势。但是,也许有人比我更聪明,可以阐明这一点……

  2. 您正在尝试从内部进行 ssh反向shell,这是渗透测试人员都知道的一个问题。有很多方法可以解决这个问题。

  3. 它与您正在使用的安全外壳客户端的旧版本或 Windows 有关,但无论哪种情况,我都无法提供什么帮助。

相关内容