7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Tools & Tips

SSH: что и как

Scroll to top
Read Time: 10 mins

Russian (Pусский) translation by Liliya (you can also view the original English article)

Многие веб-разработчики ежедневно используют SSH («Secure Shell») для управления своими серверами, резервного копирования файлов, удаленной работы и множества других задач. Сегодня я объясню, что такое SSH, сделаю краткий обзор истории и, наконец, научу вас, как настроить его на удаленном сервере или даже в вашей локальной сети. Давайте начнем!


Начальное объяснение

Если вы читаете это, скорее всего, вы хотя бы немного знакомы с терминалом (или в Windows, что-то вроде Cygwin). Если так, то вы поймете это быстрое функциональное объяснение SSH.

По сути, SSH использует сетевое соединение для входа в Терминал на другом компьютере.

Если вы не знакомы с Терминалом, есть много объяснений и руководств для начинающих по Терминалу, как здесь, на Nettuts +, так и в других местах. Сила SSH зависит от его простоты; предлагая вам доступ к терминалу другой машины, SSH переключается на поиск и дает вам полный контроль над удаленной машиной. Если вы понимаете силу Терминала и его непосредственное подключение к внутренней работе вашего локального компьютера, то вы понимаете силу SSH!


Краткая история

SSH был разработан в начальном состоянии в 1995 году. Основной разработчик, Tatu Ylonen, разработал его как первый безопасный способ администрирования удаленной системы UNIX. До SSH единственные существующие инструменты отправляли информацию, такую ​​как пароли, в виде открытого текста.


 Итак, как мне его использовать?

Существует миллион руководств по настройке SSH. Мы специально рассмотрим один метод сегодня. Перво-наперво, вы хотите убедиться, что у вас есть SSH в вашей системе.

  • Mac - версия OpenSSH поставляется с предустановленной.
  • Windows - следуйте инструкциям, подобным этой или этой, чтобы установить Cygwin и пакет «openssh».
  • Linux - OpenSSH, скорее всего, уже установлен, но если это не так, вы можете следовать тому же руководству, чтобы установить его.

Чтобы определить, установлен ли SSH, запустите `which ssh`. Если Терминал возвращает что-то вроде /usr/bin/ ssh, тогда вы готовы! В противном случае следуйте одному из этих руководств, чтобы установить его.Чтобы определить, установлен ли SSH, запустите `which ssh`. Если Терминал возвращает что-то вроде / usr / bin / ssh, тогда все готово! В противном случае следуйте одному из этих руководств, чтобы установить его.

В этой статье я предполагаю, что вы используете версию OpenSSH; Существуют некоторые различия в конфигурации, которые зависят от вашей версии SSH. Мы объясним, как настроить Mac для подключения к серверу MediaTemple с помощью одной команды SSH. После того, как на вашем компьютере установлен SSH, вам необходимо убедиться, что на целевом хосте включен SSH. SSH по умолчанию работает через порт 22; вы можете использовать инструмент командной строки, такой как nmap, чтобы пропинговать ваш сервер, чтобы определить, принимает ли порт 22 входящие соединения, например:

Конечно, у вас, вероятно, есть доступ к административному интерфейсу для сервера. Убедитесь, что вы просматриваете опции и включаете SSH. На сервере Mediatemple эта конфигурация находится под панелью управления сервером. Mediatemple SSH доступен по адресу root primarydomain.com. Вы можете добавлять пользователей в учетную запись, но для простоты мы будем использовать root primarydomain.com.

Как только SSH включен (и вы установили пароль администратора в администраторе вашего сервера), вы можете запустить следующую строку для SSH на вашем сервере.

... где primarydomain.com - ваш основной домен MediaTemple. Затем вам будет предложено ввести пароль (пароль root, который вы установили на панели управления). Если вы не используете MediaTemple, вы также можете напрямую подключиться к IP-адресу вашего сервера.

Если вы используете виртуальный хостинг, скорее всего, вы не будете входить в систему как root. Вместо этого вы войдете в систему с именем учетной записи пользователя. Например, если вы используете такой сервис, как Site5, вы можете войти в систему с именем пользователя на поддомене, например так:

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

