docker airflow容器和SFTP服务器之间的RSA密钥配对
我正在尝试使用docker compose,LocalExecutor来执行一些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
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密钥