温馨提示×

Ubuntu SSH远程登录失败怎么办

小樊
46
2025-11-06 13:08:41
栏目: 智能运维

1. 检查SSH服务状态

首先确认SSH服务是否正在运行,这是远程登录的基础。使用以下命令查看服务状态:

sudo systemctl status ssh

如果服务未启动(显示“inactive”),启动服务:

sudo systemctl start ssh

若需服务开机自启,执行:

sudo systemctl enable ssh

2. 验证SSH配置文件

SSH配置文件(/etc/ssh/sshd_config)的参数直接影响远程登录。用文本编辑器(如nano)打开文件:

sudo nano /etc/ssh/sshd_config

重点检查以下关键配置(确保未被注释且值正确):

  • Port 22:确认SSH监听端口(默认22,若修改需同步客户端命令);
  • PermitRootLogin yes:允许root用户远程登录(若需禁用,设为“no”但需确保其他用户有权限);
  • PasswordAuthentication yes:允许密码认证(若用密钥登录可设为“no”,但需提前配置密钥);
  • PubkeyAuthentication yes:允许公钥认证(密钥登录必需)。
    修改后保存文件,重启SSH服务使配置生效:
sudo systemctl restart ssh

3. 检查防火墙设置

Ubuntu默认使用ufw防火墙,可能阻止SSH连接。查看防火墙状态:

sudo ufw status

若状态为“active”,需允许SSH端口(默认22):

sudo ufw allow ssh  # 或 sudo ufw allow 22/tcp

若防火墙未启用,可选择性开启(增强安全性):

sudo ufw enable

4. 测试网络连通性

确保客户端与服务器之间的网络通畅。在客户端使用ping命令测试服务器IP:

ping <服务器IP地址>

若无法ping通,需检查网络线路、路由器设置或服务器IP是否正确。

5. 查看SSH日志定位问题

若以上步骤未解决,通过日志获取具体错误信息。Ubuntu的SSH日志路径为/var/log/auth.log,使用以下命令实时查看最新日志:

sudo tail -f /var/log/auth.log

常见错误示例及解决方向:

  • “Connection refused”:服务未启动或端口未开放;
  • “Permission denied”:密码错误、用户无权限或密钥认证失败;
  • “Invalid user”:用户不存在。

6. 检查用户权限与密钥认证

  • 用户存在性:确认登录用户已在服务器创建,使用以下命令查看用户信息:
    id <用户名>
    
  • 密钥认证问题:若用密钥登录,确保公钥已添加到服务器~/.ssh/authorized_keys文件(每行一个公钥),且文件权限正确:
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    
    私钥在客户端的权限也需设为600(如~/.ssh/id_rsa)。

7. 重新安装OpenSSH服务

若所有配置均正确但仍无法登录,可能是SSH服务损坏。卸载并重新安装:

sudo apt remove --purge openssh-server openssh-client
sudo apt autoremove
sudo apt autoclean
sudo apt update
sudo apt install openssh-server openssh-client
sudo systemctl start ssh

0