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 22
或nc -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.log
或grep sshd /var/log/secure
(取决于您的系统类型)来检查相关日志。
临时关闭服务器端的密钥认证
通过noVNC控制台登录到您的服务器,临时修改/etc/ssh/sshd_config
文件,设置PasswordAuthentication yes
和PubkeyAuthentication no
。重启SSH服务后,尝试使用密码而非密钥连接。这可以帮助确定问题是否与密钥认证有关。
重启SSHD服务
sudo systemctl restart sshd
客户端排查
尝试使用命令行的SSH客户端
为了排除是SFTP客户端软件问题,您可以尝试直接从命令行使用SSH或SFTP命令来连接服务器。例如,使用 ssh -i /path/to/your/private/key root@45.72.88.50
或 sftp -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软件,问题解决。