docker airflow容器和SFTP服务器之间的RSA密钥配对

docker airflow容器和SFTP服务器之间的RSA密钥配对,docker,docker-compose,rsa,airflow,sftp,Docker,Docker Compose,Rsa,Airflow,Sftp,我正在尝试使用docker compose,LocalExecutor来执行一些SFTP操作 从我的主机上,我可以轻松地连接到SFTP,因为我已经在默认的~/.ssh文件夹中写入了它,并将其与SFTP主机配对。如何在docker容器中执行相同的操作? 由于我的docker容器和SFTP主机之间没有任何rsa计算机配对,因此我收到了此错误,在SFTP操作员日志中可见: Traceback (most recent call last): File "/usr/local/li

我正在尝试使用docker compose,LocalExecutor来执行一些
SFTP
操作

从我的主机上,我可以轻松地连接到SFTP,因为我已经在默认的~/.ssh文件夹中写入了它,并将其与SFTP主机配对。如何在docker容器中执行相同的操作? 由于我的docker容器和SFTP主机之间没有任何rsa计算机配对,因此我收到了此错误,在SFTP操作员日志中可见:

    Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/airflow/contrib/operators/sftp_operator.py", line 124, in execute
    with self.ssh_hook.get_conn() as ssh_client:
  File "/usr/local/lib/python3.7/site-packages/airflow/contrib/hooks/ssh_hook.py", line 193, in get_conn
    client.connect(**connect_kwargs)
  File "/usr/local/lib/python3.7/site-packages/paramiko/client.py", line 446, in connect
    passphrase,
  File "/usr/local/lib/python3.7/site-packages/paramiko/client.py", line 677, in _auth
    key_filename, pkey_class, passphrase
  File "/usr/local/lib/python3.7/site-packages/paramiko/client.py", line 586, in _key_from_filepath
    key = klass.from_private_key_file(key_path, password)
  File "/usr/local/lib/python3.7/site-packages/paramiko/pkey.py", line 235, in from_private_key_file
    key = cls(filename=filename, password=password)
  File "/usr/local/lib/python3.7/site-packages/paramiko/rsakey.py", line 55, in __init__
    self._from_private_key_file(filename, password)
  File "/usr/local/lib/python3.7/site-packages/paramiko/rsakey.py", line 175, in _from_private_key_file
    data = self._read_private_key_file("RSA", filename, password)
  File "/usr/local/lib/python3.7/site-packages/paramiko/pkey.py", line 307, in _read_private_key_file
    with open(filename, "r") as f:
FileNotFoundError: [Errno 2] No such file or directory: '~/.ssh/id_rsa'
气流连接中,我在连接类型字段中找不到选项SFTP,但我注意到SFTP\u默认连接没有连接类型的条目。我应该也没有自定义的条目,还是应该(可能)使用SSH类型


谢谢你发布这篇文章,因为它可能对其他人有用

我通过创建全新的rsa密钥(在构建时复制到容器中)并将openssh服务器安装到容器中,解决了这个问题。
另一件不可忘记的事情是确保容器和主机中都有相同的Fernet密钥