команды передачи файлов по ssh

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

команды передачи файлов по ssh

Непрочитанное сообщение Olej » 09 авг 2012, 23:59

Подскажите форму команды для передачи файлов по ssh ...
То, что делается в mc между панелями, когда одна из панелей открывается в режиме ssh-доступа к удалённому хосту:
mc-shell.png
mc-shell.png (177.77 КБ) 760 просмотров
То, что у них в mc названо Shell-соединение ... для меня это название всегда было загадкой: почему Shell-соединение, если это SSH-соединение?
mc_003.png
mc_003.png (210.72 КБ) 760 просмотров
P.S.

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

bash-4.2$ man ssh
Нет справочной страницы для ssh
- долбанная Fedora 17! :twisted:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 10 авг 2012, 00:08

scp(1) - Linux man page
Name

scp - secure copy (remote file copy program)

Synopsis

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [

[user@]host1:]file1 ... [ [user@]host2:]file2
...
sftp(1) - Linux man page
Name

sftp - secure file transfer program

Synopsis

sftp [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] [-s subsystem | sftp_server] host

sftp [

user@]host[:file ...]
sftp [
user@]host[
:dir[/]]
sftp -b batchfile [
user@]host
Description

sftp is an interactive file transfer program, similar to ftp(1), which performs all operations over an encrypted ssh(1) transport. It may also use many features of ssh, such as public key authentication and compression. sftp connects and logs into the specified host, then enters an interactive command mode.
...

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

bash-4.2$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

bash-4.2$ sftp
usage: sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
          [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
          [-o ssh_option] [-P port] [-R num_requests] [-S program]
          [-s subsystem | sftp_server] host
       sftp [user@]host[:file ...]
       sftp [user@]host[:dir[/]]
       sftp -b batchfile [user@]host

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 06 окт 2012, 00:00

Понадобилось в LAN погонять файлы.

При полной идентичности синтаксиса (по man) scp & sftp :

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

bash-4.2$ sftp olej@192.168.1.9:/home/olej/YYY
olej@192.168.1.9's password: 
Connected to 192.168.1.9.
Fetching /home/olej/YYY to YYY
/home/olej/YYY                                                    100%   98MB  10.9MB/s   00:09    

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

bash-4.2$ scp -vvv olej@notebook:/home/olej/YYY
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
Чего 2-му не хватает? :-?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 06 окт 2012, 00:06

Olej писал(а):Чего 2-му не хватает? :-?
Всё, понятно.
Ему нужен 2-й операнд - имя файла результата:

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

bash-4.2$ scp olej@195.168.1.9:/home/olej/YYY YYY
ssh: connect to host 195.168.1.9 port 22: No route to host
bash-4.2$ scp olej@192.168.1.9:/home/olej/YYY YYY
olej@192.168.1.9's password: 
YYY                                                    100%   98MB  10.9MB/s   00:09  
Но как это можно из man понять?

Нафига они в help это многоточие влепили? :

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

bash-4.2$ scp --help
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 19 окт 2012, 16:14

Olej писал(а): Всё, понятно.
Ему нужен 2-й операнд - имя файла результата:

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

bash-4.2$ scp olej@192.168.1.9:/home/olej/YYY YYY
olej@192.168.1.9's password: 
YYY                                                    100%   98MB  10.9MB/s   00:09  
Обратите внимание (я не сразу увидел, а оказалось очень даже нужным позже), что scp (в отличие, например, от sftp) может не только скачивать файл из удалённого хоста, но и загружать файл туда. Просто поменяв запись адресатов, типа такого:

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

bash-4.2$ scp YYY olej@192.168.1.9:/home/olej/YYY 
...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 26 окт 2012, 00:56

Olej писал(а): Ему нужен 2-й операнд - имя файла результата:
Заинтересовала меня такая "мелочь" ;-) :

- если эти 2 команды пересылают файлы по протоколу SSH ...
- то, очевидно, что обязательным условием должно быть то, что на удалённом хосте запущен был (тем или иным способом) сервер sshd.

Проверяем:

- остановим все варианты работы sshd (который обычно присутствует) ... и проверим тут же с локального хоста:

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

bash-4.2$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
- этот мой локальный хост "мёртвый" с точки зрения протокола SSH ...

- теперь с удалённого хоста проверяю (то, что работало и показано раньше):

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

olej@atom:~$ scp olej@192.168.1.5:/home/olej/XXX XXX
ssh: connect to host 192.168.1.5 port 22: Connection refused
Вот так вот ;-) : эти команды работают, но не всегда ;-) - проверяйте требуемое им окружение!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 31 мар 2013, 16:37

Ещё в ту же копилку команда - lftp:

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

bash-4.2$ man lftp
...
SYNTAX
       lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
       lftp -f script_file
       lftp -c commands
       lftp --version
       lftp --help

VERSION
       This man page documents lftp version 4.3.8.

