Александр Борисов, 8 мая 2014
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-ключ – это два файла: 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/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 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 доступ к удалённой базе данных.
Команда scp позволяет скопировать файл по протоколу SSH, используя те же механизмы авторизации, что и команда ssh. Например, команда scp data.yml www@example.com:/home/www/
скопирует файл data.yml в каталог /home/www на сервере example.com.
Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.
Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11