首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >屏幕-D -R ..。如果必要的话,远程分离和注销--这里“远程登录”的目的是什么?

问屏幕-D -R ..。如果必要的话,远程分离和注销--这里“远程登录”的目的是什么?
EN

Unix & Linux用户
提问于 2019-10-25 06:31:43
回答 1查看 1.2K关注 0票数 0

在screen使用工作中,我当前传递给我的用例是ssh到服务器,su传递给技术用户帐户,然后是screen -RD。当ssh会话由于超时而自动丢失时,我重复这些步骤,并在服务器上为该技术帐户设置“终端状态”,看起来就像没有发生连接重置一样。

我想了解-RD标志的重要性,并在我阅读过的屏幕手册页上(由我强调):

-D -R现在在这里附加。详细地说,这意味着:如果会话正在运行,那么重新附加。如果需要,首先远程分离和logout 。如果它没有运行,创建它并通知用户。这是作者的最爱。

我尝试过logout remotely screen的网络搜索,相关的顶级结果只有https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/,在那里我读到了关于分离的文章:

当您想要从远程会话中注销时,断开一个屏幕,但是您希望使您在该机器上创建的会话保持活动状态,那么您需要做的就是将屏幕从终端中分离出来,这样它就没有控制终端了。完成此操作后,您可以安全地注销。

在SE上,我找到了如何远程将屏幕与另一个终端分离和https://askubuntu.com/questions/526972/remotely-log-out-of-graphical-gnome-session,但这些都是其他特定的问题。

我试着在登录、退出等方面阅读wiki,但还不清楚。我可以远程注销哪个会话?我在服务器上运行screen .也许这些标志在我的特定用例中是不相关的?-RD (远程注销)最常见的用例是什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-10-25 08:35:21

当您在服务器上运行screen时,实际上同时有两个终端会话:第一个是SSH使用的会话,另一个是由screen命令管理的“本地”会话。如果第一个会话因任何原因而终止而没有首先正确退出screen,那么这两个会话将自动彼此分离,并且当您建立一个新的SSH会话时,screen允许您重新连接到现有的第二个会话。

如果切断连接的超时就像防火墙由于不活动而切断现有连接一样,问题在于防火墙可能没有办法向连接的两端发出信号,直到有问题的端试图发送已被切断的连接。

因此,如果防火墙切断SSH连接,然后在SSH连接上输入一个字符,防火墙将向SSH客户端发送TCP重置,您将看到连接已被切断。但是,SSH服务器端并不一定知道这一点:如果服务器没有尝试向您发送任何内容,它可能仍然在等待您的任何输入,等待来自您的任何输入,在服务器所知道的-as连接上--它仍然是连接但空闲的。

在这种情况下,您将需要screen -DR中的D5选项来从旧的SSH会话中删除screen会话,即使screen认为它仍然是连接的。

作为一个副作用,它将导致服务器试图在初始的、关闭的SSH会话上发送输出(来自screen的“断开”消息和一个新的shell提示),防火墙将发送一个TCP重置返回,因此服务器端的sshd将最终获得旧的SSH连接在网络级别被中断的信息,并将其清除。

但是,如果导致SSH会话超时的事情发生在服务器上,导致您的第一个SSH会话终止,例如,服务器管理员将ClientAliveCountMax设置为sshd_config中的0,ClientAliveInterval设置为某个非零值,以便从sshd获得某种类型的无活动超时,那么旧的SSH会话将完全断开连接,screen会话将已经处于已分离的状态。在这种情况下,只要screen -R就足以重新连接到它.但是,另外,在这种情况下,指定-D选项不会有什么影响。

顺便说一句,以这种方式滥用ClientAliveInterval和ClientAliveCountMax设置是设置用户不活动超时的一种非常不可靠的方法,因为客户端可以绕过它而不知道他们在做什么。这是因为ClientAliveInterval是关于在SSH连接级别上监视活动,而不是实际的用户活动。

如果SSH客户端的用户遇到网络超时问题,他们可能会在他们的ServerAliveInterval中设置~/.ssh/config (或者在非OpenSSH客户机上设置等效设置)。如果客户端的ServerAliveInterval设置短于防火墙的连接无活动超时,则会导致SSH客户端自动发送加密的SSH“您还在吗?”数据包处于不活动状态,服务器上的sshd将对其进行回复,重新设置防火墙上的不活动计时器。

但是,使用更短的超时值设置客户端ServerAliveInterval也会导致服务器永远不会到达ClientAliveInterval超时,只要SSH连接实际工作,就会击败所谓的“用户不活动超时”。

不幸的是,一些安全强化标准似乎已经整合了这个ClientAliveInterval-based用户的非活动超时攻击,因此一些安全审计人员可能需要它,尽管它并不真正适合其假定的目的。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/548660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档