DESCRIPTION
       lftp  is  a  file transfer program that allows sophisticated FTP, HTTP and other connections to
       other hosts. If site is specified then lftp will connect to that site  otherwise  a  connection
       has to be established with the open command.

       lftp can handle several file access methods - FTP, FTPS, HTTP, HTTPS, HFTP, FISH, SFTP and file
       (HTTPS and FTPS are only available when lftp is compiled with GNU TLS or OpenSSL library).  You
       can   specify  the  method  to  use  in  `open  URL'  command,  e.g.  `open  http://www.us.ker‐
       nel.org/pub/linux'. HFTP is ftp-over-http-proxy protocol. It can be used automatically  instead
       of  FTP  if  ftp:proxy  is set to `http://proxy[:port]'. Fish is a protocol working over an ssh
       connection to a unix account. SFtp is a protocol implemented in SSH2 as SFTP subsystem.

       Besides FTP-like protocols, lftp has support for  BitTorrent  protocol  as  `torrent'  command.
       Seeding is also supported.
...
Перегоняет файлы различными протоколами, в том числе и SSH ... и даже с торентов ... и даже через прокси (правда w_g_e_t тоже замечательно это умеет из-под прокси).

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение tundra37 » 31 мар 2013, 23:29

Немножко не в тему но все-таки. Теперь все-все помешаны на безопасности. Впервые я встретился на Ubuntu вроде - там по умолчанию был включен Selinux на самый строгий режим и в локалке не работало ничего.
Второй раз попал недавно. На Centos 5.2 сеть была открытой. А вот на 5.8 долго мучился: оказалось в iptables все было закрыто, кроме ssh. Правила для ssh видимо открыл инсталлятор? А вот протокол mpi не завелся.
Правда я его не ставил, но все равно слабо верится, чтобы там это предусмотрели. Новичкам становится все труднее "въехать" в Линукс и особенно сети.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 12 авг 2015, 10:33

tundra37 писал(а):Теперь все-все помешаны на безопасности.
...
Новичкам становится все труднее "въехать" в Линукс и особенно сети.
Это правда. Есть такое дело.
tundra37 писал(а):Впервые я встретился на Ubuntu вроде - там по умолчанию был включен Selinux на самый строгий режим и в локалке не работало ничего.
Второй раз попал недавно. На Centos 5.2 сеть была открытой. А вот на 5.8 долго мучился: оказалось в iptables все было закрыто, кроме ssh. Правила для ssh видимо открыл инсталлятор? А вот протокол mpi не завелся.
Я на рабочих, не критических компьютерах, по программированию и отработке программ - сразу по инсталляции отключаю selinux и iptables ... т.е. в iptables открываю по максимуму потенциально нужных мне портов.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: команда передачи файлов по ssh

Непрочитанное сообщение Olej » 25 фев 2019, 19:24

tundra37 писал(а):Немножко не в тему но все-таки.
:-D
Ещё немножко не в тему... :-D
В реальном проекте облачного сервиса понадобилось, помимо основных функций, забрасывать файлы эталонных изображений (время от времени, изредка) на публичный сервер, стоящий где-то под Челябинском :-D ... в определённый каталог файловой системы сервера.
Сначала сгородил дополнительный TCP/IP клиент-серверный канал на отдельном пользовательском порту...

А потом решил использовать для этого передачу этих файлов по протоколу SSH, по тому же, по которому я доступаюсь и к терминальным сессиям на этом сервере. Некоторую сложность здесь в конкретике создаёт то, что:
- доступ по SSH разрешён на нестандартном порту TCP, скажем, 4430 ...
- доступ по SSH запаролен, скажем, пароль для пользователя xxx - yyy
- закачка файлов должна происходить из скрипта, автономно, возможность ручного ввода на запрос пароля исключается.

Пришлось повозиться...
Разыскать и установить (стандартным apt-get) утилиту sshpass:

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

olej@ACER:~/2018_WORK$ aptitude search sshpass
i   sshpass                                                            - Non-interactive ssh password authentication                                  

Поэкспериментировать с копированием туда и обратно:

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

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/images$ scp -vvv -P 4430 xxx@87.249.221.249:/home/android/xxx xxx1 
...
OpenSSH_7.9p1 Debian-6, OpenSSL 1.1.1a  20 Nov 2018
...
Transferred: sent 1984, received 2316 bytes, in 0.9 seconds
Bytes per second: sent 2230.5, received 2603.7
debug1: Exit status 0

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/Aplit.test$ ls
adhast.1.jpg  Boris1.1.jpg  cywan.10.jpg  damvo.1.jpg  Egor1.2.jpg  howar.10.jpg  Olena3.4.jpg  rafox.10.jpg  simm.10.jpg

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/Aplit.test$ sshpass -p yyy scp -P 4430 * xxx@87.249.221.249:/home/android/FaceDL/cloud/known2
И всё это вылилось в такой вот скрипт загрузки:

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

#!/bin/bash

if [ $# -eq 0 ]
then
   echo "using: $0 <file1 [file2 ...]>" 
   exit 1
fi

while [ $# -ne 0 ]
do
   if [ ! -f $1 ] ; then
      echo "wrong file path: $1"
      shift
      continue
   fi
   sshpass -p yyy scp -P 4430 $1 xxx@87.249.221.249:/home/android/FaceDL/cloud/known2
   echo "sent out: $1"
   shift
done

Ответить

Вернуться в «Сети»

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

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