forward-ssh

1.1.1 • Public • Published

SSH 隧道使用指南

此模块使用 ssh2 模块来创建 SSH 隧道,并通过反向端口转发来将本地服务映射到远程服务器。本指南将带您了解如何设置并使用此项目来实现远程服务的隧道连接。

1. 项目介绍

该模块使用 ssh2 模块的 Tunnel 类来创建 SSH 隧道,允许用户通过私钥文件连接到远程服务器,并设置反向端口转发。

主要功能:

  • 连接到远程服务器
  • 设置反向端口转发
  • 使用 SSH 隧道将本地端口映射到远程服务器

2. 前提条件

在使用此代码之前,请确保您具备以下条件:

  • Node.js 和 npm 已正确安装。
  • 您已经在本地生成了 SSH 密钥对。
  • 您可以通过 SSH 访问远程服务器。

3. 安装依赖

在项目目录中,运行以下命令以安装必要的依赖包:

npm install forward-ssh

功能

基于ssh2 的主机的反向代理和正向代理

实现方式

const { Tunnel } = require(".");
const os = require("os")
const path = require("path")
const fs = require("fs")

async function test(params) {
    // 远程服务器配置
    /**
     * @type {import("ssh2").ConnectConfig}
     */
    const remoteServer = {
        host: '127.0.0.1',
        port: 2233, // 默认SSH端口
        username: 'hwx',
        privateKey: fs.readFileSync(path.join(os.homedir(), "\\.ssh\\id_rsa")).toString() // 本地私钥文件路径
    };

    let t = await new Tunnel(remoteServer).onready();
    await t.connect({
        srcHost: "127.0.0.1", // 本地监听地址
        srcPort: 8888,  // 本地监听端口
        remoteHost: "127.0.0.1", //ssh 机器对应的服务的端口位置
        remotePort: 3009 //ssh 机器对应的服务的端口位置
    })
    // 本地地址 127.0.0.1:8888 将映射到远程服务器上的端口 3009。
    await t.forwardIn({
        remoteHost: "127.0.0.1",
         remotePort: 3000,
        srcHost: "127.0.0.1",
         srcPort: 8080
    })
    // 远程服务器地址 127.0.0.1:3000 将映射到本地的 127.0.0.1:8080

}

test()

配置 SSH 反向代理全局绑定

本指南将帮助您配置 SSH 服务,以便允许反向代理(Reverse SSH Port Forwarding)在远程服务器上监听所有地址(0.0.0.0),从而使外部设备能够通过指定端口访问您的服务。

1. 修改 sshd_config 配置

SSH 服务的配置文件通常位于 /etc/ssh/sshd_config,您需要编辑此文件以允许 SSH 反向代理绑定到所有 IP 地址。

步骤

  1. 使用管理员权限打开 sshd_config 文件:
    sudo nano /etc/ssh/sshd_config
  2. 允许反向代理绑定到 0.0.0.0,而不仅限于 127.0.0.1 GatewayPorts yes
  3. 重启ssh 服务以应用更改 sudo systemctl restart sshd

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.1
    6
    • latest

Version History

Package Sidebar

Install

npm i forward-ssh

Weekly Downloads

6

Version

1.1.1

License

ISC

Unpacked Size

22.2 kB

Total Files

13

Last publish

Collaborators

  • cx2017