Nodejs 开发者遇到:Putty 链接Aws VPS 报错 Network error:Connection timed out。

Nodejs 开发者遇到:Putty 链接Aws VPS 报错 Network error:Connection timed out。

新申请的AWS免费VPS主机参考官方帮助文档从运行 Windows 的计算机用Putty始终链接不上,出现异常: 1.jpg 请问是我那个地方没有设置,或者设置错了吗?

3 回复

Nodejs 开发者遇到:Putty 链接Aws VPS 报错 Network error:Connection timed out

问题描述

新申请的 AWS 免费 VPS 主机参考官方帮助文档从运行 Windows 的计算机使用 Putty 连接时,总是遇到连接超时错误。具体报错信息如下图所示:

1.jpg

可能的原因及解决方法

  1. 安全组配置

    • 确保你的 AWS 安全组允许 SSH 连接(默认端口为 22)。
    • 在 AWS 控制台中找到你的实例,进入“安全组”设置,确保有相应的入站规则允许 SSH 连接。
  2. IP 地址

    • 确认你输入的 IP 地址是否正确。
    • 检查是否有防火墙或网络策略阻止了连接。
  3. SSH 服务

    • 确认你的 VPS 上的 SSH 服务已经启动。
    • 使用以下命令检查 SSH 服务状态:
      sudo systemctl status sshd
      
    • 如果未启动,可以使用以下命令启动:
      sudo systemctl start sshd
      
  4. DNS 解析

    • 确保 DNS 解析正常工作。
    • 尝试使用 IP 地址直接连接。
  5. Putty 配置

    • 确认 Putty 的配置是否正确,特别是端口号是否为 22。
    • 尝试使用其他 SSH 客户端进行测试,如 MobaXterm 或 Termius。

示例代码

// Node.js 中使用 ssh2 模块进行远程连接示例
const { Client } = require('ssh2');

const conn = new Client();
conn.on('ready', () => {
    console.log('SSH connection established');
    // 执行远程命令
    conn.exec('ls -lh', (err, stream) => {
        if (err) throw err;
        stream.on('close', (code, signal) => {
            console.log(`Stream closed with code ${code} and signal ${signal}`);
            conn.end();
        }).on('data', (data) => {
            console.log(data.toString());
        }).stderr.on('data', (data) => {
            console.error(data.toString());
        });
    });
}).connect({
    host: 'your-vps-ip-address',
    port: 22,
    username: 'your-username',
    password: 'your-password'
});

总结

以上是一些常见的排查步骤和解决方法,如果仍然无法解决问题,请尝试联系 AWS 技术支持获取进一步的帮助。


我猜是 VPS 上的SSH服务没有开启? 试试官方文档里面的错误排查方法 http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html

对于这个问题,您遇到的错误 “Network error: Connection timed out” 通常意味着您的本地计算机无法与 AWS VPS 建立连接。这可能是由于多种原因造成的,比如安全组配置不正确、IP 地址问题、防火墙设置等。

解决方案:

  1. 检查安全组规则:确保您的安全组(Security Group)允许来自您当前 IP 地址的 SSH 连接(默认端口为22)。您可以在 AWS 控制台中查看和编辑这些规则。

  2. 检查防火墙设置:确认 VPS 的防火墙设置允许 SSH 连接。如果您使用的是 Linux 系统,可以尝试临时禁用防火墙来排除此问题。

  3. 确认 SSH 服务是否正常运行:可以通过 sudo systemctl status ssh (针对基于 Debian/Ubuntu 的系统) 或 sudo systemctl status sshd (针对基于 RedHat/CentOS 的系统) 来检查 SSH 服务状态。

  4. 确认公网 IP 地址:确保您使用的 IP 地址是您的 VPS 的公网 IP 地址,而不是私网 IP 地址。

示例代码:

虽然这里没有直接涉及 Node.js 的代码示例,但您可以使用 Node.js 脚本来自动检查 VPS 的连通性,例如:

const net = require('net');

const host = 'your_vps_public_ip'; // 替换为您的 VPS 公网 IP 地址
const port = 22;

const client = new net.Socket();

client.setTimeout(1000); // 设置超时时间为1秒

client.on('connect', () => {
    console.log('成功连接到 VPS');
    client.destroy(); // 断开连接
});

client.on('error', (err) => {
    if (err.code === 'ETIMEDOUT') {
        console.error('连接超时');
    } else {
        console.error(`发生错误: ${err.message}`);
    }
});

client.on('timeout', () => {
    console.error('连接超时');
    client.destroy();
});

client.connect(port, host);

请将上述代码中的 'your_vps_public_ip' 替换为您 VPS 的公网 IP 地址,并运行该脚本以检测 VPS 是否可访问。如果连接超时,这可能表明存在网络或配置问题。

回到顶部