SSH 建立连接很慢

joe*_*oel 28 ssh performance connection

我刚刚安装了 Ubuntu 11.10,每当我尝试通过 SSH 连接到我的服务器时,它都很慢。在显示密码提示之前,可能需要 40 秒到 60 秒。

我用:

ssh myuser@myserver.com
Run Code Online (Sandbox Code Playgroud)

一旦我登录,一切都很好,而且运行速度很快。

为什么需要这么长时间,我该如何解决?我可以使用 SSH 命令中的任何选项吗?

Boo*_*eus 45

这很慢,因为 OpenSSH 守护进程使用 DNS 在客户端主机名上运行反向查找以确保它是有效的

sudo vi /etc/ssh/ssh_config
Run Code Online (Sandbox Code Playgroud)

注释掉以下几行

#GSSAPIAuthentication yes
#GSSAPIDelegateCredentials no
Run Code Online (Sandbox Code Playgroud)

或者

添加这个:

UseDNS no
Run Code Online (Sandbox Code Playgroud)

  • 服务器端有一个 sshd_config 文件,客户端有一个 ssh_config 文件。在 ssh_config 文件中在客户端和服务器上设置这些选项对我没有帮助。只有在我设置了 `GSSAPIAuthentication no` 和 `GSSAPIDelegateCredentials yes` 并在服务器的 sshd_config 文件中添加了 `UseDNS no` 后,它才为我加快了连接速度。 (6认同)
  • 尝试在 `/etc/sshd_config` 或 `/etc/ssh/sshd_config` 中将 `UseDNS` 设置为 `no`。不是`/etc/ssh_config`! (2认同)

Huy*_*ens 13

这只是宙斯之书答案的补充。如果您没有 root 访问权限 (sudo),您仍然可以对其进行配置。

您需要编辑您的“用户 ssh_config”文件,它是:

vi $HOME/.ssh/config
Run Code Online (Sandbox Code Playgroud)

(注意:如果 $HOME/.ssh 目录不存在,则必须创建该目录)

并添加:

Host *
  GSSAPIAuthentication no
  GSSAPIDelegateCredentials yes
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以在每个主机的基础上执行此操作:) 示例:

Host linux-srv
  HostName 192.158.1.1
  GSSAPIAuthentication no
  GSSAPIDelegateCredentials yes
Run Code Online (Sandbox Code Playgroud)

确保 IP 地址与您的服务器 IP 匹配。一个很酷的优势是现在 ssh 将为该服务器提供自动完成功能。所以你可以输入ssh lin+ Tab,它应该自动完成到ssh linux-srv.

你可以添加一堆有用的选项,这样你就不必每次都输入它们:

User <a user>
Port <a port number>
IdentityFile <a specific private key>
Compression yes
....
Run Code Online (Sandbox Code Playgroud)

所以,而不是输入ssh -C -p 1022 -i ~/.hidden/prv-key-4096bit superuser@192.158.1.1一个简单的ssh linux-srv就足够了!