ubuntu ssh 连接慢

本文介绍了当SSH连接速度缓慢时可能存在的问题及其解决方法,包括关闭DNS反向解析、禁用GSS认证等措施,并提供了详细的配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上谁便搜

http://www.2cto.com/os/201410/343244.html

http://blog.youkuaiyun.com/skyie53101517/article/details/45584959

首先安装SSH服务:

#sudo apt-get install openssh-server

重启SSH服务:

#sudo service ssh restart

现在连接linux服务器一般都是使用SSH远程连接的方式。最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢。经过网上资料查询,大致是有以下几种原因:
1、SERVER的SSHD会去DNS查找访问的CLIENT IP的HOSTNAME,如果DNS不可用或者没有相关记录,就会消耗一段时间。
2、在authentication gssapi-with-mic有时候也会消耗一段时间

一、测试查找具体原因:

1、使用ssh -v host进行debug

# ssh -v 192.168.100.10
然后就会输出一大堆debug,通过debug信息就可以看到连接到什么地方被耽搁了
比如会显示如下信息:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found

2、检测连接时间
# time ssh root@192.168.100.10 exit
二、解决方法(建议一个个设置,因为每个人连接慢的原因都不一样):

注意:修改之后记得重启sshd服务
# service sshd restart

1、关闭DNS反向解析(!!!!!一般就是这个问题!!!!!需要自己手动添加)
在linux中,默认就是开启了SSH的反向DNS解析,这个会消耗大量时间,因此需要关闭。
# vi /etc/ssh/sshd_config
UseDNS=no

在配置文件中,虽然UseDNS yes是被注释的,但默认开关就是yes

2、关闭SERVER上的GSS认证
在authentication gssapi-with-mic有很大的可能出现问题,因此关闭GSS认证可以提高ssh连接速度。

# vi /etc/ssh/sshd_config
GSSAPIAuthentication no

3、修改server上nsswitch.conf文件
# vi /etc/nsswitch.conf
找到
hosts: files dns
改为
hosts:files

hosts: files dns这一行含义是对于访问的主机进行域名解析的顺序,是先访问file,也就是/etc/hosts文件,如果hosts中没有记录域名,则访问dns,进行域名解析,如果dns也无法访问,就会等待访问超时后返回,因此等待时间比较长。
注意:如果SERVER需要通过域名访问其他服务器,则需要保留此行。

4、修改SERVER上resolv.conf文件

# vi /etc/resolv.conf

4.1、删除所有不使用的IP。
4.2、把nameserver全部删除,问题也能解决,但是服务器就无法上网了。
4.3、如果SERVER曾经配置过双网卡,则在该文件中会有一行目前不使用的IP地址,删除该行即可。
5、修改SERVER上hosts文件
在SERVER上/etc/hosts文件中把客户端的IP和HOSTNAME加入

6、打开SERVER上的IgnoreRhosts参数

IgnoreRhosts参数可以忽略以前登录过主机的记录,设置为yes后可以极大的提高连接速度

# vi /etc/ssh/sshd_config
IgnoreRhosts yes

--------------------以上的均在SERVER上设置,以下的均在CLIENT上设置-----------------------

7、修改客户端的hosts文件
将目标SERVER的IP和域名加上去,使得本机的DNS服务能解析目标地址。
# vi /etc/hosts
192.168.100.11 doiido.com

注:hosts文件格式为'目标SERVER_IP 目标SERVER_NAME'。但是使用这个方法有一个弊端,如果需要给每台SERVER都添加一个域名解析。

