Копирование файлов по ssh.

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
ViktorNsk
Сообщения: 31
Зарегистрирован: 30 дек 2018, 12:29
Благодарил (а): 1 раз
Поблагодарили: 6 раз
Контактная информация:

Копирование файлов по ssh.

#1

10 фев 2020, 19:56

Доброго вечера господа. Пытаюсь понять, как работает копирование файлов между ПК по ssh. Точнее, почему это не работает. Есть 3 VM VirtualBox: LM19.3Cinn, LMDE3Cinn, LMDE3Cinn. 192.168.1.18, 19, 20 соответственно. Если это имеет значение в данном случае. Вход или копирование по ssh с любого на любой работает. Вопрос, как скопировать файл/каталог с удаленного на удаленный напрямую? Например скопировать каталог /var/test1/ с сервера.20 в каталог /var/ сервера.19, отдавая команду с сервера.18
Выдаёт
  • root@LM19:/# scp root@192.168.1.20:/var/test1/ root@192.168.1.19:/var/
    root@192.168.1.20's password:
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied (publickey,password).
    lost connection
Более подробно
  • root@LM19:/# scp -v root@192.168.1.20:/var/test1/ root@192.168.1.19:/var/
    Executing: /usr/bin/ssh '-x' '-oClearAllForwardings=yes' '-n' '-v' '-l' 'root' '--' '192.168.1.20' 'scp -v' '/var/test1/' 'root@192.168.1.19:/var/'
    OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug1: Connecting to 192.168.1.20 [192.168.1.20] port 22.
    debug1: Connection established.
    debug1: permanently_set_uid: 0/0
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_rsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_rsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_dsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_dsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ecdsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ecdsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ed25519 type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ed25519-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Debian-10+deb9u7
    debug1: match: OpenSSH_7.4p1 Debian-10+deb9u7 pat OpenSSH* compat 0x04000000
    debug1: Authenticating to 192.168.1.20:22 as 'root'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:9vxPYhdBca4fbnNMS4ObTgRpMfl1FYVFHStOsM9a0M4
    debug1: Host '192.168.1.20' is known and matches the ECDSA host key.
    debug1: Found key in /root/.ssh/known_hosts:1
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,password
    debug1: Next authentication method: publickey
    debug1: Trying private key: /root/.ssh/id_rsa
    debug1: Trying private key: /root/.ssh/id_dsa
    debug1: Trying private key: /root/.ssh/id_ecdsa
    debug1: Trying private key: /root/.ssh/id_ed25519
    debug1: Next authentication method: password
    root@192.168.1.20's password:
    debug1: Authentication succeeded (password).
    Authenticated to 192.168.1.20 ([192.168.1.20]:22).
    debug1: channel 0: new [client-session]
    debug1: Requesting no-more-sessions@openssh.com
    debug1: Entering interactive session.
    debug1: pledge: network
    debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
    debug1: Sending environment.
    debug1: Sending env LC_MEASUREMENT = ru_RU.UTF-8
    debug1: Sending env LC_PAPER = ru_RU.UTF-8
    debug1: Sending env LC_MONETARY = ru_RU.UTF-8
    debug1: Sending env LANG = ru_RU.UTF-8
    debug1: Sending env LC_NAME = ru_RU.UTF-8
    debug1: Sending env LC_ADDRESS = ru_RU.UTF-8
    debug1: Sending env LC_NUMERIC = ru_RU.UTF-8
    debug1: Sending env LC_TELEPHONE = ru_RU.UTF-8
    debug1: Sending env LC_IDENTIFICATION = ru_RU.UTF-8
    debug1: Sending env LC_TIME = ru_RU.UTF-8
    debug1: Sending command: scp -v /var/test1/ root@192.168.1.19:/var/
    Executing: program /usr/bin/ssh host 192.168.1.19, user root, command scp -v -t /var/
    OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug1: Connecting to 192.168.1.19 [192.168.1.19] port 22.
    debug1: Connection established.
    debug1: permanently_set_uid: 0/0
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_rsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_rsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_dsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_dsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ecdsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ecdsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ed25519 type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ed25519-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u7
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Debian-10+deb9u7
    debug1: match: OpenSSH_7.4p1 Debian-10+deb9u7 pat OpenSSH* compat 0x04000000
    debug1: Authenticating to 192.168.1.19:22 as 'root'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256
    debug1: kex: host key algorithm: ssh-ed25519
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ssh-ed25519 SHA256:usZB/oBYUU13WvVSWAJvVS9mhWsAvJL70JNg8MNqlgw
    debug1: Host '192.168.1.19' is known and matches the ED25519 host key.
    debug1: Found key in /root/.ssh/known_hosts:2
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,password
    debug1: Next authentication method: publickey
    debug1: Trying private key: /root/.ssh/id_rsa
    debug1: Trying private key: /root/.ssh/id_dsa
    debug1: Trying private key: /root/.ssh/id_ecdsa
    debug1: Trying private key: /root/.ssh/id_ed25519
    debug1: Next authentication method: password
    debug1: read_passphrase: can't open /dev/tty: No such device or address
    debug1: Authentications that can continue: publickey,password
    Permission denied, please try again.

    debug1: read_passphrase: can't open /dev/tty: No such device or address
    debug1: Authentications that can continue: publickey,password
    Permission denied, please try again.
    debug1: read_passphrase: can't open /dev/tty: No such device or address
    debug1: Authentications that can continue: publickey,password
    debug1: No more authentication methods to try.
    Permission denied (publickey,password).
    lost connection
    debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
    debug1: channel 0: free: client-session, nchannels 1
    Transferred: sent 2348, received 6532 bytes, in 0.2 seconds
    Bytes per second: sent 12833.5, received 35702.2
    debug1: Exit status 1
    root@LM19:/#
