Python 中的双 SSH 隧道

2024-07-01

今天,我在命令行中使用 ssh 将端口从远程服务器转发,使用中间服务器到我的本地计算机。

这是我在 shell 中使用的命令:

ssh user@remote_server -L 2443:localhost:433

此 ssh 会话使用 ssh 配置文件来发出多跳:

Host intermediate_server
   IdentityFile "google_compute_engine"

Host remote_server
   ProxyCommand ssh user@intermediate_server -W %h:%p

ssh 命令需要输入中间服务器(使用计算引擎密钥)和远程服务器(不同密码)的密码 输入密码后,此代码将起作用:

import requests
import pandas as pd
from requests.auth import HTTPBasicAuth

url = 'https://localhost:2443/my_site'
my_ds = requests.get(url, auth=HTTPBasicAuth('user', 'password'), verify=False)
print pd.read_json(my_ds.content)

但是,我只能在命令行中使用手动 ssh 隧道让它工作。

如何在 python 中使用密钥、用户名和密码启动双隧道? 我尝试使用 sshtunnel 包,但它只能帮助我进行一个端口转发,而不是一个双端口转发。


你可以尝试这个例子:https://github.com/pahaz/sshtunnel#example-4 https://github.com/pahaz/sshtunnel#example-4

import sshtunnel
import requests
import pandas as pd
from requests.auth import HTTPBasicAuth

