在Linux中加速SSH连接的4种方法

远程SSH服务器管理面临的挑战之一是连接速度,特别是在远程机器和本地机器之间创建会话时

SSH是远程管理Linux服务器的最流行和最安全的方法。 远程服务器管理面临的挑战之一是连接速度,特别是在远程和本地机器之间创建会话时。

这个过程有几个瓶颈,一个是第一次连接远程服务器, 通常需要几秒钟才能建立会话。 但是,当您尝试连续启动多个连接时,会导致开销(结合超额或间接计算时间,内存,带宽或其他相关资源来执行操作)。

在这篇文章中,我们将分享四个关于如何在Linux中加速远程SSH连接的有用技巧。

1.强制通过IPV4进行SSH连接

OpenSSH支持IPv4 / IP6,但有时IPv6连接往往会变慢。 所以你可以考虑只使用下面的语法强制通过IPv4的ssh连接:

# ssh -4 [email protected]

或者,在您的ssh配置文件/ etc / ssh / ssh_config (全局配置)或〜/ .ssh / config (用户特定的文件)中使用AddressFamily (指定连接时使用的地址族)指令。

接受的值是“ any ”,“ inet ”仅用于IPv4,或“ inet6 ”。

$ vi ~.ssh/config 
在ipv6上禁用SSH连接

在ipv6上禁用SSH连接

以下是配置用户特定的ssh配置文件的一个有用的入门指南:

  1. 如何配置自定义SSH连接以简化远程访问

另外,在远程机器上,您还可以通过在/ etc / ssh / sshd_config文件中使用上述指令来指示sshd守护程序考虑通过IPv4进行的连接。

2.在远程计算机上禁用DNS查找

默认情况下,sshd守护程序查找远程主机名,并检查远程IP地址的解析主机名是否映射到完全相同的IP地址。 这可能导致连接建立或会话创建延迟。

UseDNS指令控制上述功能; 要禁用它,请在/ etc / ssh / sshd_config文件中搜索并取消注释。 如果没有设置,则添加值为no

UseDNS  no
禁用SSH DNS查找

禁用SSH DNS查找

3.重新使用SSH连接

ssh客户端程序用于建立与接受远程连接的sshd守护进程的连接。 您可以在创建新的ssh会话时重新使用已建立的连接,这可以显着加快后续会话的速度。

你可以在〜/ .ssh / config文件中启用它。

Host *
ControlMaster auto
ControlPath  ~/.ssh/sockets/%[email protected]%h-%p
ControlPersist 600

上述配置( Host * )将使您可以使用这些指令连接到所有远程服务器的连接重用:

  • ControlMaster - 通过单个网络连接启用多个会话的共享。
  • ControlPath - 定义用于连接共享的控制套接字的路径。
  • ControlPersist - 如果与ControlMaster一起使用,则告知ssh在初始客户端连接关闭后,保持主连接在后台打开(等待将来的客户端连接)。
重用SSH连接

重用SSH连接

您可以启用它以连接到特定的远程服务器,例如:

Host server1
HostName   www.example.com
IdentityFile  ~/.ssh/webserver.pem
User username_here
ControlMaster auto
ControlPath  ~/.ssh/sockets/%[email protected]%h-%p
ControlPersist  600

这样,您只能承受第一个连接的连接开销,所有后续的连接将会更快。

4.使用特定的SSH身份验证方法

加速ssh连接的另一种方法是对所有ssh连接使用给定的身份验证方法,在这里我们推荐使用ssh keygen以5个简单步骤配置ssh无密码登录

完成之后,使用上面的ssh_config文件(全局或用户特定)中的PreferredAuthentications指令。 这个指令定义了客户端应该尝试认证方法的顺序(你可以指定一个命令分隔列表来使用多个方法)。

PreferredAuthentications=publickey 
SSH认证方法

SSH认证方法

或者,从命令行使用以下语法。

# ssh -o "PreferredAuthentications=publickey" [email protected]

如果您更喜欢被认为不安全的密码认证,请使用它。

# ssh -o "PreferredAuthentications=password" [email protected]

最后,在完成上述所有更改后,您需要重新启动sshd守护进程。

# systemctl restart sshd	#Systemd
# service sshd restart 		#SysVInit

有关此处使用的指令的更多信息,请参见ssh_configsshd_config手册页。

# man ssh_config
# man sshd_config 

另外看看这些有用的指南来保护Linux系统上的ssh:

  1. 5个保护和保护SSH服务器的最佳实践
  2. 如何在Linux中断开非活动或闲置的SSH连接

目前为止就这样了! 你有什么提示/技巧加快SSH连接。 我们很乐意听到其他方式的这样做。 使用下面的评论表单与我们分享。