当前位置: 首页 > 面试题库 >

Go x / crypto / ssh —如何通过堡垒节点建立与私有实例的ssh连接

司马作人
2023-03-14
问题内容

我想实现此方案:在AWS上,我有一个VPC,在其中部署了公共和私有子网。在公共子网中,我有一个“堡垒”实例,而在私有子网中,有一个节点在运行某些服务(又称为“服务实例”)。通过使用*
nux ssh命令,我可以执行以下操作从本地笔记本电脑连接到“服务实例”:

ssh -t -o ProxyCommand="ssh -i <key> ubuntu@<bastion-ip> nc %h %p" -i <key> ubuntu@<service-instance-ip>

我有一个Go程序,想做以下事情:

  1. ssh通过“堡垒”从“本地便携式计算机”连接到“服务实例”
  2. 使用连接会话来运行一些命令(例如“ ls -l”)
  3. 将文件从“本地笔记本电脑”上传到“服务实例

我已经尝试过,但无法执行与执行相同的过程

ssh -t -o ProxyCommand="ssh -i <key> ubuntu@<bastion-ip> nc %h %p" -i <key> ubuntu@<service-instance-ip>

有人可以帮我举个例子吗?谢谢!

顺便说一句,我发现了这一点:https :
//github.com/golang/go/issues/6223,这意味着它绝对能够做到这一点,对吗?


问题答案:

无需使用nc命令“ x / crypto /
ssh”,甚至可以更直接地执行此操作,因为有一种方法可以从远程主机拨打连接并将其显示为net.Conn

一旦有了ssh.Client,您就可以使用该Dial方法net.Conn在您和最终主机之间获取虚拟主机。然后,您可以使用将其转换为新ssh.Connssh.NewClientConn,并使用创建新ssh.Clientssh.NewClient

// connect to the bastion host
bClient, err := ssh.Dial("tcp", bastionAddr, config)
if err != nil {
    log.Fatal(err)
}

// Dial a connection to the service host, from the bastion
conn, err := bClient.Dial("tcp", serviceAddr)
if err != nil {
    log.Fatal(err)
}

ncc, chans, reqs, err := ssh.NewClientConn(conn, serviceAddr, config)
if err != nil {
    log.Fatal(err)
}

sClient := ssh.NewClient(ncc, chans, reqs)
// sClient is an ssh client connected to the service host, through the bastion host.


 类似资料:
  • 问题内容: 谁能推荐一些在python中建立ssh连接的东西?我需要它与任何操作系统兼容。 我已经尝试使用pyssh来获取SIGCHLD的错误,我读过这是因为Windows缺少此错误。我尝试过使paramiko正常工作,但是在paramiko和Crypto之间存在错误,以至于每个版本的最新版本都无法协同工作。 Windows计算机上当前使用Python 2.6.1。 问题答案: 请注意,这在Win

  • 问题内容: 我想创建以下基础结构流: 使用Docker如何实现? 问题答案: 首先,您需要在要ssh- in的映像中安装SSH服务器。您可以对安装了ssh服务器的所有容器使用基础映像。然后,您只需要运行每个容器,即可将ssh端口(默认为22)映射到主机端口(镜像中的远程服务器)到一个端口。即: 然后,如果可以从外部访问主机的端口52022和53022,则可以使用主机的ip(远程服务器)通过ssh在

  • 问题内容: 我正在使用Paramiko通过ssh连接到服务器。 基本身份验证效果很好,但我不明白如何使用公钥进行连接。 当我连接腻子时,服务器告诉我这一点: 我用这个ppk文件连接到它: 使用基本身份验证,我从日志中得到的错误是: 我尝试包含该ppk文件并将其设置为auth_public_key,但是没有用。 你能帮助我吗? 问题答案: 好的@Adam和@Kimvais是正确的,paramiko无

  • 本文向大家介绍Python实现建立SSH连接的方法,包括了Python实现建立SSH连接的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现建立SSH连接的方法。分享给大家供大家参考。具体实现方法如下: 我需要实现一个Windows下远程连接到SSH服务器执行命令的功能,所以就在网上找资料。我的环境是:Windows7 64位,Python 2.7 32位。按照网上的说法

  • 我在某个主机上运行PostgreSQL服务器。此服务器不对外开放(只允许来自的连接)。我可以通过ssh(使用公钥)以身份登录该主机: 然后我可以对特定用户运行查询。 我需要在这里输入用户的sudo密码。我无法以用户身份连接,也不知道他的密码。我也不能作为用户访问数据库。 现在为了简化开发,我想设置从本地机器到pgserver的ssh隧道: 问题是,虽然可以访问服务器,但他没有访问数据库的权限

  • 在尝试应用terraform计划时,我得到一个不加起来的ssh错误: SSH:握手失败:SSH:密钥交换没有通用算法;提供的客户端:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1 diffie-hellman-grou