Почему то пароль рута первого сервера.20 спрашивает, в второго даже не спрашивает. Может кто сталкивался с этим?

Решение slant » 10 фев 2020, 20:55
Хотя, извиняюсь, немного наврал. Поторопился, не полностью прочитал второй лог. В общем, вот это уже точно:
1. scp действительно умеет прямую передачу, и пытается у вас ее сделать с .20 на .19
2. Однако проведя вход на .20 - он пытается войти на .19 а сделать это у него не получается, т.к. .19 запрашивает пароль.
3. На запрос пароля scp ответить не может - не умеет. Чтобы это работало - между машинами .20 и .19 должна быть настроена аутентификация по ключу (и сам ключ не должен иметь пароля). Вот тогда так работать будет.

Итого, в вашем случае самый простой выход - зайти по ssh на .20 и давать команду scp оттуда. Если нет желания с ключами возится. Хотя освоить их использование - крайне полезно.

Перейти к ответу ➙

Аватара пользователя

symon2014
Сообщения: 5934
Зарегистрирован: 16 дек 2017, 21:59
Решено: 37
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 750 раз
Контактная информация:

Копирование файлов по ssh.

#2

10 фев 2020, 20:11

ViktorNsk, отвечу по дилетантски , они друг другом не знакомы. :hoho:

no avatar

Автор темы
ViktorNsk
Сообщения: 31
Зарегистрирован: 30 дек 2018, 12:29
Благодарил (а): 1 раз
Поблагодарили: 6 раз
Контактная информация:

Копирование файлов по ssh.

#3

10 фев 2020, 20:25

symon2014, cмысле 20 не знает о 19? Но по ssh и 20<----->19, и 20<----->18, и 18<----->19 всё копируется. В вот когда 18 отдаёт команду 20----->19, непонятно почему, не работает. Хотя scp умеет юзер1@пк1:/каталог/ юзер2@пк2:/каталог/

Аватара пользователя