8、修改客户端配置文件ssh_conf(注意,不是sshd_conf)
# vi /etc/ssh/ssh_conf
找到
GSSAPIAuthentication yes
改为
GSSAPIAuthentication no
<think>我们正在解决用户的问题:如何使用MobaXterm通过SSH连接Ubuntu服务器。 根据引用内容,我们可以总结出以下步骤: 1. 确保Ubuntu服务器已安装并运行SSH服务(openssh-server)。 2. 在Ubuntu上检查SSH服务状态,确保其处于运行状态。 3. 获取Ubuntu服务器的IP地址。 4. 在MobaXterm中配置SSH会话,使用Ubuntu的用户名和IP地址进行连接。 同时,引用中提到了一些常见问题: - 连接超时断开(引用[1]):可能是由于时间不操作导致,可以通过配置SSH服务端或客户端来保持连接。 - 连接被拒绝(引用[2][3]):可能是因为没有安装SSH服务,需要安装openssh-server。 - 认证失败(引用[4]):可能需要检查SSH配置,允许密码认证或公钥认证。 因此,我们将分步骤详细说明如何操作,并针对常见问题给出解决方案。 注意:以下步骤基于Ubuntu系统(以22.04为例)和Windows下的MobaXterm。</think>### 如何使用 MobaXterm 通过 SSH 连接 Ubuntu 服务器 #### 一、Ubuntu 服务器端配置 1. **安装 SSH 服务** ```bash sudo apt update && sudo apt upgrade # 更新系统 sudo apt install openssh-server # 安装 SSH 服务 ``` 2. **启动并启用 SSH 服务** ```bash sudo systemctl start ssh # 启动服务 sudo systemctl enable ssh # 设置开机自启 sudo systemctl status ssh # 验证状态 (显示 active 表示成功)[^2][^3] ``` 3. **配置 SSH 安全设置** ```bash sudo nano /etc/ssh/sshd_config # 编辑配置文件 ``` 修改关键参数: ```ini PermitRootLogin no # 禁止 root 登录[^4] PasswordAuthentication yes # 允许密码登录[^4] ClientAliveInterval 60 # 每 60 秒发送心跳包 ClientAliveCountMax 3 # 超时 3 分钟后断开[^1] ``` 4. **重启服务并获取 IP** ```bash sudo systemctl restart ssh # 应用配置 ifconfig | grep inet # 获取服务器 IP 地址[^3] ``` #### 二、MobaXterm 客户端配置 1. **创建新会话** - 打开 MobaXterm → Session → SSH - 输入服务器 IP 地址(Ubuntu 的 ifconfig 结果) - 端口保持默认 22 - 输入 Ubuntu 用户名 2. **首次连接验证** ```markdown The authenticity of host 'xxx.xxx.xxx.xxx' can't be established. RSA key fingerprint is SHA256:xxxxxxxx. Are you sure you want to continue (yes/no)? **yes** ``` 3. **认证方式选择** - **密码登录**:输入 Ubuntu 用户密码 - **密钥登录**(推荐): ```bash # Ubuntu 生成密钥对: ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ``` 在 MobaXterm 设置 → SSH → Advanced 导入私钥文件 #### 三、连接故障排除 | 故障现象 | 解决方案 | 验证命令 | |---------|---------|---------| | **Connection refused** | 检查 SSH 服务状态<br>`sudo systemctl status ssh` | `telnet <IP> 22` | | **Access denied** | 1. 确认用户名/密码正确<br>2. 检查 `/etc/ssh/sshd_config` 的 `PasswordAuthentication`[^4] | `ssh -v user@IP` | | **Software caused connection abort**[^1] | 1. 增加心跳间隔<br>2. 关闭防火墙:`sudo ufw disable` | `ping <IP>` | | **超时自动断开** | 修改服务端配置:<br>`ClientAliveInterval 30`<br>`ClientAliveCountMax 86400` | `tail -f /var/log/auth.log` | #### 四、连接成功验证 1. **基础验证** ```bash # 在 MobaXterm 终端执行: uname -a # 显示 Linux 内核版本 lsb_release -a # 显示 Ubuntu 版本 ``` 2. **文件传输测试** - 使用左侧 SFTP 面板拖放文件 - 命令行传输: ```bash # 上传文件 scp localfile.txt user@IP:/remote/path/ # 下载文件 scp user@IP:/remote/file.txt ./ ``` > 连接示意图: > ``` > [Windows MobaXterm] > │ > ├── SSH (Port 22) ──▶ [Ubuntu Server] > │ > └── SFTP ───────────▶ /home/user/files > ``` #### 五、安全加固建议 1. **修改默认端口** ```bash sudo nano /etc/ssh/sshd_config # 修改: Port 2222 # 改为非标准端口 sudo ufw allow 2222 ``` 2. **禁用密码登录(密钥登录后)** ```ini PasswordAuthentication no ChallengeResponseAuthentication no ``` 3. **安装 fail2ban 防爆破** ```bash sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ``` --- ### 相关问题 1. 如何配置 SSH 免密登录 Ubuntu 服务器? 2. MobaXterm 保存的会话密码如何加密存储? 3. 如何通过跳板机连接内网 Ubuntu 服务器? 4. SSH 连接速度可能是什么原因导致的? 5. 如何在 Ubuntu 上限制 SSH 用户访问目录? [^1]: SSH 连接超时断开解决方案 [^2]: SSH 服务安装与状态检查 [^3]: 服务器 IP 获取与基础配置 [^4]: SSH 认证相关参数配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值