я скачиваю некоторые файлы с помощью следующей SSH конфигурации:SFTP с SSH ProxyCommand в питоне
Host proxy
Hostname proxy.example.com
User proxyuser
IdentityFile ~/.ssh/proxy_id_rsa
Host target # uses password auth
Hostname target.example.com
User targetuser
ProxyCommand ssh proxy nc %h %p
Я пытаюсь автоматизировать загрузку файлов - в настоящее время с помощью paramiko, но можно использовать другую библиотеку, если она было бы проще.
Вот что я пытаюсь на основе некоторых других ответов:
from paramiko.proxy import ProxyCommand
from paramiko.transport import Transport
from paramiko.sftp_client import SFTPClient
proxy = ProxyCommand('ssh -i /Users/ben/.ssh/proxy_id_rsa [email protected]proxy.example.com nc target.example.com 22')
client = SFTPClient(proxy)
client.connect(username='targetuser', password='targetpassword')
Однако, это бросает ошибку
Traceback (most recent call last):
File "sftp.py", line 6, in <module>
client = SFTPClient(proxy)
File "/Users/ben/.virtualenvs/venv/lib/python3.5/site-packages/paramiko/sftp_client.py", line 99, in __init__
server_version = self._send_version()
File "/Users/ben/.virtualenvs/venv/lib/python3.5/site-packages/paramiko/sftp.py", line 105, in _send_version
t, data = self._read_packet()
File "/Users/ben/.virtualenvs/venv/lib/python3.5/site-packages/paramiko/sftp.py", line 177, in _read_packet
raise SFTPError('Garbage packet received')
paramiko.sftp.SFTPError: Garbage packet received
К сожалению, сообщение об ошибке не очень полезно, так что я в потеря за то, что я могу изменить. Я не могу изменить конфигурацию на target
, и я бы предпочел не менять конфигурацию на proxy
, если этого избежать. Какие-либо предложения?