通过 ssh 登录服务器时无法创建新屏幕

通过 ssh 登录服务器时无法创建新屏幕

当物理连接到我的“服务器”(从 2006 年中期 iMac 的桌面输入命令)时,它给出以下输出:

mac~$ screen -ls
No Sockets found in /var/folders/ht/rhhsw0515vl_ym59683911400000gn/T/.screen.

bash$ screen -dmS foo
bash$ screen -ls
There is a screen on:
    4250.foo    (Detached)
1 Socket in /var/folders/ht/rhhsw0515vl_ym59683911400000gn/T/.screen.

bash$ 

这是我们所期望的行为。但是,当通过 RSA 认证的 ssh 执行相同的命令时,该screen -dmS foo命令似乎不起作用:

remote-bash$ screen -ls
No Sockets found in /var/folders/h4/_8scfsb54kd3mm7q6n9lq8nc0000gn/T/.screen.

remote-bash$ screen -dmS foo
remote-bash$ screen -ls
No Sockets found in /var/folders/h4/_8scfsb54kd3mm7q6n9lq8nc0000gn/T/.screen.

remote-bash$ 

尝试标准的、无选项的屏幕命令后,整个 shell 挂起并且无法使用 ^C 退出。

请注意,我可以查看、附加和终止在服务器上启动的屏幕,但我无法通过 ssh 启动它们。

有没有什么方法可以解释这种不一致的情况,或者这个问题是否只出现在我的计算机上?

答案1

我首先想到的是,通过 ssh 连接时启动的 shell 屏幕由于某种原因立即消失。尝试使用

screen -LdmS foo

然后查看文件 screenlog.0 的内容来找出答案。

OP评论后编辑:

似乎 screen 无法启动 shell。我猜你的 ssh 服务器没有正确设置 SHELL 环境变量,或者你的 shell 需要运行你的 ssh 服务器默认不提供的其他东西。请检查

echo $SHELL

然后尝试手动运行相同的shell(即执行您在输出中看到的命令)。

此外,终端中可能存在权限问题。在我的 OSX 10.9.5 下,刚才是 /dev/ttys000,对于你的情况,你可以使用 who 命令来找出你的权限。Screen 需要当前用户对该终端的写入权限。现在我在你的评论中看到,你的情况中的权限是:

crw--w---- 1 sandersfamily tty 16, 1 7 Mar 23:31 ttys001

您通过 ssh 登录的用户是“sandersfamily”吗?如果不是,那么这就是问题所在。

答案2

我找到问题了!

事实证明,出于某种原因,如果不启用 PAM,screen 就无法写入。我之前读到过,即使PasswordAuthenticaitonChallengeResponseAuthentication设置为no,PAM 仍然是一个漏洞,所以我在/etc/sshd_config文件中禁用了它。

只需将其更改为UsePAM no , 命令即可按预期工作。我不知道是否有办法在不启用 PAM 的情况下使用,但我不认为这对我的目的来说是一个特别严重的安全问题。UsePAM yes/etc/sshd_configscreen

相关内容