После того как вы «зашли», вы можете выполнять команды и проходить по файловой системе в терминале. В зависимости от вашего уровня доступа, вы можете установить что-то на свой сервер с помощью команд apt-get или wget. Вы можете управлять своим сервером Apache, редактировать файлы конфигурации с помощью текстового редактора на основе терминала, просматривать журналы ошибок, очищать кэши, просматривать файлы непосредственно на сервере, чтобы убедиться, что они являются правильной версией, и выполнять множество других задач системного администрирования более низкого уровня. , А что если вы хотите сделать больше, быстрее с SSH?


Как я могу использовать это ... лучше?

Есть множество мощных вещей, которые SSH открывает вам. Мы пропустим некоторые из них (поскольку некоторые из них более связаны с системным администратором, например, с туннелированием) Но мы пройдемся по нескольким полезным приемам.

Супер-быстрый вход

Вы думаете про себя: «Кажется, должен быть более быстрый способ сделать это» Ты прав. И есть. Вместо того, чтобы запоминать свой домен, пароль и имя пользователя для каждого сервера, вы можете настроить несколько конфигураций, которые позволят вам ускорить процесс до чего-то подобного.

При правильной настройке вы можете запустить это, и вам не нужно вводить пароли, IP-адреса или длинные доменные имена! Опять же, мы будем предполагать, что вы входите на сервер MediaTemple. Сначала мы сгенерируем ключи ssh. Это в основном набор зашифрованных ключей, которые находятся в ~/.ssh на вашем локальном компьютере. У вас есть «открытый» ключ и «закрытый» ключ. Итак, обо всем по порядку, откройте новое окно терминала и создайте папку .ssh в вашем домашнем каталоге.

Далее вы сгенерируете свои ключи со следующей строкой. (Это прямо из документации MediaTemple.)

Эта строка сгенерирует ключ ssh типа rsa с 2048 битами (для безопасности) в указанном месте файла с указанным комментарием. Вам будет предложено ввести пароль, но он не является обязательным или необходимым; отсутствие пароля позволит автоматически войти в систему. Тип RSA предназначен для версии протокола SSH 1. Тип DSA предназначен для версии протокола 2. Узнайте у своего веб-сервера, какую версию они используют. После того, как ваши ключи сгенерированы, вы запустите это, чтобы убедиться, что для ваших настроек SSH установлены правильные разрешения.

Далее вы загрузите свой открытый ключ на свой сервер. Есть довольно много способов сделать это; этот путь также взят из документации MediaTemple.

Этот код выводит ваш id_rsa.pub через `|` (pipe) в следующую команду, которая является SSH в rootrnexample.com, где вы запустите эхо и объединение того, что вы передали в первой команде. Звучит немного сложно, поэтому есть несколько альтернативных способов справиться с этим. По сути, вам не понадобятся разрывы строк и ваш открытый ключ в отдельной строке в файле с именем authorized_keys на вашем сервере в каталоге ~ / .ssh /. Таким образом, если это первый или единственный ключ, который вы хотите использовать на своем сервере, вы можете запустить эту команду, чтобы скопировать его непосредственно в это место.

Эта строка в сущности говорит: «скопируйте этот первый файл через SSH на сервер в этом месте относительно моего текущего домашнего каталога»

Как только ваш авторизованный ключ содержит ваш открытый ключ, вы можете попытаться войти на сервер с помощью имени пользователя sshrnexample.com. Если вы поместите свой открытый ключ в конфигурационные файлы SSH каталога пользователя root, вы сможете войти в систему напрямую в root. Вас спросят о отпечатке пальца rsa; идите вперед и разрешить это действие. Он добавляет сервер, к которому вы подключаетесь, к файлу known_hosts. Этот файл может использоваться для множества разных вещей, но особенно для защиты себя от так называемой атаки «человек посередине». Если вы хотите прочитать немного больше об этом, посмотрите это объяснение.

Если вы можете успешно войти на свой сервер, как если бы вы ввели пароль, ваши ключи работают правильно. Следующий шаг - добавить пару строк для ярлыка в файл конфигурации на вашем компьютере. Откройте ~/.ssh / config в вашем любимом текстовом редакторе (создайте его, если он не существует) и добавьте следующее:

