导航

SSH 和 SFTP 连接问题检查

Posted on 2023-11-27 14:32  蝈蝈俊  阅读(732)  评论(0编辑  收藏  举报

SSH(Secure Shell)和SFTP(SSH File Transfer Protocol)是两种常用的网络协议,它们都用于安全地传输数据。

SSH(Secure Shell):

目的:SSH主要用于安全地访问和管理远程服务器。它允许用户通过不安全的网络安全地连接到另一台计算机。
工作方式:SSH通过加密所有传输的数据来提供安全的网络通信。这意味着即使数据被拦截,攻击者也无法理解其内容。
应用:SSH常用于远程登录、命令执行、系统管理等。例如,系统管理员可能会使用SSH来远程登录服务器,以安装更新或修改配置。

SFTP(SSH File Transfer Protocol):

目的:SFTP是一种文件传输协议,用于在客户端和服务器之间安全地传输文件。
工作方式:它是在SSH协议的基础上构建的,因此所有传输都是加密的。与传统的FTP(文件传输协议)相比,SFTP提供了更高的安全性。
应用:SFTP常用于安全地上传和下载文件。它广泛应用于需要安全数据传输的场景,如在客户端和服务器之间传输敏感文件。

总的来说,SSH和SFTP都是为了确保在不安全的网络环境中进行安全通信和数据传输。SSH提供了一种安全的远程访问服务器的方式,而SFTP则提供了一种安全的文件传输方式。

当收到 kex_exchange_identification: Connection closed by remote host 错误时,常用的分析方法如下:

网络问题检查

确认端口22开放

确认您的服务器防火墙允许端口22的入站连接。您可以使用 sudo ufw status 来查看Ubuntu的UFW防火墙状态。

ufw status
Status: active

To       	Action		From
--			-----		----
22/tcp		ALLOW		Anywhere
22/tcp (v6)	ALLOW		Anywhere (v6)

测试网络连接

从您的本地机器上,您可以尝试使用telnet或nc(netcat)命令来测试端口22是否开放。例如,运行telnet 45.72.88.50 22nc -v 45.72.88.50 22看看是否能成功连接。

下面是一个成功的示例:

nc -v 45.72.88.50 22
Connection to 45.72.88.50 port 22 [tcp/ssh] succeeded!

暂时关闭防火墙

作为排错的一部分,您可以暂时关闭服务器上的防火墙来测试。使用ufw disable来关闭UFW防火墙,然后尝试再次通过SFTP连接。如果这样可以连接,那可能是防火墙规则配置的问题。记得测试完后重新启用防火墙。

SSH 服务问题检查

查看SSH服务的日志文件

查看SSH服务的日志文件,这可以帮助您了解为什么连接被拒绝。
sudo journalctl -u sshd

有时候 journalctl -u sshd 没有显示任何条目,但您可以尝试查看更详细的日志,以获取关于为何SSH连接失败的更多信息。运行grep sshd /var/log/auth.loggrep sshd /var/log/secure(取决于您的系统类型)来检查相关日志。

临时关闭服务器端的密钥认证

通过noVNC控制台登录到您的服务器,临时修改/etc/ssh/sshd_config文件,设置PasswordAuthentication yesPubkeyAuthentication no。重启SSH服务后,尝试使用密码而非密钥连接。这可以帮助确定问题是否与密钥认证有关。

重启SSHD服务

sudo systemctl restart sshd

客户端排查

尝试使用命令行的SSH客户端

为了排除是SFTP客户端软件问题,您可以尝试直接从命令行使用SSH或SFTP命令来连接服务器。例如,使用 ssh -i /path/to/your/private/key root@45.72.88.50sftp -i /path/to/your/private/key root@45.72.88.50

查看更详细的客户端日志:

如果使用命令行SSH客户端,您可以增加 -v 参数(例如 ssh -v -i /path/to/your/private/key root@45.72.88.50)来获取更详细的调试信息。

详细调试模式

尝试使用更详细的调试模式来运行SSH命令。这可以通过添加额外的-v参数来实现(例如ssh -vvv -i /Users/ghj1976/ghj1976_ed25519 root@45.72.88.50)。这将提供更多关于连接过程中发生了什么的信息。

SSH密钥权限

请确保您的本地机器上的SSH私钥文件权限设置正确。对于私钥文件,通常需要的权限是600(即仅文件所有者可读写)。可以使用命令 chmod 600 /path/to/your/private/key 来设置权限。

FQ软件问题

我最终上面全都试过,还是有问题,发现是ssh走了FQ软件代理,禁用FQ软件,问题解决。