URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 80238
[ Назад ]

Исходное сообщение
"FTP,SCP не могу отослать файл, поясните !"

Отправлено revox , 12-Май-08 16:07 
Имеем такую ситуацию: две машины (Host и Remote)  под FreeBsd 6.3 нуждаются в передаче файлов zip файлов между ними в 4,5 и в 6 часов ночи.

Начинаем с организации пользователей. На каждой из машин организуем  пользователя user  в группе usergroup с паролем userpass. Так же он включен в wheels. В директории /usr/home/user  на host прописываем файл .netrc  c соотв. указаниями. На машине remote запускаем ftpd. На машине Host делаем командный файл go (с правами user 700) след. вида

#!/bin/sh
Prompt
# для контроля запуска
touch  already
ftp remote < text.txt

Файл text.txt содержит следуощее:

put /usr/home/user/1.zip

Оба файла имеют владельцем user  с правами 700. Файл 1.zip имеет владельца user c правами 660.

Начинаем пробовать
1.    При запуске  ./go c консоли пользователем user все  работает нормально, файл передается.
2.     При запуске из сron  ( в файл crontab внесена строка  n  m  * * *  user  /usr/home/user/go)  передачи  не происходит хотя  файл already создается.


Устав от нелепости происходящего ( раннее передача по Ftp похожими скриптами  долго работала на ASP Linux) и подгоняемый сроками решил использовать ssh.

Прочитав http://www.opennet.me/DOCS/use_ssh и http://www.crocodile.sumy.ua/articles/8
взялся  за  scp.  
Запускаем  sshd на машинах.  Запускаем  ssh-keygen  от имени  user  ( ssh-ketgen  –b 1024  –t dsa ) и изготовляем ключи  my и my.pub. Файл my.pub копируется  в файл authorized_keys владельцем которого является  user с правами 700. Файл authorized_keys копируем на машину remote и размещаем в каталоге /usr/home/user/.ssh  владелец которого user  
с правами 700. ( благо ftp мы подняли ранее ).
На машине host создаем файл go1 который содержит в себе строку
scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip и пытаемся осуществить передачу. В место ожидаемого  получаем password:...  И в последующие разы тоже. То есть обещанного не получается. Обидно и стыдно ....

Подскажите, желательно по обоим случаям, где искать косяк. Сроки прошли, терпение иссякает, помогите ребята. Я знаю что не откажете …


Содержание

Сообщения в этом обсуждении
"FTP,SCP не могу отослать файл, поясните !"
Отправлено Артемий Васюков , 12-Май-08 18:49 
>[оверквотинг удален]
>700. Файл authorized_keys копируем на машину remote и размещаем в каталоге
>/usr/home/user/.ssh  владелец которого user
>с правами 700. ( благо ftp мы подняли ранее ).
>На машине host создаем файл go1 который содержит в себе строку
>scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip и пытаемся осуществить передачу. В место ожидаемого  получаем
>password:...  И в последующие разы тоже. То есть обещанного не
>получается. Обидно и стыдно ....
>
>Подскажите, желательно по обоим случаям, где искать косяк. Сроки прошли, терпение иссякает,
>помогите ребята. Я знаю что не откажете …

1. ssh-keygen -t rsa, а не dsa (ИМХО)
2. ssh-keygen + ssh-copy-id ИМХО лучше подходит для выполнения задач аутентификации по ключу, чем выполнение манипуляций руками.
3. Я бы проверил в sshd_config следующие строчки:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Gennadi , 12-Май-08 21:42 
>[оверквотинг удален]
>>700. Файл authorized_keys копируем на машину remote и размещаем в каталоге
>>/usr/home/user/.ssh  владелец которого user
>>с правами 700. ( благо ftp мы подняли ранее ).
>>На машине host создаем файл go1 который содержит в себе строку
>>scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip и пытаемся осуществить передачу. В место ожидаемого  получаем
>>password:...  И в последующие разы тоже. То есть обещанного не
>>получается. Обидно и стыдно ....
>>
>>Подскажите, желательно по обоим случаям, где искать косяк. Сроки прошли, терпение иссякает,
>>помогите ребята. Я знаю что не откажете …

Попробуй этот скрипт:

=====================================================================================
#!/bin/bash
$USER="user"
$HOME="/home/user"
FILE="1.zip"

if [ ! -f  $HOME/.ssh/id_rsa ]
then
ssh-keygen -t rsa
fi

cat $HOME/.ssh/id_rsa.pub | ssh $USER@backup_server 'sh -c "cat - >>~/.ssh/authorized_keys2"'

scp -r $HOME/$FILE $USER@router:$HOME
=====================================================================================


