If i help You, send me BTC please 1CJGz4UGyL7hTjPeN8j7fu9LRmmWiWSRHi

Использование ssh и scp в Ubuntu.

Постов 117 из 176

В сети очень много материала о замечательной команде ssh. В этом обзоре я опишу несколько примеров собственного использования, лишь объединив найденное на просторах Internet.

Установка ssh в Ubuntu.

В Система-Администрирование-Менеджер пакетов Synaptic ищем и отмечаем для установки пакет ssh — secure shell client and server (metapackage). Либо устанавливаем из командной строки:

sudo apt-get install ssh

Конфигурационный файл лежит в /etc/ssh/sshd_config, и в нем для версии Ubuntu 10.04 настроено по-умолчанию все, что я хочу использовать.
Запуск\остановка\перезапуск сервиса (после внесения в конфиг правок): sudo service ssh start\stop\restart.
Теперь об использовании.

1. ssh и scp без пароля.

Нужно много для чего. Мне нужно для автоматизации скриптом внесения изменений в некоторых системных файлах, перезаписи /etc/crontab и т.п.
Для этого один и тот же пользователь (usefree) должен быть на обоих компьютерах (host1, remotehost) и для него необходимо сгенерировать пару ключей:

ssh-keygen -t rsa

Вообще бы нужно задавать пароли, но в этом примере я не буду, нажав «Ввод» на предложение коммандной строки ввести пароль. И далее выполняем команду:

ssh-copy-id -i ~/.ssh/id_rsa [email protected]

где
usefree — пользователь, под которым будем в дальнейшем авторизоваться;
remotehost — имя, или IP-адрес удаленного компьютера.
Теперь для доступа к компьютеру remotehost без пароля достаточно выполнить:

Для возможности подключаться с remotehost на host1 также без пароля можно скопировать приватный и публичный ключи с host1  на remotehost:

scp /home/usefree/.ssh/id_rsa* remotehost:/home/usefree/.ssh/

и записать данные о ключах в файл authorized_keys локального компьютера, выполнив с remotehost:

ssh-copy-id -i ~/.ssh/id_rsa usefree@host1

Если возникает ошибка:

Agent admitted failure to sign using the key,

то на локальной машине нужно еще выполнить:

ssh-add

Логично, что для использования в скрипте возможности менять конфигурационные файлы на удаленном компьютере, доступные только для суперпользователя, сам скрипт нужно запускать от имени суперпользователя и пару ключей нужно генерировать под суперпользователем. Чтобы обойти это ограничение достаточно в конце файла /etc/sudoers на remotehost прописать в конце строку:

usefree ALL = (ALL) NOPASSWD: ALL

И перезагрузить сервис sudo

sudo service sudo restart

Теперь с локальной машины возможно выполнение в скрипте без запроса подтверждения строк типа:

ssh [email protected] 'sudo service smbd restart

2. Копирование файлов через терминал с помощью scp.

Есть на самом деле очень подробная инструкция на английском, приведу фрагмент.
Копирование файла «foobar.txt» с удаленного компьютера (remotehost) на локальный:

scp [email protected]:foobar.txt /some/local/directory

Копирование файла «foobar.txt» с локального компьютера на удаленный:

scp /some/local/directory/foobar.txt [email protected]:/some/remote/directory

Копирование содержимого директории «foo» с локального компьютера на удаленный компьютер в директорию «bar»:

scp -r /some/local/directory/foo [email protected]:/some/remote/directory/bar

Копирование файла «foobar.txt» с удаленного компьютера remotehost1 на удаленный компьютер remotehost2:

scp [email protected]:/some/remote/directory/foobar.txt \ 
[email protected]:/some/remote/directory/

3. Запуск графического приложения с трансляцией окна приложения с удаленного компьютера на локальный (на примере gedit с параметром).

ssh -X [email protected] 'gedit /home/file'

Примечательно, что сам gedit запустится на удаленном компьютере, а окно программы будет транслироваться на локальный.

4. Трансляция речи в локальный микрофон на удаленных динамиках (ну так, чисто охрану попугать, или секретаршу 🙂 )

arecord -f dat | ssh -C [email protected] aplay -f dat

Вот и все, удачной работы с помощью ssh!)

,

Menu