SSH для веб-разработчика

Александр Борисов, 8 мая 2014

SSH – это сетевой протокол для удалённого управления операционной системой и организации туннелирования. Данные, передаваемые по протоколу SSH шифруются.

Соединение с удалённым сервером по протоколу SSH

В Linux-подобных операционных системах SSH-клиент, как правило, предустановлен, и называется ssh. Для Windows можно вопспользоваться, например PuTTY.

Чтобы соединиться с удалённым сервером example.com, наберите в терминале ssh example.com

По-умолчанию будет использован порт 22 и имя пользователя, от которого вы запустили ssh. Например, если я работаю под пользователем alex, то команда ssh example.com будет означать тоже самое, что и ssh alex@example.com -p 22.

SSH-ключи

Несмотря на то, что при подключении к удалённому серверу можно использовать механизм авторизации по логину и паролю, обычно используется авторизация по SSH-ключу.

SSH-ключ – это два файла: id_rsa.pub (открытая часть ключа) и id_rsa (закрытая часть ключа). Чтобы создать SSH-ключ на Linux или на Mac, наберите в терминале ssh-keygen. По-умолчанию, на Linux или на Mac ключ хранится в каталоге ~/.ssh. Когда вас просят дать ключ для того, чтобы предоставить вам доступ по SSH, передавайте открытую часть ключа (id_rsa.pub).

Поясню на примере, как работает авторизация с помощью SSH-ключа. Пусть у нас есть Боб и Алиса, и Алиса хочет отправить Бобу посылку так, чтобы Боб её смог открыть, а любопытные работники почты – нет. Сначала Алиса отправляет Бобу посылку, закрытую своим замком (открытой частью ключа). Получив посылку, Боб вешает на неё свой замок, и отправляет послыку обратно Алисе. При получении посылки Алиса снимает свой замок ключом от него (закрытой частью ключа), и отправляет посылку обратно Бобу. Боб получает посылку, закрытую своим замком, и успешно открывает её. Важный момент: ключи от своих замков (закрытые части ключей) ни Боб, ни Алиса никому не передавали, в то время как сами замки (открытые части ключей) спокойно ходили через руки сотрудников почты.

При авторизации по протоколу SSH с помощью SSH-ключей вам не нужно будет вводить пароль от сервера. Более того, на сервере для одной учётной записи пользователя можно указать несколько SSH-ключей для входа (в файле ~/.ssh/authorized_keys). Это позволяет давать доступ к одной учётке на сервере сразу нескольким людям, не сообщая им один и тот же пароль.

Конфигурационный файл ssh-клиента

Иногда системные администраторы меняют номер порта, на котором работает SSH-сервер. Также, на разных серверах учётки для доступа по SSH могут называться по-разному. Чтобы не вводить эти параметры вручную, можно использовать конфигурационный файл ssh-клиента ~/.ssh/config:

# помощь http://linux.die.net/man/5/ssh_config
#
Host example.com
User somebody
Port 2222

Теперь, команда ssh example.com будет аналогична ssh somebody@example.com -p 2222

SSH-туннелирование

Часто бывает нужно выполнить какой-то запрос к базе данных на сервере. Если вы хотите сделать это из своего любимого графического клиента на своём компьютере, то вам поможет ssh-туннелирование. Например, команда ssh example.ru -L 5474:192.168.0.10:5432, "пробросит" на ваш порт 5474 вашего компьютера порт 5432 компьютера с адресом 192.168.0.10, который доступен с example.com. Теперь вам нужно настроить соединение в любимом графическом клиенте на localhost:5474.

Полный доступ на сервер в одну команду

Создайте файл ~/.bash_profile с таким содержимым:

example_server()
{
  ssh example.com -L 5474:192.168.0.10:5432
}

Выполните команду source ~/.bash_profile или перезагрузите терминал.

Теперь у вас терминале доступна команда example_server, которая открывает терминал на удалённом сервере и открывает по адресу localhost:5474 доступ к удалённой базе данных.

Копирование файлов по протоколу SSH с помощью команды scp

Команда scp позволяет скопировать файл по протоколу SSH, используя те же механизмы авторизации, что и команда ssh. Например, команда scp data.yml www@example.com:/home/www/ скопирует файл data.yml в каталог /home/www на сервере example.com.

Смотрите также


comments powered by Disqus
Блог Цифрономики

Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.

@cifronomika
RSS


Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11