"FTP,SCP не могу отослать файл, поясните !"
Отправлено revox , 14-Май-08 13:02 
>[оверквотинг удален]
>
>if [ ! -f  $HOME/.ssh/id_rsa ]
>then
>ssh-keygen -t rsa
>fi
>
>cat $HOME/.ssh/id_rsa.pub | ssh $USER@backup_server 'sh -c "cat - >>~/.ssh/authorized_keys2"'
>
>scp -r $HOME/$FILE $USER@router:$HOME
>=====================================================================================

Спасибо за ответ.
Выполнено.
Результата нет.

В текс скрипта внесены поправки:
Строка 1 У меня bash лежит /usr/local/bin/bash/
и первая строка поправлена на /usr/local/bin/bash/

Строка 2 USER - backuper. Стока изменена на $USER="backuper"

Строка 3 $HOME="/home/user" Изменено на $HOME="/usr/home/user/backuper"

Строка 4 Изменено на $FILE="1.zip" исходя из послед. текста


Строка 11 @backup_server заменено на реальный IP
Строка 12 @router заменено на реальный IP, тот же что строчкой выше

Изменения вносильсь по 1 строчке и скрипт запускался.

Ошибки : стр. 2 backuper=backuper command not found
         стр. 3 /home/backuper=/home/backuper command not found
         стр. 5 =1.zip command not found
         стр. 8  syntax error near unexpected token `then`
Результата нет, смысл скрипта не ясен

Посоветуйте что-нибудь еще, пожалуйта


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Arpo , 14-Май-08 13:07 
>[оверквотинг удален]
>command not found
>         стр. 5 =1.zip
>command not found
>         стр. 8  
>syntax error near unexpected token `then`
>Результата нет, смысл скрипта не ясен
>
>Посоветуйте что-нибудь еще, пожалуйта
>
>

Вам что религия не позволяет perl+ftp использовать или любите себя мучать?


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Gennadi , 15-Май-08 14:46 
>Посоветуйте что-нибудь еще, пожалуйта
>
>

Запарился....  Поправил....

========================================================================
#!/usr/local/bin/bash
USER="backuper"
HOME="/usr/home/user/backuper"
FILE="/usr/home/user/1.zip"
SERVER="реальный IP"
if [ ! -f  $HOME/.ssh/id_rsa ]
then
ssh-keygen -t rsa
fi

cat $HOME/.ssh/id_rsa.pub | ssh $USER@$SERVER 'sh -c "cat - >>~/.ssh/authorized_keys2"'

scp -r $HOME/$FILE $USER@$SERVER:$HOME

================================================================================


"FTP,SCP не могу отослать файл, поясните !"
Отправлено revox , 14-Май-08 12:38 
>[оверквотинг удален]
>>Подскажите, желательно по обоим случаям, где искать косяк. Сроки прошли, терпение иссякает,
>>помогите ребята. Я знаю что не откажете …
>
>1. ssh-keygen -t rsa, а не dsa (ИМХО)
>2. ssh-keygen + ssh-copy-id ИМХО лучше подходит для выполнения задач аутентификации по
>ключу, чем выполнение манипуляций руками.
>3. Я бы проверил в sshd_config следующие строчки:
>RSAAuthentication yes
>PubkeyAuthentication yes
>AuthorizedKeysFile .ssh/authorized_keys

Спасибо за ответ
По пунктам

1 выполнено. правда -dsa тоже никто не отключал
2 принято к сведению, использовано
3 Выполнено.

результата нет. вернее такой-же как и был