symon2014
Сообщения: 5934
Зарегистрирован: 16 дек 2017, 21:59
Решено: 37
Откуда: Феодосия
Благодарил (а): 32 раза
Поблагодарили: 750 раз
Контактная информация:

Копирование файлов по ssh.

#4

10 фев 2020, 20:28

ViktorNsk, я бы примонтировал их к одной директории , и уже там копировал.

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Копирование файлов по ssh.

#5

10 фев 2020, 20:28

Есть подозрение, что из-за ошибки в строке "откуда копировать" оно пытается перейти в интерактивный режим и обламывается т.к. scp этого не умеет. В общем, попробуйте так:
scp -v root@192.168.1.20:/var/test1 root@192.168.1.19:/var/. Когда вы строку источника оканчиваете на / - это ошибка, т.к. подразумеваете этим неопределенность, что-то вроде "нечто в каталоге, но без имени вообще". Это цель "куда" можно так указывать - получается просто "куда класть" - внутрь такого-то каталога. А вот строка источника должна заканчиваться либо именем файла/каталога, либо маской. Примеры:
../cat1 - будет взят каталог cat1 вместе со всем его содержимым.
../cat1/* - будут взяты только файлы(и вложенные каталоги) из каталога cat1 но без самого каталога.

P.S. Не буду ручаться на 100% т.к. именно такой формой (две удаленные машины одновременно) почти никогда не пользовался, но кажется в данном случае копирование пройдет через вашу машину с которой вы команду отдаете, а не напрямую через с .20 на .19 - т.е. не совсем эффективно. Чтобы получить именно прямое копирование с .20 на .19 надо сначала залогиниться на .19 или .20 и вызывать команду scp там. Т.е. либо выполнить интерактивный вход по ssh, либо через конструкцию вида ssh root@192.168.1.20 scp /var/test1 root@192.168.1.19:/var/

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Копирование файлов по ssh.

#6

10 фев 2020, 20:35

А, да - еще ключ -r для scp забыли. Без него содержимое вложенных директорий копироваться не будет. Т.е. первый пример выдаст пустую директорию. Во втором, где файлы по маске * - файлы будут скопированы, но только на один уровень. Если попадется кроме файлов директория - она будет пустой.

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Копирование файлов по ssh.

#7

10 фев 2020, 20:55

Хотя, извиняюсь, немного наврал. Поторопился, не полностью прочитал второй лог. В общем, вот это уже точно:
1. scp действительно умеет прямую передачу, и пытается у вас ее сделать с .20 на .19
2. Однако проведя вход на .20 - он пытается войти на .19 а сделать это у него не получается, т.к. .19 запрашивает пароль.
3. На запрос пароля scp ответить не может - не умеет. Чтобы это работало - между машинами .20 и .19 должна быть настроена аутентификация по ключу (и сам ключ не должен иметь пароля). Вот тогда так работать будет.

Итого, в вашем случае самый простой выход - зайти по ssh на .20 и давать команду scp оттуда. Если нет желания с ключами возится. Хотя освоить их использование - крайне полезно.

no avatar

Автор темы
ViktorNsk
Сообщения: 31
Зарегистрирован: 30 дек 2018, 12:29
Благодарил (а): 1 раз
Поблагодарили: 6 раз
Контактная информация:

Копирование файлов по ssh.

#8

10 фев 2020, 22:40

slant, да, п.3 решил проблему. Спасибо!
Сколько ресурсов перечитал, не написано про этот нюанс.
На .20

Код: Выделить всё

root@lmde3:/# ssh-keygen -t rsa
root@lmde3:/# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.19
решило проблему.
root@LM19:/# scp -r root@192.168.1.20:/var/test1/ root@192.168.1.19:/var/
root@192.168.1.20's password:
root@LM19:/#
Всё скопировалось с файлами и подкаталогами.

Закрыто

Вернуться в «Прочие устройства»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя