You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从S3读取.pem私钥并传入SSHTunnelForwarder构造函数?

从S3读取PEM密钥用于SSHTunnelForwarder

要实现从S3读取PEM私钥并传入SSHTunnelForwarder,你需要借助AWS SDK(boto3)获取密钥内容,再用paramiko将内容加载为密钥对象(sshtunnel底层依赖paramiko,支持直接传入这类对象)。

步骤说明

  1. 安装所需依赖库:
pip install sshtunnel boto3 paramiko
  1. 完整代码实现:
from sshtunnel import SSHTunnelForwarder
import boto3
from paramiko import RSAKey

S3_BUCKET = "the_bucket"
S3_KEY_PATH = "the_key.pem"

# 从S3获取密钥内容
s3_client = boto3.client('s3')
response = s3_client.get_object(Bucket=S3_BUCKET, Key=S3_KEY_PATH)
pem_content = response['Body'].read().decode('utf-8')

# 将PEM内容加载为paramiko密钥对象
# 若为DSA密钥,改用paramiko.DSSKey.from_private_key_string;ED25519密钥用paramiko.Ed25519Key
private_key = RSAKey.from_private_key_string(
    pem_content,
    password=SSH_PKEY_PASSWORD
)

# 初始化SSH隧道
tunnel = SSHTunnelForwarder(
    ssh_host=(SSH_JUMPHOST, SSH_PORT),
    ssh_username=SSH_USERNAME,
    ssh_pkey=private_key,  # 传入加载好的密钥对象
    remote_bind_address=(REMOTE_HOST, REMOTE_PORT),
    local_bind_address=("127.0.0.1", 12345),
)

tunnel.start()

# 隧道内操作...

注意事项

  • 确保运行代码的环境具备访问目标S3桶的权限(可通过IAM角色、环境变量配置AWS凭证)
  • 密钥内容需解码为字符串,paramiko才能正确解析

内容的提问来源于stack exchange,提问作者Pablo M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:00:59