• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Нужна помощь с кодом на Python

misterX

Grey Team
01.06.2022
273
11
BIT
155
Всем привет товарищи. Состряпал код на Python для отправки файла по SSH с хостовой на виртуальную машину - но при его выполнении файл не отправился. Библиотека установлена, Логин и пароль для подключения верен, хост и порт тоже верен и открыт, SSH на обеих машинах есть и работает, тем более что попробовал подключиться и создать файл через PuTTY - всё прошло успешно. Подскажите в чём может быть проблема? Заранее спасибо)
Вот сам код

Код:
import paramiko

# Подключение к SSH серверу
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Здесь нужно указать адрес и порт своей виртуальной машины
host = 'тут мой хост'
port = тут мой порт

# Здесь нужно указать логин и пароль для SSH подключения
username = 'логин'
password = 'пароль'

# Подключение к SSH серверу
ssh.connect(host, port, username, password)

# Путь к локальному файлу, который нужно отправить
local_path = r'C:\Users\misterX\Desktop\Worker\primerSSH.txt'

# Путь на удаленной машине, куда нужно отправить файл
remote_path = r'C:\Users\misterX\Desktop\eth'

# Отправка файла по SSH
sftp = ssh.open_sftp()
sftp.put(local_path, remote_path)
sftp.close()

# Закрытие SSH соединения
ssh.close()
 
Решение
Функция sftp.put() полагается на полные пути (включая имена файлов), а не только на путь до директории. Поэтому remote_path не должен указывать только путь к папке, а должен указывать полный путь к файлу. Пример: remote_path = '/home/user/mvp/data.txt'.
Спасибо дружище, я уже с этим давно разобрался и тему можно закрыть)

D3L1F3R

Red Team
20.02.2022
308
96
BIT
387
Только что добавил и проверил - так ничего и не вышло(
Попробуйте сразу дать значения, а не записывать их в переменные, попробуйте испльзовать без ковычек или наоборот их добавить. Перепроверьте точно ли работает ssh, есть стабильное подключение, брандмауэр и т.д т.п
 

Exited3n

Red Team
10.05.2022
679
224
BIT
437
Не нужен целый Paramiko для переноса файла.
Для этого используется scp

Типо так:
Python:
import subprocess
subprocess.run(["scp", r"C:\temp\test.txt", f"exited3n@10.0.0.1:2222:/home/exited3n/file.txt"])

Но предварительно должен быть решен вопрос с авторизацией по ключу.
Иначе будет timeout, т.к. сервер будет ждать ввод пароля.
 

Exited3n

Red Team
10.05.2022
679
224
BIT
437
Если очень хочется Paramiko то там рекомендую так же использовать scp.
Python:
from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('10.0.0.1:2222')

with SCPClient(ssh.get_transport()) as scp:
    scp.put('test.txt', 'test2.txt')
    scp.get('test2.txt')
 

misterX

Grey Team
01.06.2022
273
11
BIT
155
Если очень хочется Paramiko то там рекомендую так же использовать scp.
Python:
from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('10.0.0.1:2222')

with SCPClient(ssh.get_transport()) as scp:
    scp.put('test.txt', 'test2.txt')
    scp.get('test2.txt')
Спасибо. Когда вернусь домой не знаю, но обязательно попробую. Спасибо)
 

Belyyy

New member
15.10.2023
1
0
BIT
0
Функция sftp.put() полагается на полные пути (включая имена файлов), а не только на путь до директории. Поэтому remote_path не должен указывать только путь к папке, а должен указывать полный путь к файлу. Пример: remote_path = '/home/user/mvp/data.txt'.
 

misterX

Grey Team
01.06.2022
273
11
BIT
155
Функция sftp.put() полагается на полные пути (включая имена файлов), а не только на путь до директории. Поэтому remote_path не должен указывать только путь к папке, а должен указывать полный путь к файлу. Пример: remote_path = '/home/user/mvp/data.txt'.
Спасибо дружище, я уже с этим давно разобрался и тему можно закрыть)
 
Последнее редактирование:
Решение
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!