有什么代码库可以通过跳板机登陆服务器呢?

有没有登陆跳板机的代码示例?

比如:

我现在有一个软件程序,我可以获取本机(当前PC)下的配置内容。

现在我有一个场景,就是我的PC和服务器之间有跳板机:
image.png

我想要通过跳板机登陆到服务器,然后再执行代码去查看本机(服务器)的配置内容。

请问是否有对应的nodejs代码(或者npm三方库)可以做到这样的操作呢?

阅读 2.4k
1 个回答

用Go的SSH库:

package main

import (
    "golang.org/x/crypto/ssh"
    "log"
    "net"
)

func main() {
    // 跳板机配置
    bastionConfig := &ssh.ClientConfig{
        User: "username",
        Auth: []ssh.AuthMethod{
            ssh.Password("password"),
        },
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    }

    // 通过跳板机连接到目标服务器
    bastionClient, err := ssh.Dial("tcp", "bastion_ip:22", bastionConfig)
    if err != nil {
        log.Fatalf("Failed to dial: %s", err)
    }

    // 目标服务器配置
    targetConfig := &ssh.ClientConfig{
        User: "username",
        Auth: []ssh.AuthMethod{
            ssh.Password("password"),
        },
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    }

    // 通过跳板机连接到目标服务器
    conn, err := bastionClient.Dial("tcp", "target_ip:22")
    if err != nil {
        log.Fatalf("Failed to dial: %s", err)
    }
    ncc, chans, reqs, err := ssh.NewClientConn(conn, "target_ip:22", targetConfig)
    if err != nil {
        log.Fatalf("Failed to create new client connection: %s", err)
    }
    targetClient := ssh.NewClient(ncc, chans, reqs)

    session, err := targetClient.NewSession()
    if err != nil {
        log.Fatalf("Failed to create session: %s", err)
    }
    defer session.Close()
    output, err := session.CombinedOutput("ls -l")
    if err != nil {
        log.Fatalf("Failed to run command: %s", err)
    }
    log.Println(string(output))
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