我有一个 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 设置为交互的自动脚本是一个矛盾的说法,相当于用一把上了膛的枪指着你的太阳穴。
至于为什么会出现这个错误信息,我只能推测:
您的 ISP 允许为每个用户分配少量同时 PTY;例如,这是 GitHub 的政策(它允许零个 PTY),但无法真正看到允许少量但不为零的数量的优势。但是,也许有人比我更聪明,可以阐明这一点……
您正在尝试从内部进行 ssh反向shell,这是渗透测试人员都知道的一个问题。有很多方法可以解决这个问题。
它与您正在使用的安全外壳客户端的旧版本或 Windows 有关,但无论哪种情况,我都无法提供什么帮助。