我正在尝试复制在 Kubernetes 中运行的手动任务,在该任务中我访问 pod,然后通过 SFTP 到服务器,其中有我们需要的文件。唯一需要的是私钥,它存储在秘密。
@task
def get_files(config:Box):
logger = prefect.utilities.logging.get_logger()
from io import StringIO
key = AKH.get_secret_value(config.primary_kv_url, 'id-rsa-private-key')
private_k = StringIO(key)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
mykey = paramiko.RSAKey.from_private_key(private_k)
ssh.connect(hostname='foreignhost.com',username='clouseau', pkey=mykey, port=22)
等待大约 90 秒后,我收到此错误
.venv/lib/python3.10/site-packages/paramiko/client.py", line 358, in <lambda>
retry_on_signal(lambda: sock.connect(addr))
我不确定它是否已连接,所以任何帮助都会很棒,谢谢。
也许添加一些调试行来检查秘密值是否正确。
如果 Pod 中有可用的 netcat,请使用以下命令检查连接:
nc -v foreignhost.com 22