Подскажи что-нибуть еще ... Пожалуйсиа :(



"FTP,SCP не могу отослать файл, поясните !"
Отправлено Arpo , 14-Май-08 12:50 

Посмотри может поможет. Это мой скрипт. делает тоже самое.


#!/bin/perl

use Net::FTP

#SKript for FTP file transfer

#Assign hostname(ip),user and pass.
print;
my $hostname = "xxx.xxx.xxx.xxx";
my $user = 'ftp_user';
my $pass = 'ftp_pass';
my $file = $ARGV[0];
my $dest = '/ftp/dest';


#Connect and Login to FTP.
$ftp = Net::FTP->new($hostname) or die;
$ftp->login($user, $pass) or die;
$ftp->binary() or die;

$ftp->put("$file", "$dest") or die;
$ftp->quit() or die;



"FTP,SCP не могу отослать файл, поясните !"
Отправлено Артемий Васюков , 14-Май-08 12:54 
>[оверквотинг удален]
>my $dest = '/ftp/dest';
>
>
>#Connect and Login to FTP.
>$ftp = Net::FTP->new($hostname) or die;
>$ftp->login($user, $pass) or die;
>$ftp->binary() or die;
>
>$ftp->put("$file", "$dest") or die;
>$ftp->quit() or die;

Ой, как сложно-то всё!!!
У меня только один вопрос: А ВЫ ЧАСОМ КОГДА КЛЮЧ ГЕНЕРИЛИ ПАРОЛЬ НА НЕГО ЗАДАВАЛИ ИЛИ "ПРОСТО ЖАЛИ ENTER"? Если Вы задали непустой пароль то его у Вас ОБЯЗАТЕЛЬНО спросят, даже если есть авторизация по ключу.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Arpo , 14-Май-08 12:57 
>[оверквотинг удален]
>>$ftp->binary() or die;
>>
>>$ftp->put("$file", "$dest") or die;
>>$ftp->quit() or die;
>
>Ой, как сложно-то всё!!!
>У меня только один вопрос: А ВЫ ЧАСОМ КОГДА КЛЮЧ ГЕНЕРИЛИ ПАРОЛЬ
>НА НЕГО ЗАДАВАЛИ ИЛИ "ПРОСТО ЖАЛИ ENTER"? Если Вы задали непустой
>пароль то его у Вас ОБЯЗАТЕЛЬНО спросят, даже если есть авторизация
>по ключу.

Это вы называете сложно?? Сложно это скрипт который вызывает этот для передачи фаилов.:)



"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 13:12 
>[оверквотинг удален]
>700. Файл authorized_keys копируем на машину remote и размещаем в каталоге
>/usr/home/user/.ssh  владелец которого user
>с правами 700. ( благо ftp мы подняли ранее ).
>На машине host создаем файл go1 который содержит в себе строку
>scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip и пытаемся осуществить передачу. В место ожидаемого  получаем
>password:...  И в последующие разы тоже. То есть обещанного не
>получается. Обидно и стыдно ....
>
>Подскажите, желательно по обоим случаям, где искать косяк. Сроки прошли, терпение иссякает,
>помогите ребята. Я знаю что не откажете …

user@host % ssh-keygen
На запрос Passphrase жмём Enter (оставляем пустой)

user@host % scp my.pub user@remote:.

user@remote % cat my.pub > .ssh/authorized_keys (если его нет, или он пустой, или в нём старые и ненужные ключи)

user@host % cat ./go1
#!/bin/sh
/usr/bin/scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip

user@host % crontab -l
n m * * * /usr/home/user/go1


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Артемий Васюков , 14-Май-08 13:14 
>[оверквотинг удален]
>user@host % scp my.pub user@remote:.
>
>user@remote % cat my.pub > .ssh/authorized_keys (если его нет, или он пустой, или в нём старые и ненужные ключи)
>
>user@host % cat ./go1
>#!/bin/sh
>/usr/bin/scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip
>
>user@host % crontab -l
>n m * * * /usr/home/user/go1

Я думаю, что ошибка именно в том, что пароль не пустой.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено skgennady , 14-Май-08 13:21 
А из крона разве будут доступны ssh ключи? Не для этой цели ssh-agent придуман?


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 13:51 
>А из крона разве будут доступны ssh ключи? Не для этой цели
>ssh-agent придуман?

Будут.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Артемий Васюков , 14-Май-08 14:21 
>>А из крона разве будут доступны ssh ключи? Не для этой цели
>>ssh-agent придуман?
>
>Будут.

Если их указать явно.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 15:17 
>>>А из крона разве будут доступны ssh ключи? Не для этой цели
>>>ssh-agent придуман?
>>
>>Будут.
>
>Если их указать явно.

Each user has their own crontab, and commands in any given crontab will be executed as the user who owns the crontab.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Артемий Васюков , 14-Май-08 15:23 
>>>>А из крона разве будут доступны ssh ключи? Не для этой цели
>>>>ssh-agent придуман?
>>>
>>>Будут.
>>
>>Если их указать явно.
>
>Each user has their own crontab, and commands in any given crontab
>will be executed as the user who owns the crontab.

Так-то оно так, но лучше все-таки указывать ключ явно.
Это сугубо мое ИМХО.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено skgennady , 14-Май-08 15:24 
>>>>А из крона разве будут доступны ssh ключи? Не для этой цели
>>>>ssh-agent придуман?
>>>
>>>Будут.
>>
>>Если их указать явно.
>
>Each user has their own crontab, and commands in any given crontab
>will be executed as the user who owns the crontab.