Где 'shortname' - это псевдоним для сервера, на который вы хотите войти. Например, «Host myserver» позволит мне сделать ssh myserver. HostName - это местоположение вашего сервера, и, конечно, User - это ваше пользовательское имя. У вас может быть User root на этом месте. После сохранения этого файла вы сможете запустить простую команду для входа на сервер, например:

Git Without Hub

Обратите внимание: этот раздел требует немного знакомства с Git.

Вы можете использовать SSH для настройки собственных репозиториев Git на своем сервере! Это полезно для компаний, которые по каким-либо причинам не хотят выставлять свой код на GitHub, и это здорово, если вы можете напрямую перейти с локального компьютера в Git-репо на вашем собственном сервере.

Чтобы настроить это, убедитесь, что Git установлен как на хосте, так и на вашем локальном компьютере. Возможно, вам придется пройти через компанию, где установлен ваш веб-сервер, чтобы установить Git. Затем запустите git init на вашем сервере в том месте, где вы хотите, чтобы ваш репозиторий Git находился. Конечно, вы можете сделать это сотнями разных способов, но если вы предпочитаете, чтобы у вас не было чистого хранилища, вы можете использовать ветки для отправки с локального компьютера. Вот общий рабочий процесс.

По сути, здесь происходит то, что вы входите на сервер, переходите на нужный путь репо, создаете репозиторий и добавляете «промежуточную» ветку, которую вы можете перенести с локального компьютера. Затем вы создаете локальное репо и соответствующую «промежуточную» ветку на локальном компьютере и добавляете файлы для отслеживания в репо. Далее идет первоначальный коммит. Затем вы добавляете удаленный репозиторий в качестве псевдонима «origin». Затем вы перемещаете локальную промежуточную ветвь в промежуточную ветвь псевдонима 'origin'. Наконец, вы возвращаетесь на сервер по ssh и объединяете «промежуточную» ветку со стандартной «основной» веткой.

SFTP > FTP

Вы также можете использовать SSH-протокол FTP (протокол передачи файлов), который по сути является более безопасной (зашифрованной) версией FTP, которая работает через порт 22 (а не по умолчанию порт FTP 21). Большинство FTP-клиентов также поддерживают SFTP. FileZilla (для Windows) и Fetch (для Mac) - два популярных (и бесплатных) SFTP / FTP-клиента.

Легкий доступ к вашему серверу практически везде

Пока вы находитесь рядом с компьютером, который подключен к Интернету, который имеет терминал и установлен SSH (например, на любом Mac, подключенном к WiFi), вы можете получить доступ к своему серверу через SSH. Это самая лучшая часть. Вам не требуется никаких настроек (при условии, что вы не установили никаких ограничений, требующих соответствующего ключа публикации), вы можете войти в систему со своим именем пользователя и паролем практически из любого места. Есть даже SSH клиенты для iOS и других мобильных устройств. Это очень мощная функция SSH, которая параллельна только в переносимости приложениями на основе браузера.

Локальный код Repo

Надеюсь, вы сможете увидеть силу SSH в ежедневном цикле разработки.

Давайте представим, что вы и несколько приятелей работаете над некоторым кодом вместе. Предположим также, что у вас есть локальный компьютер, который вы полностью контролируете и используете в качестве сервера LAMP для разработки, на котором установлено несколько виртуальных машин. Вы можете использовать SSH локально для перемещения файлов на компьютер и с компьютера разработчика. Вы даже можете настроить локальное Git (или SVN, или Mercurial) репо, работающее на SSH, чтобы держать все под контролем. Возможно, вы могли бы даже сделать машину разработки единственной машиной, подключенной к удаленному серверу через SSH, так что код должен пройти определенный этап подготовки, прежде чем его можно будет запустить в производство. Основой всех этих действий является SSH!

Надеюсь, вы сможете увидеть мощь SSH в ежедневном цикле разработки, особенно для команд, использующих контроль версий. Как я уже отмечал ранее, существует множество документации и множество других инструментов сетевого уровня, основанных на SSH или зависящих от них, которые дадут вам больший контроль и контроль над процессом разработки и вашим сервером. Кто знает? Может быть, однажды вы сможете стать сисадмином в конце концов!


Несколько других полезных ссылок

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

Спасибо за прочтение материала!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.