Как подключиться к серверу DigitalOcean по SSH
Вступление
Внимание: Эта статья написана для пользователей ОС Windows.
В этой статье, мы научимся подключаться к облачному серверу DigitalOcean по SSH, создадим ключи SSH с помощью генератора ключей «PuTTYgen», сохраним ключи в агенте «Pageant», и подключимся к серверу по безопасному протоколу SFTP.
SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол. Таким образом, можно не только удалённо работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удалённого запуска клиентов
Ключи SSH служат средством идентификации вас при подключении к серверу SSH с использованием криптосистемы с открытым ключом и аутентификации вызов-ответ. Одним из непосредственных достоинств этого метода перед традиционной идентификацией с помощью пароля является то, что вы можете быть авторизованы на сервере без регулярной необходимости отсылать ваш пароль через сеть. Даже если кто-либо будет прослушивать ваше соединение, у него не будет возможности перехватить и взломать ваш пароль, поскольку фактически он никогда не передается. Также использование для идентификации ключей SSH устраняет риск, связанный с брут-форс (brute-force) атаками, за счет существенного уменьшения шанса атакующего угадать правильные учетные данные.
Идентификация при помощи ключей SSH предоставляет дополнительную безопасность, а также может быть более удобным способом, чем традиционная идентификация при помощи пароля. При использовании вместе с программой, называемой агентом SSH, ключи SSH могут подключать вас к серверу или нескольким серверам без необходимости помнить и вводить ваш пароль отдельно для каждой системы.
Ключи SSH являются парными: один из них — закрытый, другой — открытый. Закрытый ключ известен только вам, и он должен быть в безопасности. С другой стороны, открытый ключ может свободно раздаваться с любого сервера SSH, к которому вы хотите подключиться.
Когда у сервера SSH есть ваш открытый ключ в файле, и он видит, что вы запрашиваете соединение, он использует этот открытый ключ, чтобы создать и отправить вам т.н. вызов. Этот вызов является чем-то вроде зашифрованного сообщения, на которое должен поступить соответствующий ответ, чтобы сервер предоставил вам доступ. Безопасным это сообщение делает тот факт, что оно может быть прочитано только кем-то, у кого есть закрытый ключ. Открытый ключ может быть использован для зашифровки сообщения, но расшифровать то же самое сообщение он не сможет. Только вы, держатель закрытого ключа, будете иметь возможность корректно принять вызов и создать соответствующий ответ.
Этот этап вызов-ответ проходит незаметно для пользователя. До тех пор, пока у вас есть закрытый ключ, который обычно хранится в каталоге ~/.ssh/
, ваш клиент SSH будет иметь возможность отправить правильный ответ серверу.
Поскольку закрытые ключи считаются конфиденциальной информацией, обычно они хранятся на диске в зашифрованном виде. По этой причине, когда запрашивается закрытый ключ, необходимо ввести пароль для расшифровки этого ключа. Внешне это может быть похоже на ввод пароля непосредственно на сервере SSH, но это не так: этот пароль используется только для расшифровки закрытого ключа в вашей локальной системе. Этот пароль не передается и не должен передаваться через сеть.
1. Создание ключа SSH
Для создания ключа, я воспользуюсь программой Putty, которую можно скачать здесь
Точнее, мне потребуется скачать три програмки:
- PuTTYgen — генератор ключей
- Pageant — агент для хранения ключей
- PuTTY — ssh-клиент
Генератор ключей PuttyGen.
Запускаю PuTTYgen выбираю «Type of key to generate» SSH-2 RSA и 2048-битный ключ. Нажимаю Generate.
Следуя указаниям, хаотично перемещаю мышку.
Спустя 11.99 секунд, появляется окно с нашим публичным ключом. Его мы скопируем и вставим в DigitalOcean. Первый раз я быстро копировал только часть ключа и долго удивлялся почему не сработало. Не заметил справа ползунок. Уверен, вы внимательней меня.
Придумаем сложный пароль и сохраним ключи public и private.
Private key сохраняется с расширением .ppk. Он будет использоваться Pageant в дальнейшем.
Key fingerprint — отпечаток ключа.
Key comment — комментарий к ключу, я обычно указываю машину, на которой это ключ используется.
Key passphrase — парольная фраза к приватному ключу.
Confirm passphrase — подтверждение парольной фразы.
Не закрывайте это окно, давайте добавим наш публичный ключ на сервер.
Переходим на сайт DigitalOcean, заходим в свой аккаунт и в меню установки и выбираем «SSH Keys»
Большая кнопка «добавить ключ» ждет
Вставляем ключ в поле, даем красивое название.
Ключ готов! Теперь, создавая сервер (Droplet), мы можем указать наш ключ. О том как создать Droplet, читайте здесь
2. Агент для хранения ключей Pageant.
Здесь просто. Add key -> Выбираем ключ, указываем парольную фразу (Key passphrase), которую создали в PuttyGen. Чтобы посмотреть ключи, можно выбрать пункт View keys.
3. Настройка Putty.exe
Теперь запускаем PuTTY.exe. Вначале произвожу настройки и сохраняю как Default settings, затем для каждого droplet отдельно. Будет меняться только путь.
Переходим во Вкладку Session и устанавливаем IP нашего droplet, устанавливаем Connection type: SSH.
Далее, Вкладка Session->Logging, отмечаю галочкой Printable output. В поле Log file name указать logs\&H_&Y-&M-&D-&T.log, убираю галочку Flush log file frequently.Таким образом, указываю, что хранить логи нужно в папке logs, рядом с PuTTY.exe, при этом имена .log файлов не должны повторяться и следовательно перезаписываться.
Вкладка Window->Translation. Выбираю в списке Remote character set UTF-8, чтобы не было проблем с кодировкой.
В Connection->Data указываем имя пользователя, по умолчанию «root»
В Connection->SSH->Auth проверяю стоит ли галочка напротив Attempt authentication using Pageant и указываю путь к приватному ключу в графе Private key file for authentication.
Не забываем сохранить все изменения на вкладке Session -> сохранить, чтобы указанные настройки были по-умолчанию.
Теперь можно подключаться. Кликаем open.
В первый раз выскочит предупреждение, что раньше мы не использовали ключ для авторизации на этом сервере. Когда такое возникает в первый раз, это нормально.
Откроется консоль для общения с нашим сервером на DigitalOcean. Посредством консоли PuTTY мы можем:
start, stop, restart application
tail all log files
list available environment variables
remove files / directories
list files / directories
list running applications
kill running applications
interactive MySQL shell
interactive MongoDB shell
interactive PostgreSQL shell
list disk usage
Теперь, когда мы создали SSH ключи и настроили доступ к droplet по SSH, можно настроить клиент для полноценной, удобной работы с нашими файлами: загрузки, скачивания и т.д. Я перепробовал различные клиенты под Windows и остановился на WinSCP. Его установка не вызывает трудности и использовать довольно удобно.
Подарок от DigitalOcean
Если вам более не хватает мощности обычного хостинга и вы задумываетесь о переходе на облачный хостинг с мировым именем, используйте этот купон для получения $10 от DigitalOcean в подарок. Акция ограничена. В настоящее время, есть тарифный план от $5 в месяц, плюс скидки при оплате за целый год.