пятница, 10 июня 2011 г.

Копирование файлов через SSH


Очень удобно оказывается копировать файлы используя консоль SSH

копирование с моей консоли на сервер
tar -zc -f - srcdir | ssh -C dstuser@dsthost.ru "cat > /home/dstuser/mybackup.tar.gz"
Архиватор будет выдавать архив в stdout (опция -f -), который через pipe-конвейер попадает в stdin SSH-клиента, а оттуда — прямо в сетевую SSH-сессию

или вот вариант копирование с сервера в мою консоль:
ssh -C srcuser@srchost "tar -zc -f - srcdir" |
dd of=/home/dstuser/mybackup.tar.gz

опять на сервер
dd if=/dev/cdrom bs=2048 | ssh -C dstuser@dsthost.ru
"dd of=/home/dstuser/mycd.iso"
и так далее можно извращаться как угодно :)


я чтобы не набирать постоянно пароли я сгенерю пару ключей:

$> ssh-keygen -t rsa

Утвердительно отвечаем на все вопросы и вводим пустую passphrase два раза, чтобы не вводить ее в качестве пароля (тем не менее, мы хорошо защищены асинхронным криптоалгоритмом, ключи для которого были сгенерированы только что). Затем кладем публичный ключ на удаленную машину:

$> cat ~/.ssh/id_rsa.pub | ssh dstuser@dsthost
"mkdir -p ~/.ssh && cat >>
~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600
~/.ssh/authorized_keys"

В ходе этой процедуры мы ввели пароль в последний раз, больше не потребуется. Обращаю особое внимание на смену прав на публичный ключ и каталог, содержащий его на стороне сервера. sshd — умный демон, и если доступ к публичному ключу получит кто-нибудь, кроме соответствующего пользователя, пользоваться ключом станет невозможно.

Комментариев нет:

Отправить комментарий