Работа по SSH на виртуальном хостинге
В этой статье мы расскажем про SSH: что это такое, как подключиться к серверу по SSH, как создать папку и архив, а также как по SSH изменить права на файлы и папки.
SSH – это протокол передачи данных, позволяющий производить безопасное и защищённое управление операционной системой и данными.
Подключение по SSH возможно на всех тарифных планах виртуального хостинга, кроме тарифа «Host-Lite». Если у вас заказан тарифный план «Host-Lite», повысьте тариф, и у вас появится возможность соединения по SSH Как повысить тарифный план хостинга.
Как подключиться к серверу по SSH
В зависимости от операционной системы, установленной на вашем домашнем компьютере (не путайте с ОС хостинга), для SSH подключения к серверу Linux-хостинга возможны следующие варианты:
- если на вашем компьютере установлена ОС Windows, то подключение происходит через Putty,
- для ОС Linux и macOS на компьютере доступно подключение к SSH через терминал.
Для подключения по SSH в ОС Windows мы рекомендуем использовать SSH-клиент PuTTy. Скачать клиент можно на официальном сайте (англоязычная версия).
Подключение по SSH Windows:
На странице с основными настройками сеанса PuTTY, в поле «Host Name» введите IP-адрес сервера.
IP-адрес сервера указан в информационном письме, отправленном на контактный e-mail после заказа хостинга. Также данная информация продублирована в Личном кабинете. Авторизуйтесь на сайте REG.RU и кликните по нужной услуге хостинга. IP-сервера указан на вкладке «Доступы»:
Если вы уже делегировали домен на сервер, вместо IP-адреса можно указать домен. Также в качестве хоста можно использовать технологический домен.
При первом подключении к серверу появится окно «Предупреждение безопасности PuTTY». Нажмите Да:
В открывшемся окне PuTTY введите ваш логин услуги хостинга вида «u1234567». Нажмите Enter. Затем введите ваш пароль от услуги хостинга и нажмите Enter. В целях безопасности вводимый пароль не отображается на экране в виде символов. Набирая пароль, вы не увидите на экране ни самого пароля, ни звёздочек.
Чтобы вставить скопированный логин и пароль в окно PuTTy, нажмите Shift + Insert.
Логин и пароль услуги хостинга указаны в информационном письме, отправленном на контактный e-mail после заказа хостинга. Также данная информация продублирована в Личном кабинете. Авторизуйтесь на сайте REG.RU и кликните по нужной услуге хостинга. Логин и пароль указаны на вкладке «Доступы»:
Важно: если вы несколько раз подряд ввели неправильный пароль и сервер заблокировал соединение по SSH (если PuTTY не подключается по SSH), обратитесь в техническую поддержку или подождите 2 часа. По истечении этого времени блокировка снимается автоматически.
Готово, как только вы подключитесь по SSH, вы окажетесь в домашнем каталоге вашего хостинга. Консольные команды Linux представлены по ссылке. Обратите внимание: многие из этих команд выполнить на виртуальном хостинге не получится (установка и удаление пакетов, монтирование файловых систем и др.), так как у вас нет root-доступа.
Для ОС Linux доступ по SSH осуществляется через терминал, который уже предустановлен в самой системе.
- в Unity (Ubuntu): «Главное меню» — в поисковой строке введите слово «Терминал». Либо просто нажмите комбинацию клавиш: Ctrl+Alt+T,
- в Xfce (Xubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал»,
- в KDE (Kubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал».
- u1234567 — логин учётной записи хостинга (Как узнать логин и пароль услуги хостинга?,
- 123.123.123.123 — IP-адрес сервера (Как узнать IP-адрес сервера?).
Готово, вы успешно завершили SSH-подключение через терминал.
- логин ― логин учетной записи хостинга,
- 123.123.123.123 ― IP-адрес сервера.
Нажмите Enter.
Если подключение к устройству происходит впервые, то появится предупреждение о том, что ключ сервера не кешируется в реестре. Введите Yes и нажмите Enter:
Введите пароль учетной записи.
Обратите внимание, в целях безопасности пароль, который вы вводите, не отображается на экране ни в виде самого пароля, ни в виде звёздочек:
Готово, вы подключились к виртуальному серверу по SSH. Чтобы сбросить подключение, введите команду exit или закройте терминал.
Можно ли создать дополнительного SSH-пользователя
На Hosting Linux подключение по SSH возможно только под основным логином хостинга (вида u1234567). Создать дополнительного пользователя SSH нельзя.
Как отключить доступ по SSH
Чтобы отключить SSH-доступ на хостинге, напишите заявку в службу поддержки. В заявке сообщите ваш логин хостинга (вида u1234567), для которого необходимо отключить доступ по SSH.
Как создать архив по SSH
Создание архива tar.gz
- Данная команда создаст архив папки path/folder-name/. Название архива — name.tar.gz,
- все файлы будут сжаты при помощи gzip,
- в процессе создания архива будет показан процесс архивации. Если данная информация вам не нужна, уберите ключ «v» из команды.
Разархивация происходит при помощи команды:
Создание архива zip
В результате команды из примера будет создан архив папки /var/log со всем её содержимым. Имя созданного архива: log.zip. Разархивировать можно будет при помощи команды:
Как создать или удалить папку по SSH
Чтобы создать папку, подключитесь к серверу по SSH и используйте команду:
Где new_folder_name — имя создаваемой папки.
После подключения по SSH удалить папку можно с помощью команды:
Где folder_name — имя удаляемой папки. Ключ —r делает рекурсивное удаление, то есть удаляет папку со всеми вложенными в неё папками и файлами.
Как изменить права на файлы и папки по SSH
Чтобы настроить права доступа к отдельному файлу:
Где /var/www/file_name — полный путь до вашего файла (/полный-путь-до-корневой-папки-сайта/сам-файл).
Готово, права на файлы/папки будут изменены.
Чтобы рекурсивно настроить доступ ко всем папкам и файлам на вашем сайте:
Где dir_name — полный путь до корневой папки сайта (Как узнать корневую папку сайта?).
Первая команда изменит права для всех директорий внутри указанной на 755. Вторая — для файлов внутри указанной директории на 644.
Готово, права на файлы/папки будут изменены.
В качестве альтернативного способа вы можете использовать команду, чтобы сначала задать права всем файлам:
А затем назначить права 755 только на папки:
Где dir_name — полный путь до корневой папки сайта (Как узнать корневую папку сайта?).
Как запустить Midnight Commander
Midnight Commander — это файловый менеджер.
Чтобы его запустить:
Как использовать кириллицу в терминале Linux
Если у вас ОС Linux, то при подключении к серверу по SSH вы можете использовать в терминале не только латиницу, но и кириллицу.
Если вы хотите использовать кириллицу в течение одного сеанса SSH, то после подключения введите в терминале команду:
Если вы хотите использовать кириллицу постоянно, то нужно внести изменения файл в .bashrc. Для этого после подключения по SSH:
За что админы любят SSH
Представим ситуацию: ваш сайт перестал работать, панель управления хостингом не открывается, а вам нужно всё починить. Или такое: вы работаете в Брянске, ваш заказчик — в Сыктывкаре, и у него сломался интернет-магазин на собственном сервере.
Тут два варианта: можно физически приехать в нужный город, подключить клавиатуру к серверу и исправить всё на месте. А можно подключиться к серверу удалённо по SSH и поисправлять все ошибки, попивая сок у себя в квартале (в Брянске).
SSH — это защищённый протокол, по которому компьютеры могут отправлять друг другу команды и данные. В нашем случае с помощью SSH можно удалённо управлять каким-нибудь компьютером: давать ему команды, исполнять на нём программы и делать что угодно ещё, что позволит нам командная строка. Если удалось связаться с компьютером по SSH, то это как будто вы подключили к удалённому компьютеру свою клавиатуру.
Командная строка
Если вы подключитесь к другому компьютеру по SSH, вы не увидите там рабочий стол и окна программ. Вы увидите чёрный экран и строки текста. Это нормально. Это называется командной строкой. Сейчас вы поймёте.
Когда вы работаете за компьютером, вы обычно видите окна, кнопки, страницы и всё подобное. Это называется графическим интерфейсом.
Графический интерфейс — это не сами программы. Это лишь способ представления программы. Сама программа — это то, что исполняется внутри компьютера: то, что считает, копирует, обрабатывает и так далее. Есть огромное количество программ без графического интерфейса: например, веб-сервер Apache — это программа. Сервер работает на вашем компьютере, занимает память, выдаёт страницы куда нужно, ведёт свою серверную работу, но у него нет графического интерфейса — нет никакого окошка, на которое вы можете сказать «Это сервер».
Или, например, ваш браузер. Если у вас Chrome, то вы видите окно с веб-страницей. А есть версия Headless Chrome, которая может выплёвывать любые страницы в виде картинок прямо на ваш жёсткий диск. У этого «Хрома» нет графического интерфейса со страницей (но есть небольшой интерфейс для настройки).
С нашей человеческой точки зрения интерфейс — это и есть программа. А с точки зрения компьютера интерфейс — это что-то побочное. И опытные программисты довольно часто используют в работе программы, у которых нет графического интерфейса, только командная строка.
Командная строка — это текстовый интерфейс программы. Вы вводите в эту строку команду, программа может в ответ что-то вас спросить текстом, вы ей текстом ответите, и программа сделает свою работу. Мы уже сталкивались с командной строкой, когда собирали своё приложение в электроне или объясняли, как устроен интернет:
Здесь в командной строке пользователь maximilyakhov на компьютере iMac-Maxim выполнил команду ping для адреса thecode.media — то есть проверил, откликается ли сервер с нашим сайтом. Это видно из второй строки. Программа Ping стала показывать статистику: получили пакеты по 64 байта за 79 мс. Пользователь удовлетворился результатом, вышел из программы клавишей Ctrl+C и получил итоговую статистику. Сейчас командная строка готова к новым командам
Бывают и другие интерфейсы программ. Например, может быть голосовой интерфейс: компьютер вас слушает, интерпретирует команды, задаёт вам вопросы голосом.
Может быть интерфейс в виде чата. Вместо того чтобы давать текстовые команды в командной строке, вы пишете команды чат-боту.
Может быть даже физический интерфейс: когда вы играете в приставку, вы даёте команду с помощью джойстика или каких-нибудь палок с датчиками. Когда в вас попадают враги, джойстики могут вибрировать — это приставка вам пытается что-то сказать. Так что графический интерфейс — это лишь одна из разновидностей.
SSH-соединение
Основной принцип работы такой: SSH-клиент на компьютере соединяется с SSH-сервером, они убеждаются, что каждый именно тот, за кого себя выдаёт, договариваются о шифровании и после этого устанавливают защищённый туннель для передачи команд. Важно понимать, что сервер — это просто такое название для удалённого компьютера. Сервером может быть и домашний ноутбук, и плата на Raspberry Pi.
Запуск SSH-клиента
Если у вас один из вариантов линукса, BSD, UNIX или Мак — поздравляем, SSH-клиент у вас уже есть. Для его запуска достаточно набрать в командной строке что-то подобное:
Здесь login — это имя пользователя, под которым вы хотите зайти на сервер, а 11.22.33.44 — IP-адрес этого сервера. Чаще всего используется 22 порт, но иногда эта настройка может меняться.
Порт — это что-то вроде номера маршрутки, которая идёт по городу. Все привыкли, что если нужно «доехать» до SSH, то садятся на маршрутку номер 22. Но иногда начальник городского транспорта (администратор) может поменять номер, тогда вместо 22-й маршрутки нужно будет садиться, например, на 320-ю.
У Виндоус нет встроенного SSH-клиента, поэтому нужно скачать его отдельно. Чаще всего выбирают PyTTY — SSH-клиент с графической оболочкой, в которой можно настраивать параметры соединения:
Минимально нужно указать адрес сервера, 22 порт уже написан по умолчанию.
Обмен ключами шифрования
Когда мы запускаем SSH-клиент и говорим ему соединиться с нужным сервером, происходит следующее:
- Сервер отправляет клиенту протоколы шифрования, с которыми он умеет работать. Если клиент тоже умеет работать с ними — всё отлично, идём дальше.
- Сервер и клиент с помощью криптографической магии устанавливают защищённое соединение, которое невозможно взломать или изменить (как они сами думают).
- Теперь у каждой стороны есть секретный ключ, которым зашифровывается и расшифровывается каждое сообщение.
Если всё прошло штатно, то при самом первом подключении сервер пришлёт в ответ что-то вроде этого:
The authenticity of host ‘11.22.33.44 (11.22.33.44)’ can’t be established.
ECDSA key fingerprint is fd: fd: d4:f9:77:fe: 73:84:e1:55:00:ad: d6:6d: 22:fe.
Are you sure you want to continue connecting (yes/no)?
Здесь сервер спрашивает, точно ли мы хотим установить это соединение. Если да — вводим в ответ yes. Это значит, что мы получили уникальный «отпечаток пальцев» для нашего соединения. Теперь, когда поменяются настройки SSH-сервера или его полностью переустановят, отпечаток уже не совпадёт и клиент будет бить тревогу. Всё для того, чтобы сделать соединения более безопасными в будущем.
Доступ по паролю или ключу
У нас уже есть защищённое соединение, и теперь мы можем вводить пароль. Для этого, после запуска нашей команды или клиента, SSH-сервер присылает в ответ такое:
Это значит, что нам нужно ввести пароль от пользователя с именем login. Пароль вводится каждый раз, когда мы устанавливаем SSH-соединение.
Есть и другой способ доказать серверу, что вы имеете право подключаться к нему: ключи доступа. Если настроить доступ по ключу, то пароль уже не нужен. Главное — нигде не публиковать приватный ключ. О ключах сейчас говорить не будем, сложновато.
Теперь соединение установлено, можно управлять удалённым компьютером, сидя у себя дома. Именно за это SSH и любят админы: лаконичный и понятный (для них) интерфейс, простота работы и полная безопасность при грамотной настройке.
Что можно делать с помощью SSH
Всё, что можно было бы делать, если бы вы сидели за компьютером, открыв командную строку:
- настраивать сервер;
- программировать;
- устанавливать Вордпресс;
- чинить неисправности на сайте;
- запускать и останавливать программы, в том числе намертво зависшие;
- копировать файлы;
- управлять настройками безопасности;
- заставить компьютер перезагрузиться;
- отформатировать какой-нибудь диск;
- забрать файл с удалённого компьютера или закинуть туда свой файл;
- выполнить этот закинутый файл удалённо на другом компьютере;
- делать ещё сотню вещей, для которых достаточно командной строки.
Вот несколько примеров из реальной жизни:
У вас намертво завис процесс веб-сервера на удалённом компьютере, и никакие внутренние службы не могут с ним ничего сделать. Подключаетесь по SSH, находите зависший процесс и убиваете его. А то и говорите машине перезагрузиться.
В офис вашей компании ворвались бойцы в масках. Пока они идут в серверную, вы набираете команду стереть все жёсткие диски. Команда по SSH долетает до сервера, и вуаля. Господа в масках останутся не при делах.
Вы написали телеграм-бота и хотите, чтобы он работал на удалённом сервере. Вы арендуете ячейку на Digital Ocean, подключаетесь к ней по SSH, загружаете вашего бота туда и активируете. Теперь программа, которая отвечает за бота, крутится на удалённом сервере, а ваш компьютер можно безопасно выключить.
Вы уже ушли с работы, как вдруг вспомнили, что забыли скинуть в общий проект свои последние изменения. Пока вы ждёте метро, вы с телефона заходите по SSH на рабочий компьютер и пишете команды, чтобы последние изменения долетели до коллег.
У вашей девушки (или парня) сегодня день рождения. Вы подключаетесь к её компьютеру дистанционно, загружаете приложение с поздравлением и удалённо запускаете. Это очень крипово, не делайте так никогда.
У вас в офисе есть кофемашина, которая поддерживает SSH. Вы подключаетесь к ней и заказываете кофе. К моменту, как вы доходите до кофепойнта, ваш кофе готов. Но кто подставит кружку?
SSH-доступ
SSH (Secure SHell) — это сетевой протокол, позволяющий соединяться с удалённым сервером и выполнять на нём команды, загружать файлы. Ключевой особенностью является шифрование передаваемой информации. По умолчанию на хостинге используется командный интерпретатор bash.
1. Информация для подключения
Информацию для подключения к серверу по SSH и SFTP вы можете получить в разделе FTP и SSH панели управления хостингом.
- Адрес сервера (хост): ssh.login.nichost.ru, где «login» — уникальное имя услуги хостинга (указано в верхней правой части панели управления).
- Имя SSH-пользователя (логин): login.
- Для получения пароля SSH-пользователя нажмите кнопку Сбросить пароль. Новый пароль будет отображен в всплывающем окне. Для отправки пароля на ваш контактный адрес электронной почты, установите галочку Выслать пароль на почту.
Чтобы соединиться по SSH с сервером хостинга, установите на компьютер ssh-клиент . Для загрузки файлов на хостинг используйте SFTP-клиент.
Если при соединении по SSH выводится сообщение «cannot allocate memory», это означает, что на вашем хостинге занята вся доступная по тарифу память. Чтобы ее освободить, вы можете временно остановить веб-сервер и отключить задания планировщика заданий в разделе Управление веб-сервером панели управления хостингом. Дополнительно рекомендуем ознакомиться со статьей Использование ресурсов хостинга.
2. Работа с хостингом с помощью Midnight Commander
Midnight Commander — двухпанельный файловый менеджер. Имеет встроенный текстовый редактор.
Для запуска Midnight Commander подключитесь к хостингу по SSH и введите команду
Основные горячие клавиши:
- F1: Справка;
- F3: Встроенный просмотрщик файлов;
- F4: Встроенный текстовый редактор;
- F5: Копировать файл;
- F6: Переместить (переименовать) файл;
- F8: Удалить файл;
- F9: Вывести выпадающее меню;
- F10: Выход из программы;
- Tab: Переход между панелями;
- Insert: Пометить файл для операций с несколькими файлами, например, для копирования.
3. Работа с хостингом из командной строки
Получение справочной информации
Для получения справочной информации по интересующей команде command наберите в командной строке:
для завершения работы со справкой нажмите «q».
Краткую справку по команде обычно можно получить, запустив ее с параметром —help или -h:
Перемещение по файловой системе
Вывести текущий каталог:
Перейти в домашний каталог пользователя:
Перейти в каталог tmp, размещенный в текущем каталоге:
Перейти в каталог по полному пути /home/login/sitename.ru/docs (корневой каталог сайта sitename.ru):
Перейти в родительский каталог (на уровень выше):
Перейти в предыдущий каталог:
Создание и удаление файлов и каталогов
Создать новый каталог foo в текущем каталоге:
Создать структуру каталогов foo/bar/baz в текущем каталоге:
mkdir -p foo/bar/baz
Удалить каталог foo в текущем каталоге. Каталог должен быть пуст:
Удалить каталог foo со всеми файлами и подкаталогами:
Создать пустой файл foo:
Удалить файл foo:
Просмотр и редактирование содержимого файлов
Просмотреть содержимое текстового файла (лог-файла сайта) (Для выхода нажмите «q»):
Открыть файл foo в текстовом редакторе:
Копирование и перемещение файлов
Копировать файл foo в файл bar:
Скопировать содержимое каталога old в каталог new:
Переименовать файл foo в файл bar:
Переместить файл foo в существующий каталог bar под именем baz:
Изменение прав доступа
Рекомендуемые права доступа на хостинге для файлов 644 (rw-rw-rw-), для каталогов 755 (rwxr-xr-x).
Сделать файл foo исполняемым:
Сделать файл foo доступным только для чтения:
Изменение прав доступа для всех каталогов, вложенных в каталог foo на 755:
find foo -type d -exec chmod 755 {} \;
Изменение прав доступа для всех вложенных в каталог foo файлов на 644:
find foo -type f -exec chmod 644 {} \;
Управление процессами
Показать информацию о процессах в реальном времени (Для выхода нажмите «q»):
Что такое SSH и sFTP?
С помощью защищенного протокола SSH администраторы подключаются к своим серверам для безопасной работы. Рассмотрим особенности этого протокола подробнее:
Что такое SSH-протокол
SSH-протокол (от англ. Secure Shell) — криптографический сетевой протокол, предназначенный для удаленного доступа к операционной системе и осуществления безопасного удаленного управления в рамках незащищенной сети (например, через интернет).
SSH обеспечивает защищённый канал связи между клиентом и сервером, через который можно передавать данные (почтовые, видео, файлы), работать в командной строке, удаленно запускать программы, в том числе графические. SSH-сервер должен быть установлен на удаленной операционной системе. SSH-клиент должен быть запущен на машине, с которой будет осуществляться удаленное подключение.
Основные функции, доступные при использовании SSH-протокола:
- Передача любых данных через защищенное SSH-соединение, включая сжатие данных для последующего шифрования.
- X11 Forwarding — механизм, позволяющий запускать программы UNIX/Linux-сервера в виде графической оболочки, как в Windows (использовать X Window System).
- Переадресация портов — передача шифрованного трафика между портами разных машин.
Безопасность SSH-соединения обеспечивается:
- шифрованием данных одним из существующих алгоритмов
- аутентификацией сервера и клиента одним из нескольких доступных методов
- наличием дополнительных функций протокола, направленных на предупреждение различных хакерских атак
Аутентификация сервера дает защиту от:
- взлома путем подмены IP-адресов (IP-spoofing), когда один удаленный хост посылает пакеты от имени другого удаленного хоста
- подмены DNS-записей (DNS-spoofing), когда подменяется запись на DNS-сервере, в результате чего соединение устанавливается с хостом, который указан в подмененной записи, вместо необходимого
- перехвата открытых паролей и других данных, передаваемых в открытом виде через установленное соединение
На сегодняшний день существуют две версии протокола SSH (SSH-1 и SSH-2), причем вторая версия усовершенствована и расширена по сравнению с первой. Например, вторая версия устойчива к атакам вида MITM («человек посередине», атака посредника). Также существуют две редакции данного протокола: открытая версия (бесплатная) и коммерческая (платная). Бесплатная версия — OpenSSH — встроена во все UNIX-подобные операционные системы в виде стандартных утилит SSH-клиента и SSH-сервера.
Коммерческая реализация SSH-протокола — SSH Communications Security — разработана одноименной организацией. Имеет небольшие отличия от бесплатной версии, такие как доступность коммерческой технической поддержки, наличие инструментов веб-управления и др. Основной набор команд и возможностей практически одинаковый у обоих продуктов.
Для ОС Windows выпущены различные SSH-клиенты и оболочки, самые распространенные из них — это бесплатные PuTTY и WinSCP . Для других операционных систем также существуют свои SSH-клиенты.
Передача данных по SSH-протоколу через небезопасную сеть
Что такое SFTP-протокол
SFTP имеет ряд преимуществ перед своими предшественниками — FTP и SCP — таких, как прерывание передачи файла, удаление, возобновление передачи, связь переданных файлов с основными атрибутами, например, меткой даты/времени, а также более высокая платформонезависимость.
SFTP-протокол реализуется через SFTP-сервер и SFTP-клиент, которые являются подсистемами OpenSSH.
Для чего используются SSH и SFTP протоколы
Чаще всего протоколы SSH и SFTP используются для удаленной работы с операционной системой или переноса большого количества файлов.
Также SSH может использоваться для удаленной работы по защищенному соединению с различными сервисами провайдера, такими как программное обеспечение, операционные системы и т.д.
Как работает SSH
По протоколу SSH работает набор программ, служащих для выполнения различных действий на удаленной операционной системе. Например, программа sshd обеспечивает серверную функциональность SSH, она должна быть запущена на SSH-сервере. Программа ssh запускается на SSH-клиенте и позволяет устанавливать соединение с удаленным хостом, регистрироваться на нем, работать с удаленной машиной через SSH-соединение.
Для запуска тех или иных программ SSH-протокола существуют специальные команды с набором различных опций. Эти команды могут отличаться в зависимости от используемой клиентской операционной системы и оболочки SSH-клиента. Команды запускаются либо из командной строки, если речь идет о UNIX-подобных системах, либо посредством графического интерфейса в соответствующих SSH-оболочках.