with sshtunnel.open_tunnel(
    ssh_address_or_host=('remote_server', 22),
    ssh_username="user",
    remote_bind_address=('intermediate_server', 22),
    block_on_close=False
) as tunnel1:
    print('Connection to tunnel1 (intermediate_server) OK...')
    with sshtunnel.open_tunnel(
        ssh_address_or_host=('127.0.0.1', tunnel1.local_bind_port),
        remote_bind_address=('127.0.0.1', 2443),
        ssh_username='user',
        ssh_password='intermediate_server_pwd',
        block_on_close=False
    ) as tunnel2:
        url = 'https://localhost:'+tunnel2.local_bind_port+'/my_site'
        my_ds = requests.get(url, auth=HTTPBasicAuth('user', 'password'), verify=False)
        print(my_ds.content)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的双 SSH 隧道 的相关文章

  • py.test 日志控制

    我们最近切换到 py test 进行 python 测试 顺便说一句 这非常棒 但是 我试图弄清楚如何控制日志输出 即内置的 python 日志记录模块 我们安装了 pytest capturelog 并且它按预期工作 当我们想查看日志时
  • 持久子进程.Popen 会话

    我正在尝试运行一个命令 然后在同一环境中运行另一个命令 比如说 如果我在第一个命令中设置环境变量 我希望它可用于第二个命令 我试过这个 import subprocess process subprocess Popen echo test
  • 如何使用 TfIdfVectorizer 通过 SciKitLearn 对文档进行分类?

    以下示例展示了如何使用 Sklearn 20 新闻组数据训练分类器 gt gt gt from sklearn feature extraction text import TfidfVectorizer gt gt gt categori
  • 调用exe中定义的函数

    我需要知道一种从 python 脚本调用 exe 中定义的函数的方法 我知道如何从 py 文件调用整个 exe 除非您的 EXE 是 COM 对象 或者像 dll 那样专门导出某些函数 否则这是不可能的 对于 COM 方法 请查看以下资源
  • 使用具有阿拉伯字符的 json.dumps 将字典转换为 json [重复]

    这个问题在这里已经有答案了 我有一本包含阿拉伯语单词的字典 例如 data name name print json dumps data file open data json a encoding utf 8 Output name u
  • 在Python中使用argparse解析整个JSON

    我正在尝试使用 ARGPARSE 库在一个简单的参数中解析整个 Json 问题是当它遇到儿子内部的不同元素 例如 和 时 它会突然停止 这是测试代码 parse py import argparse parser argparse Argu
  • Python 内存使用情况

    因此 我有一些代码接收一组文件 将其可以缝合在一起 然后绘制它们 我发布了大部分代码 试图使其更具可读性 如果需要 可以添加更多代码 for paths dirs files in os walk start path for d in d
  • 二维数组 matplotlib 的颜色图

    所以 我认为这会非常简单 但我一直很难在一个易于理解的示例中找到我正在寻找的内容 基本上我想制作相图 所以假设我有一个二维数组 我怎样才能让 matplotlib 将其转换为我可以附加标题 轴和图例 彩条 的图 我正在寻找一种极其简单的基本
  • 如何在pytorch中使用多个GPU?

    我使用此命令来使用 GPU device torch device cuda 0 if torch cuda is available else cpu 但是 我想使用两个 GPUjupyter 像这样 device torch devic
  • 如何在 Anaconda(Jupyter 笔记本)中导入 python 自定义类

    我无法找到如何使用 anaconda 中的 Jupyter 笔记本在 Python 中导入自定义类 在我的工作文件夹中有一个文件 用户 ipynb 包含类名User 在同一文件夹中的其他文件中 我尝试使用以下命令导入此类 从用户导入用户 我
  • 加速使用 Pyinstaller 创建的 .exe

    我已经使用 Pyinstaller 将我的程序 用 Python 3 6 1 编写 使用 Python 3 5 3 转换 从 py 转换为 exe 然而 它是加载速度极其缓慢 与在空闲状态下运行时我优化了我想什么问题是 导入大量模块 所以我
  • 使用 itertools.product 并想要播种一个值

    所以我写了一个小脚本来从网站下载图片 它通过 7 个字母字符值 其中第一个字符始终是数字 问题是 如果我想停止脚本并再次启动它 我必须从头开始 我可以用我得到的最后一个值以某种方式播种 itertools product 吗 这样我就不必再
  • 以另一种风格制作一个带有形状和偏移参数的 numpy 数组

    我想以 3 元素实体 3d 位置 和单个元素 每个 x y z 坐标 的形式访问我的数组 经过一番研究后 我最终做了以下事情 gt gt gt import numpy as np gt gt gt arr np zeros 5 dtype
  • 从周数获取日期

    请问我的代码有什么问题 import datetime d 2013 W26 r datetime datetime strptime d Y W W print r 显示 2013 01 01 00 00 00 谢谢 周数不足以生成日期
  • DataFrame.stack() 之后的新索引级别名称

    注意这个问题 https stackoverflow com questions 26002474 pandas name of the column after a group by function 28303765 28303765看
  • Discord.py 提供角色的反应机器人

    我如何制作一个机器人 当人们对特定事物做出反应时 它可以为他们分配角色 到目前为止我有这个但它不起作用 client event async def on ready channel client get channel 513546504
  • 抓取框架 NTSCtoUSB 加密狗、opencv2、python 包装器

    Context 我一直在研究 opencv2 的 python 包装器 我想尝试一些想法并使用类似于汽车 后视 摄像头的广角摄像头 我从一辆报废的撞车上得到了一根 它有 4 根电线 我从电线的颜色编码中进行了有根据的猜测 将其连接起来 以便
  • Apache24-x86-VC9 与 mod_wsgi 说,“AH00419:master_main:创建子进程失败。正在退出。”并且不会启动

    我正在尝试在我的 Windows 版本的 Apache24 上安装 WSGI 功能 当我尝试启动该服务时 我在 error log 中收到以下内容 Wed Dec 23 10 24 33 404057 2015 ssl warn pid 2
  • XPath 错误:[contains(text()="something")]' 不是有效的 XPath 表达式

    在观看了关于 XPath 的非常基本的教程之后 我第一次使用 selenium 构建一个应用程序 该应用程序包含卡的奖金计算器 我写了这段代码 from selenium webdriver import Chrome from webdr
  • 用python划分两个数据框

    我有两个数据框 df1 and df2 df1 TIMESTAMP eq1 eq2 eq3 2016 05 10 13 20 00 40 30 10 2016 05 10 13 40 00 40 10 20 df2 TIMESTAMP eq