Речь же идет о доступности пользовательских ключей для крон, а не команд. Насколько я понимаю, ключи пользователя крону не доступны. Для доступности и запуска программ от имени и с ключами юзера и используют ssh-agent. А иначе зачем ssh пароль у юзера спрашивает, если ключи доступны?


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 15:35 
>[оверквотинг удален]
>>>>Будут.
>>>
>>>Если их указать явно.
>>
>>Each user has their own crontab, and commands in any given crontab
>>will be executed as the user who owns the crontab.
>
>Речь же идет о доступности пользовательских ключей для крон, а не команд.
>Насколько я понимаю, ключи пользователя крону не доступны. Для доступности и
>запуска программ от имени и с ключами юзера и используют ssh-agent.

Что вам непонятно в приведённой цитате из мана?

>А иначе зачем ssh пароль у юзера спрашивает, если ключи доступны?

Об этом говорилось выше - скорее всего passphrase не пустой.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено skgennady , 14-Май-08 15:55 
>Что вам непонятно в приведённой цитате из мана?

Там про рабочее окружение не говорится.
>
>>А иначе зачем ssh пароль у юзера спрашивает, если ключи доступны?
>
>Об этом говорилось выше - скорее всего passphrase не пустой.

Но он пустой, по утверждению автора топика. Если все, как вы говорите, то почему же не работает?


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 16:15 
>>Что вам непонятно в приведённой цитате из мана?
>
>Там про рабочее окружение не говорится.

А причём, в данном конкретном случае, рабочее окружение?
scp запускается кроном от имени пользователя user и соотв. от имени этого же пользователя ломится на remote. Уже там, на remote, проверяется ключ, так что на окружение локального сервера (host) нам совершенно наплевать.

>>
>>>А иначе зачем ssh пароль у юзера спрашивает, если ключи доступны?
>>
>>Об этом говорилось выше - скорее всего passphrase не пустой.
>
>Но он пустой, по утверждению автора топика. Если все, как вы говорите,
>то почему же не работает?

А хрен его знает. Это уж автор пусть разбирается. Всё уже разжевали до неприличия.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено revox , 14-Май-08 17:17 
>[оверквотинг удален]
>>>
>>>>А иначе зачем ssh пароль у юзера спрашивает, если ключи доступны?
>>>
>>>Об этом говорилось выше - скорее всего passphrase не пустой.
>>
>>Но он пустой, по утверждению автора топика. Если все, как вы говорите,
>>то почему же не работает?
>
>А хрен его знает. Это уж автор пусть разбирается. Всё уже разжевали
>до неприличия.

Плдскажите ГДЕ и ЧТО вы разжевали и до какого неприличия. Пока ничего кроме жеванных соплей нет.

Поясните, пожалуйста, в какой файл добавить какую строку и какое права дать на файл и кому. Запускаться все должно именно из крона (подскажите более удобный (подходящий)путь запуска программ). Пароль у пользователя user не пустой, пустая pasfrase . Все попытки переслать по SCP делались ВРУЧНУЮ.
По FTP неудачна пересылка про CRON.
Или запускать передачу файла из под рута ? И с пустым паролем ? К сожалению пока обсуждение более пожоже на меряние сами знаете чем, чем на желанее помочь.
Рабята, пожалуйста серьезнее...


Господа, обьясните, ЧТО вы разжевали и конкретно в каком месте ?


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Arpo , 14-Май-08 17:22 
>[оверквотинг удален]
>более удобный (подходящий)путь запуска программ). Пароль у пользователя user не пустой,
>пустая pasfrase . Все попытки переслать по SCP делались ВРУЧНУЮ.
>По FTP неудачна пересылка про CRON.
>Или запускать передачу файла из под рута ? И с пустым паролем
>? К сожалению пока обсуждение более пожоже на меряние сами знаете
>чем, чем на желанее помочь.
>Рабята, пожалуйста серьезнее...
>
>
>Господа, обьясните, ЧТО вы разжевали и конкретно в каком месте ?

Не поленюсь и снова спрошу готовый вариант на perl-е религия не позволяет исползовать?? Возми подгони под себя и живи спокойно.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено revox , 14-Май-08 17:23 
>[оверквотинг удален]
>более удобный (подходящий)путь запуска программ). Пароль у пользователя user не пустой,
>пустая pasfrase . Все попытки переслать по SCP делались ВРУЧНУЮ.
>По FTP неудачна пересылка про CRON.
>Или запускать передачу файла из под рута ? И с пустым паролем
>? К сожалению пока обсуждение более пожоже на меряние сами знаете
>чем, чем на желанее помочь.
>Рабята, пожалуйста серьезнее...
>
>
>Господа, обьясните, ЧТО вы разжевали и конкретно в каком месте ?

