LINUX.ORG.RU

Выполнение scp через ssh

 , ,


0

1

Не подскажите как правильно написать кусок кода для bash скрипта:

Пример

ssh user@host <<EOF
scp /file user2@host2:~/
EOF

Те открыть ssh соединение и на удаленном хосте выполнить scp. Авторизация строго по паролю.

При выполнении скрипта спрашивает пароль на ssh, а вот пароль на scp уже не спрашивает, как правильно написать?

Спасибо


ssh -t user@host scp /file user2@host2

Если хочется не вводить пароли, то expect, но лучше все-таки ключи (возможно с форвардом агента)

maloi ★★★★★ ()
Ответ на: комментарий от at

maloi уже пояснил, что EOF в таком скрипте не нужны.
От слова «совсем»
Всё, что нужно выполнить на удалённом хосте можно передавать как параметры ssh.
Теперь пароль к scp запрашивается?

zolden ★★★★★ ()
Ответ на: комментарий от zolden

В целом-то, можно сделать scp user1@host1:path user2@host2:/to, но у меня никак не удается заставить принять пароль, даже с -o RequestTTY=force, хотя запрос вижу =\

Вывод: пусть юзает ключи :)

YAR ★★★★★ ()
Последнее исправление: YAR (всего исправлений: 1)

sshpass в помощь.

Deleted ()
Ответ на: комментарий от YAR

у меня тоже не получалось чтобы scp работал c удалённого хоста на удалённый хост без ключей, хотя в мане ничего такого в явном виде не упоминается

zolden ★★★★★ ()
Ответ на: комментарий от zolden

maloi уже пояснил, что EOF в таком скрипте не нужны.

Я не ТС, но если «Авторизация строго по паролю.», ИМХО, без expect-а не обойтись

at ★★ ()
Ответ на: комментарий от at

Дело в том что expect-а нет, и поставить не представляется возможным, безопасность строго по паролю. Может есть еще варианты, заставить scp запрашивать пароль???

redm ()
Ответ на: комментарий от redm

что значит «заставить scp запрашивать пароль»?
он по прежнему не запрашивается из скрипта, но запрашивается если зайти руками?

zolden ★★★★★ ()
$ lftp sftp://user1:password1@host1 -e 'get /file.txt -o sftp://user2:password2@host2/home/user2/file.txt'
anonymous ()
Ответ на: комментарий от CHIPOK

У меня Ваш код пишет:

Спрашивает пароль на ssh

после ввода Host key verification failed, lost conn

Думаю что, после соединения с удаленным хостом через ssh он пытается выполнить scp по ключам (может это дефолтное решение), а у меня ключей нет.

Как заставить делать scp по паролю??

redm ()
Ответ на: комментарий от redm

если нет ключа то он должен спросить пароль, ты его вводишь руками, если хочешь не вводить то используй sshpass. Все проблема не в скрипте а настройке твого ссх на удаленном хосте.

CHIPOK ★★★ ()
Ответ на: комментарий от CHIPOK

Вот мой конфиг на принемающей стороне, если не сложно глянь что не так:

Protocol 2

Port 22

ListenAddress ::

AllowTcpForwarding no

GatewayPorts no

X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes

PrintMotd no

KeepAlive yes

SyslogFacility auth LogLevel info

# Host private key files # Must be on a local disk and readable only by the root user (root:sys 600). HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key

ServerKeyBits 768

KeyRegenerationInterval 3600

StrictModes yes

LoginGraceTime 600

MaxAuthTries 6 MaxAuthTriesLog 3

PermitEmptyPasswords no

# To disable tunneled clear text passwords, change PasswordAuthentication to no. PasswordAuthentication yes

PAMAuthenticationViaKBDInt yes

PermitRootLogin yes

Subsystem sftp internal-sftp

IgnoreRhosts yes RhostsAuthentication no

RhostsRSAAuthentication no

# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication. #IgnoreUserKnownHosts yes

RSAAuthentication yes

redm ()
Ответ на: комментарий от redm

Ты себе если сложно представить на бумажке нарисуй то что хочешь достичь. Я понимаю ситуацию так, есть команда вида: ssh user@host 'scp /file user2@host2:~'. Что я бы сделал в этом случае.

1) Генерируем на компьюторе host ключ
2) Копируем его на компьютер host2 с помощью ssh-copy-id
2) На компьютере host2 включаем авторизацию по ключу

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

не забываем перезапустить ссх демон.

4) Пробуем выполнить скрипт.

CHIPOK ★★★ ()
Ответ на: комментарий от CHIPOK

Прошу прощения, я просто не точно обрисовал задачу.

Стоит задача раз в неделю или две собирать макет из 10-30 серверов (объединенных в сеть), для тестирования поставленных задач.

ssh user@host 'scp /file user2@host2:~'

Этот код как раз и предназначался для копирования публичных ключей м-ду серверами, при развертывании макета.

Т.Е. Подключиться в цикле к каждому серверу и сгенерировать RSA ключ получается. А вот потом в цикле скопировать открытые ключи (обсуждаемый код) м-ду серверами уже не получается.

Руками обойти все сервера можно, но хотелось бы автоматики. Спасибо

redm ()
Ответ на: комментарий от zolden

у меня тоже не получалось чтобы scp работал c удалённого хоста на удалённый хост без ключей, хотя в мане ничего такого в явном виде не упоминается

-3 ?

melkor217 ★★★★★ ()
30 июня 2015 г.
Ответ на: комментарий от redm

Host key verification failed, lost conn
Т.Е. Подключиться в цикле к каждому серверу и сгенерировать RSA ключ получается. А вот потом в цикле скопировать открытые ключи (обсуждаемый код) м-ду серверами уже не получается.

http://www.facepalm.org/
Ну у тебя же ключи меняются, поэтому ошибка, ёпт.
Сделай ещё `rm ~/.ssh/known_hosts`, или полуркай как отключить сохранение/проверку открытого ключа сервера, есть такая опция, 100%.

yurikoles ★★★ ()
Последнее исправление: yurikoles (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.