到同一系统的多个SSH连接-可以吗?


14

我有一台充当服务器的linux计算机,可以接受传入的SSH连接。

是否可以使用SSH同时将多个设备(例如我的手机和笔记本电脑以及其他台式机)可靠地连接到同一台服务器?

谢谢您的帮助。


63
你为什么不试着问呢?
德米特里·格里戈里耶夫

1
不仅如此,同一对系统之间还可以有多个链接。如果您想要命令行的“ Windows远程桌面”行为,也可能会发现有用screenmosh有用:在多个链接周围传递的单个界面。
pjc50

7
为什么我没有在问之前简单尝试有两个原因;首先是对我自己对linux的理解缺乏信心-如果它成功了,那么如果我依靠它,我仍然不会相信它的可靠性。第二个是Superuser社区,通常来说,它是很棒且快速帮助那些提出要求的人-谢谢社区。
Sam3000 '16

Answers:


50

简短的答案-是的。默认情况下,它通常可以工作。

答案很长-根据您使用它的目的,它可能因多个连接而变慢,但这是带宽问题,而不是ssh问题。


15

是的,这是可能的,这是默认行为。

信任

可以,如果你使用的是更新版本依靠ssh,协议是没有任何更多1。

grep "Protocol"  /etc/ssh/sshd_config

上面的命令应该给您Protocol 2

连接限制

您可以将ssh看作是的加密演变telnet,它诞生于'69年代末期,允许远程访问服务器。请注意,ssh通过TCP连接,它也能够转发X会话(图形会话)。多任务和多用户是Unix的内在本质...即使不是没有限制!

你可以看到其中的一些限制在TCP和SSH限制:

  • cat /proc/sys/net/core/somaxconn,通常为128,以查看您可以拥有的最大TCP 未完成连接;

    kern.ipc.somaxconn sysctl(8)变量限制了用于接受新的TCP连接的侦听队列的大小。默认值128通常太低,以致于无法在负载沉重的Web服务器上可靠地处理新连接。

  • cat /proc/sys/net/core/netdev_max_backlog通常为1000,即TCP数据包队列的最大长度
  • less /etc/security/limits.conf 您可以找到用户的限制。
  • MaxSessions/etc/ssh/sshd_config

    MaxSessions指定每个网络连接允许的最大打开会话数。默认值为10

  • #MaxStartups 10:30:60通常在中注释,/etc/ssh/sshd_config默认情况下设置为10

    指定到SSH守护程序的并发未认证连接的最大数量。默认值为10。


参考文献

  • man sshman sshd在您的计算机上。
  • sshdsshd_config的手册页。

2
somaxconn未完成连接的最大数量,即最大侦听积压,而不是 “您可以拥有的TCP连接的最大数量”。您可以拥有的最大TCP连接数大于128个数量级。否则,将无法使用实际的服务器。
user207421 '16

@ejp感谢您的关注,我很着急,在连接之前想念“新”。顺便说一句“杰出”更为精确。我增加了一些文字,希望它更加清晰。
Hastur

MaxSessions仅限制单个TCP连接上的多路复用会话数(更多详细信息),因此不限制您再次连接到同一主机。(总ssh会话的默认限制为10个是荒谬的。想象一个拥有数百或数千个用户帐户的共享Web主机,并且只允许10个ssh会话。)
Josef说,请恢复Moonica

@Josef写入MaxSessions指定每个网络连接允许的最大打开会话没有什么不同(如手册页中所述):可能不够清晰。感谢您提供其他参考,并强调了这一点。(注意:顺便说一句,带有ssh的Linux计算机的常见用法不是具有10 ^ 5 +用户帐户的共享Web主机,在这种情况下,根据定义,默认设置不合适:
Hastur

6

是的,完全是。但这应该是实现定义的。您也可以对不能处理多个连接的ssh服务器进行编程(可能不太安全,甚至更糟)。但是就像普通的HTTP服务器当然支持此功能一样,openssh也是如此。

实际上,这就是Unix的概念:多用户系统,其中服务器完成所有工作,只有小客户端连接(终端)。


4

是的,这很常见。确实,如果用作许多用户的文件服务器,那绝对是必不可少的。SFTP使用SSH,并且也有很多依赖于它的EDI活动。

在设备上可以通过自定义用户登录(例如关机或重新启动)来触发事件。

还考虑一下SCP(通常使用WinSCP来访问源代码),并且KDE用户仍然可以使用fish:在Konqueror中。

同样值得注意的是,如果在维护期间丢失,则使用其他端口(例如,Ubuntu do-release-upgrade)。

是的,我知道您从未打开过多个PuTTY终端机吗?


没奇怪,我没有!但是,感谢您提供额外的信息,您对其他维护端口的含义是什么?
Sam3000 '16

1
在从远程终端进行do-reasease升级期间,存在通信丢失的风险(例如,重新启动SSH或网络)。如果无法在端口22上重新建立这些端口,Ubuntu将使用第二个SSH实例提供备用端口1022。更新发生在“屏幕”内部,重新连接后可以使用screen -x / screen -r和sudo su进行访问。(查看“屏幕”和“ tmux”)。有关此的大量信息。
mckenzm '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.