Что я сделал неверно, в каком месте ? FTP пересылка по данному агоритму продолжалась более 3 лет, никогда проблем НЕ БЫЛО. С SCP


"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 17:24 
>[оверквотинг удален]
>более удобный (подходящий)путь запуска программ). Пароль у пользователя user не пустой,
>пустая pasfrase . Все попытки переслать по SCP делались ВРУЧНУЮ.
>По FTP неудачна пересылка про CRON.
>Или запускать передачу файла из под рута ? И с пустым паролем
>? К сожалению пока обсуждение более пожоже на меряние сами знаете
>чем, чем на желанее помочь.
>Рабята, пожалуйста серьезнее...
>
>
>Господа, обьясните, ЧТО вы разжевали и конкретно в каком месте ?

По FTP речь с моей стороны вообще не идёт.

user@host % ssh-keygen
На запрос Passphrase жмём Enter (оставляем пустой)

user@host % scp my.pub user@remote:.

user@remote % cat my.pub > .ssh/authorized_keys (если его нет, или он пустой, или в нём старые и ненужные ключи)

user@host % cat ./go1
#!/bin/sh
/usr/bin/scp /usr/home/user/1.zip user@remote:/usr/home/user/1.zip

user@host % crontab -l
n m * * * /usr/home/user/go1

Что в этом неясно?


"FTP,SCP не могу отослать файл, поясните !"
Отправлено revox , 14-Май-08 17:26 
>[оверквотинг удален]
>более удобный (подходящий)путь запуска программ). Пароль у пользователя user не пустой,
>пустая pasfrase . Все попытки переслать по SCP делались ВРУЧНУЮ.
>По FTP неудачна пересылка про CRON.
>Или запускать передачу файла из под рута ? И с пустым паролем
>? К сожалению пока обсуждение более пожоже на меряние сами знаете
>чем, чем на желанее помочь.
>Рабята, пожалуйста серьезнее...
>
>
>Господа, обьясните, ЧТО вы разжевали и конкретно в каком месте ?

Что я сделал неверно, в каком месте ? FTP пересылка по данному агоритму продолжалась более 3 лет, никогда проблем НЕ БЫЛО. С SCP завазался впервые, рекомендации статей выполнены точно, но результат отрицательный. Всего-то надо чтоб тот кто В ТЕМЕ подсказал...


"FTP,SCP не могу отослать файл, поясните !"
Отправлено revox , 14-Май-08 17:34 
>[оверквотинг удален]
>>чем, чем на желанее помочь.
>>Рабята, пожалуйста серьезнее...
>>
>>
>>Господа, обьясните, ЧТО вы разжевали и конкретно в каком месте ?
>
>Что я сделал неверно, в каком месте ? FTP пересылка по данному
>агоритму продолжалась более 3 лет, никогда проблем НЕ БЫЛО. С SCP
>завазался впервые, рекомендации статей выполнены точно, но результат отрицательный. Всего-то надо
>чтоб тот кто В ТЕМЕ подсказал...

Извините, написал предыдущее сообщение ДО того как прочитал Ваше. Сейчас попробую точно как Вы сказали в последний раз. Только одно, из под какого пользователя запускать ssh-keygen, из под рута или юзера ? В конечном счете все должно работать из под CRON.



"FTP,SCP не могу отослать файл, поясните !"
Отправлено Nimdar , 14-Май-08 17:36 
>[оверквотинг удален]
>>
>>Что я сделал неверно, в каком месте ? FTP пересылка по данному
>>агоритму продолжалась более 3 лет, никогда проблем НЕ БЫЛО. С SCP
>>завазался впервые, рекомендации статей выполнены точно, но результат отрицательный. Всего-то надо
>>чтоб тот кто В ТЕМЕ подсказал...
>
>Извините, написал предыдущее сообщение ДО того как прочитал Ваше. Сейчас попробую точно
>как Вы сказали в последний раз. Только одно, из под какого
>пользователя запускать ssh-keygen, из под рута или юзера ? В конечном
>счете все должно работать из под CRON.

В данном конкретном случае забудьте о существовании рута вообще. Всё выполняется только из-под пользователей.


"FTP,SCP не могу отослать файл, поясните !"
Отправлено angra , 17-Май-08 05:27 
Добавьте в scp явное указание файла с ключом:
-i identity_file
             Selects the file from which the identity (private key) for RSA authentication is read.  This option is directly passed to ssh(1).

Также полезным будет -v или даже -vvv, выведет массу отладочной информации, которая может подсказать в чем проблема.

По поводу ftp стоит глянуть на пакет ncftp с его ncftpput и ncftpget