随机推荐

  • 从 IE 打印时,如何防止 元素出现在多个页面上?

    我有一个 HTML 数据表 其中每个单元格可以有多行文本 打印表格时 一行可能会被分解 以便一些数据出现在第一页的底部 而一些数据出现在下一页的顶部 是否有类似于 Word 的 保持在一起 功能可以防止表格行内发生分页 我认为这将是一个常见
  • Heroku 中的 ActionController::RoutingError (未初始化常量 User::UsersController)(但一切都在本地工作)

    我正在尝试在 heroku 中运行我的应用程序 但在尝试注册甚至访问设备的登录页面时出现此错误 ActionController RoutingError uninitialized constant User UsersControlle
  • 是否可以使用 CMD/BAT/VBS 更改 WiFi 托管网络设置?

    我试图改变两个托管网络设置 of my 无线热点使用CMD BAT VBS 但我无法做到这一点 我想更改的设置 身份验证 例如 WPA WPA2PSK 密码 例如 CCMP AES 以下代码提供有关托管网络设置的信息 netsh wlan
  • 更新主干模型/视图的轮询请求

    我需要找到一种方法来更新使用以下实现的网络应用程序backbone 用例如下 我有几个视图 每个视图 或者可能与该视图相关的模型 集合 需要在不同的时间向服务器发出不同的轮询请求以发现某些变化 我想知道最通用的方法是什么 1 实施Tradi
  • 通过setRequestHeader授权

    我发现这段代码可以使用 setRequestheader 和 Ajax 进行身份验证 this xmlDoc setRequestHeader Authorization Basic Base64 encode User Password
  • Python Pandas:使用 groupby() 和 agg() 时顺序是否保留?

    我经常使用熊猫 agg 函数对 data frame 的每一列运行摘要统计 例如 以下是生成平均值和标准差的方法 df pd DataFrame A group1 group1 group2 group2 group3 group3 B 1
  • 如何在 kubernetes 中“部署”而不进行任何更改,只是为了让 pod 循环

    我正在尝试做的事情 Pod 中运行的应用程序在启动时会刷新其数据文件 每次我想刷新数据时都需要重新启动容器 刷新可能需要几分钟 所以我有一个探针检查准备情况 What I think是一个解决方案 我将运行一个预定的工作 http kube
  • CVS 只读签出

    我必须在项目中使用CVS 到目前为止 在我的整个工作生涯中 我只使用过 perforce 而且我对 CVS 一无所知 我阅读了整个 CVS 手册 但找不到如何执行此操作 在perforce中 当你签出一个文件时 你首先必须执行p4 edit
  • C# 参数隐式转换

    有这个代码 class Program static void Main string args Check 3 Console ReadLine static void Check int i Console WriteLine I am
  • Python中字典转小写

    我希望这样做 但为了一本字典 My string lower 是否有内置函数或者我应该使用循环 您将需要使用循环或列表 生成器理解 如果你想将所有的键和值都小写 你可以这样做 dict k lower v lower for k v in
  • 为什么 Sequence 是 mypy 中 + 不支持的操作数类型?

    mypy给出一个错误Sequence str 不是受支持的操作数类型 操作员 test py from typing import Sequence def test x Sequence str y Sequence str gt Seq
  • React + Redux 中的多个/批量删除

    我有一个允许多重选择和删除功能的数据网格 我的 api 有一个删除端点 DELETE http localhost 8888 api audit id 这就是动作创建者 export function deleteAudit audits
  • 使用 mqtt 协议和 kafka 作为消息代理

    我们如何使用 mqtt 协议和 kafka 作为消息代理 客户端 android ios 桌面 java 应用程序等 将使用 mqtt phao 客户端库生成和使用消息 这些客户端库可使用 kafka 作为消息代理以不同语言提供 有什么建议
  • Python,针对频繁模式的网络日志数据挖掘

    我需要开发一个用于网络日志数据挖掘的工具 由于在特定用户会话中请求了许多 url 序列 从 Web 应用程序日志中检索 我需要找出网站用户的使用模式和组 集群 我是数据挖掘的新手 现在经常检查谷歌 发现一些有用的信息 即查询似乎指向几乎完全
  • Electron v4 支持 ECMAScript 模块吗?

    我正在使用 Electron 编写应用程序 当前版本 4 0 6 基于 Node 10 11 0 和 Chrome 69 0 3947 106 我认为最新版本的 Electron 将支持 ECMAScript ES6 模块 但到目前为止我还
  • Jenkins 管道脚本未运行

    对于下面的管道脚本 Helo World 未打印 甚至节点也没有被分配 pipeline agent any stages stage Example steps echo Hello World 安装了 Pipeline Declarat
  • 为什么当缩放改变时,具有相同高度的元素“看起来”不同?

    基本上 要点就在主题中 当我创建两个具有固定高度 2px 的相同 div 并将缩放更改为 75 或 125 时 由于某种原因它们 看起来 不同 有人可以解释一下这里发生了什么吗 我该如何解决这个问题 gradient slider line
  • 当我使用 iText 从 PDF 文件中提取文本时,我从前一页获取值

    我正在尝试从多页 PDF 文件中每个页面的特定位置提取文本块 我知道文本的位置 并且能够在第一页上正确提取它 然而 在第一页之后的页面上 提取的文本似乎正在累积 例如 如果第 1 页上的文本值为 A 第 2 页为 B 第 3 页为 C 那么
  • 如何使用 scipy.spatial.Delaunay 查找 delaunay 三角剖分中给定点的所有邻居?

    我一直在寻找这个问题的答案 但找不到任何有用的东西 我正在使用 python 科学计算堆栈 scipy numpy matplotlib 并且我有一组二维点 我为其计算 Delaunay 训练 wiki https en wikipedia
  • Python 中的双 SSH 隧道

    今天 我在命令行中使用 ssh 将端口从远程服务器转发 使用中间服务器到我的本地计算机 这是我在 shell 中使用的命令 ssh user remote server L 2443 localhost 433 此 ssh 会话使用 ssh