Как пользоваться ssh
Содержание:
Навигация и управление файловой системой
Команды, необходимые для перемещения и ориентирования в файловой системе сервера. А еще для перемещения, копирования и удаления файлов. В общем, все, что вы делали бы в файловом менеджере, но через терминал.
cd — отправляет вас в любую папку на выбор. Синтаксис: cd путь до нужной директории. Если хочется на рабочий стол, то пишем: cd ~/Desktop. Вернуться в предыдущую папку? cd-. Перепрыгнуть в home? Просто вводим: cd без аргументов.
ls — отображает директории и файлы вокруг вас. То есть в той папке, где вы находитесь на текущий момент. Но чтобы ею пользоваться, необязательно переходить в конкретную директорию. Ее можно указать заранее. Вот так:
ls ~/Desktop/papka-testovaya
pwd — укажет путь до папки тем, кто заблудился. Если вы находитесь в папке Документы, то вывод pwd будет выглядеть вот так /home/имя пользователя/Documents. И так для любого каталога, в котором вы окажетесь.
file — покажет, что собой представляет файл. Фишка утилиты в том, что она демонстрирует разную информацию для разных типов файлов. К примеру, может дать подробные EXIF-данные для фотографий, включая разрешение и битность изображения.
mv — изначально использовалась для того, чтобы перемещать файлы из одного места в другое. mv ~/Desktop/timeweb.html ~/Documents переносит HTML-документ Timeweb с рабочего стола в документы. Но пользователи приноровились использовать mv для смены имени файлов. mv ~/Desktop/timeweb.html timeweb-2.html оставляет документ на месте, но меняет его название.
cp — создает копию выбранного файла в другом каталоге. cp ~/Documents/timeweb-file.txt /home/Webmaster/Desktop копирует документ с названием timeweb-file.txt на рабочий стол того же пользователя.
dd — управляет разделами. С ее помощью можно делать копии разделов: dd if=/dev/sda of=/dev/sdb. Можно перемещать разделы. Удалять их без возможности восстановления: dd if=/dev/zero of=/dev/sdX (в качестве раздела для «уничтожения» тут указана флешка). Копирование разделов подразумевает их запись на сторонние носители. Например, запись iso-образов на внешние накопители: dd if=~/Desktop/fedora-14.6.iso of=/dev/sdX bs=4M. if здесь — это путь к образу, а of — путь к смонтированному разделу (флешке).
rm — удаляет папки и все, что сможет в них найти. «Уничтожает» все субдиректории, документы, картинки, медиа. Вообще все, без возможности восстановления. Синтаксис:
rm путь до каталога, который надо вычистить вместе со всеми «внутренностями»
mkdir — создает новую папку. Синтаксис: mkdir путь_до каталога,_где_нужно_создать_новую_директорию название_для_этой директории. Если надо сделать на рабочем столе папку Timeweb, то пишем:
mkdir ~/Desktop/Timeweb
rmdir — удаляет директории. Не имеет права трогать их содержимое, поэтому отзовется ошибкой, если в удаляемой папке найдутся еще какие-то элементы. Перед использованием rmdir объект надо очистить.
wget — скачивает файл из переданной ссылки. Больше ничего не умеет. Простой текстовый менеджер загрузок. Работает так – если мы хотим загрузить скриншот панели управления Timeweb с официального сайта, то введем в терминал: wget https://timeweb.com/upload/resize_cache/iblock/b56/400_400_2/xscreen_3.jpg.pagespeed.ic.O4a5jdlo5A.jpg
zip — архивирует один или несколько файлов один файл в формате .zip. Синтаксис: zip название архива.zip путь до файла, который надо упаковать. К примеру:
zip noviy-archive.zip /home/me/soderzhimoe-archiva.txt
unzip — вытаскивает содержимое архива наружу. Работает по тому же принципу: сначала команда, потом путь до архива, который надо распаковать. Еще можно добавить опцию -d, чтобы удалить файлы из архива по завершении распаковки.
find — ищет файлы и папки по всей файловой системе. Умеет находить их по названию и по типу, но это зависит от выставленных опций. find -type d -name Timeweb будет искать только директории с именем Timeweb.
mount — монтирует образ или раздел диска. Синтаксис:
mount путь до раздела, что нужно смонтировать
unmount — «демонтирует» образ или указанный раздел. Синтаксис:
unmount путь до раздела, что нужно отмонтировать
Алгоритм интерпретации
Очень важно понять, как SSH интерпретирует файл для применения значений, определенных внутри. Это имеет большие последствия при использовании подстановочных знаков и определения Host *
SSH будет искать совпадения по имени хоста, указанному в командной строке, с каждым из заголовков Host, которые определяют разделы конфигурации. Он будет начинать анализ с верхней части страницы, поэтому порядок разделов невероятно важен.
Шаблоны в определении хоста не должны совпадать с фактическим хостом, с помощью которого вы будете подключаться. Вы можете использовать эти определения для настройки псевдонимов хостов, которые могут использоваться вместо фактического имени хоста.
Например:
Host develHostName devel.example.comUser tom
Этот хост позволяет подключиться как tom@devel.example.com, введя в командной строке:
ssh devel
Имея это в виду, мы можем обсудить, как SSH применяет каждый параметр конфигурации, когда он перемещается вниз по файлу. Он начинает анализ с начала файла и проверяет каждое определение хоста, чтобы узнать, соответствует ли оно значению, указанному в командной строке.
Когда SSH находит первое совпадение с определением хоста, каждый из связанных с ним параметров применяется к новому соединению. Однако интерпретация на этом не заканчивается.
Затем SSH перемещается вниз по файлу, проверяя, совпадает ли хост с другими определениями хоста. Если найдено другое определение, которое отвечает текущему имени хоста в командной строке, SSH рассмотрит параметры, связанные с новым разделом. Затем он будет применять все параметры SSH, определенные в новом разделе, которых не было в предыдущих разделах.
Этот последний момент чрезвычайно важен. SSH будет по порядку интерпретировать каждый из разделов Host, который отвечает имени хоста в командной строке. Во время этого процесса он всегда будет использовать первое значение, указанное для каждой опции. Переопределить значение, которое уже было предоставлено в каком-либо предыдущем разделе, невозможно.
Это означает, что ваш конфигурационный файл должен следовать простому правилу: наиболее конкретные конфигурации должны находиться вверху файла. Более общие определения могут появиться позже (это позволяет применить опции, которые не были определены предыдущими разделами).
Давайте снова посмотрим на конфигурационный файл config, который мы использовали в последнем разделе:
Host firsthostSSH_OPTION_1 custom_valueSSH_OPTION_2 custom_valueSSH_OPTION_3 custom_valueHost secondhostANOTHER_OPTION custom_valueHost *hostANOTHER_OPTION custom_valueHost *CHANGE_DEFAULT custom_value
Здесь первые два раздела определяются буквальными именами хостов (или псевдонимами), что означает, что они не используют никаких подстановочных знаков. Если создать подключение с помощью ssh firsthost, то сначала будет применен первый раздел. Для этого соединения будут установлены опции SSH_OPTION_1, SSH_OPTION_2 и SSH_OPTION_3.
SSH проверит второй раздел и обнаружит, что он не соответствует, после чего продолжит читать файл. Затем он найдет третий раздел и увидит в нем соответствия. Он проверит ANOTHER_OPTION, чтобы узнать, было ли это значение установлено в предыдущих разделах. Выяснив, что это не так, он применит это значение. Последний раздел будет отвечать любому хосту, поскольку определение * соответствует каждому соединению. Так как у SSH нет значения для переопределения опции CHANGE_DEFAULT из других разделов, он возьмет значение из этого раздела. Затем с опциями, собранными в этом процессе, выполняется соединение.
Давайте попробуем теперь вызвать ssh secondhost из командной строки.
Опять же, интерпретация начнется в первом разделе. Поскольку этот раздел отвечает только соединению firsthost, SSH пропустит этот раздел. Он перейдет во второй раздел. Узнав, что этот раздел соответствует запросу, он соберет значение ANOTHER_OPTION для этого соединения.
Затем SSH просмотрит третье определение и обнаружит, что подстановочный знак также соответствует текущему соединению. Затем он проверит, есть ли уже значение ANOTHER_OPTION. Поскольку этот параметр был определен во втором разделе, который уже был прочитан, SSH сбросит значение из третьего раздела.
Затем SSH проверит четвертый раздел и применит параметры, которые не были определены в предыдущих соответствующих разделах. Затем он попытается создать подключение, используя полученные значения.
Общие опции подключений
Вот несколько широко применяемых опций (чаще всего они используются в разделе Host *).
ServerAliveInterval: Этот параметр указывает SSH, когда отправлять пакет для проверки ответа от сервера. Это полезно, если ваше соединение ненадежно, и вы хотите узнать, доступен ли сервер.LogLevel: Настраивает уровень детализации, с которым SSH будет регистрироваться на стороне клиента. Это позволяет отключить регистрацию в определенных ситуациях или увеличить уровень детализации при отладке. Уровни по возрастанию детализации: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 и DEBUG3.StrictHostKeyChecking: Этот параметр настраивает автоматическое добавление хостов в файл ~/.ssh/known_hosts. По умолчанию для этого параметра будет задано значение «ask», что означает, что он предупредит вас, если Host Key, полученный с удаленного сервера, не соответствует найденному в файле known_hostsfile. Если вы постоянно подключаетесь к большому числу эфемерных хостов, вы можете переключить его на «no». Тогда SSH автоматически добавит в файл все хосты. Это может иметь последствия для безопасности, поэтому тщательно подумайте, прежде чем включать этот параметр.UserKnownHostsFile: Этот параметр указывает расположение, в котором SSH будет хранить информацию о том, к каким хостам он подключился. Обычно этот параметр не используется, но вы можете установить его в /dev/null, если вы отключили проверку хоста.VisualHostKey: Этот параметр позволяет SSH отображать ASCII-представление ключа удаленного хоста при подключении. Включив его, вы получите простой способ узнать ключ вашего хоста, что позволит вам легко распознать его, если вам понадобится подключиться с другого компьютера в будущем.Compression: Этот параметр полезен при создании очень медленных соединений. Он используется очень редко.
Учитывая перечисленные выше элементы, можно внести в конфигурации несколько полезных настроек.
Например, если вы очень быстро создаете и удаляете хосты у провайдера облачных вычислений, вам может пригодиться такой раздел:
Host homeVisualHostKey yesHost cloud*StrictHostKeyChecking noUserKnownHostsFile /dev/nullLogLevel QUIETHost *StrictHostKeyChecking askUserKnownHostsFile ~/.ssh/known_hostsLogLevel INFOServerAliveInterval 120
Это включит визуальный ключ хоста для домашнего подключения, что позволит вам ознакомиться с ним, чтобы вы могли узнать, меняется ли он или при подключении с другого компьютера. Также любой хост, который начинается с cloud*, не будет проверять хосты и регистрировать ошибки в логах.
Как пользоваться PuTTY
1. Интерфейс программы
Сразу же после запуска программы из меню пуск вы увидите графический интерфейс ее настройки. После подключения вы будете видеть только терминал, но настроить программу можно через удобный интерфейс.
Рассмотрим за что отвечают те или иные вкладки программы, чтобы вы ориентировались что и где искать. У нас есть четыре вкладки:
- Session — отвечает за подключение удаленному серверу, тут мы вводим параметры подключения, порт, адрес, а также можем сохранить все настройки putty, чтобы не настраивать каждый раз заново.
- Terminal — позволяет включать или отключать возможности терминала;
- Window — настройка внешнего вида окна, цвет, шрифт, кодировка;
- Connection — настройка параметров подключения, алгоритма шифрования, сжатия, ключей аутентификации, X11 и других параметров.
Каждая вкладка имеет несколько подразделов, но мы не будем сейчас их трогать, а перейдем сразу к практике и посмотрим как подключиться putty к удаленному узлу.
2. Подключение к удаленному компьютеру PuTTY
Чтобы подключиться к удаленному компьютеру по SSH перейдите на вкладку «Session», здесь, в поле «Host Name» необходимо прописать ip адрес или имя хоста, компьютера, к которому вы хотите подключиться, в поле порт — нужно указать порт, на котором запущен SSH сервер, по умолчанию используется порт 22:
Далее, нажмите кнопку «Open». После этого появится запрос на добавление ключа сервера в список доверенных ключей, нажмите «Да»:
Затем вам будет нужно ввести логин пользователя и пароль
Важно заметить, что скопировать логин или пароль у вас не получится, необходимо только вводить вручную:
Теперь авторизация прошла успешно, и вы можете выполнять нужные действия на сервере:
3. Сохранение сессии PuTTY
Чтобы не вводить каждый раз ip и порт можно сохранить эти данные в виде сессии, для этого пропишите новое имя в поле «Saved Sessions», а затем нажмите кнопку «Save»:
Теперь вы сможете загрузить сохраненную сессию, нажав кнопку «Load».
После того как будет завершена настройка putty и все параметры будут выставлены правильно вы можете сохранить настройки и не вводить их несколько раз.
4. Имя пользователя по умолчанию
Вы можете не вводить имя пользователя каждый раз, для этого перейдите на влкадку «Connection», затем «Data» и в поле «Auto-login Username» пропишите имя пользователя, например, root:
Теперь подключение putty будет выполняться от имени этого пользователя.
5. Авторизация по ключу ssh в PuTTY
Чтобы не вводить каждый раз пароль можно настроить авторизацию по ключу. В Linux такая возможность используется очень широко потому что это удобно. Первым делом необходимо создать ключ. Для этого запустите утилиту PuTTYgen и установите переключатель в положение «SSH-2 RSA» нажмите «Generate»:
Обязательно ключ должен быть SSH-2 RSA, если в главном окне нет, выберите в меню «Key». Подвигайте мышкой, чтобы создать достаточное количество энтропии:
Ключ готов, затем, с помощью кнопок «Save Public Key» и «Save Private Key» сохраните оба ключа.
Далее, откройте PuTTY, перейдите на вкладку «Connection», затем «SSH», затем «Auth»:
Здесь необходимо нажать кнопку «Browse» и добавить недавно сохраненный приватный ключ:
Далее, возвращаемся на вкладку «Session», выбираем наше сохранение и нажимаем «Save» чтобы сохранить настройки. Осталось только отправить наш открытый ключ на сервер. Для этого авторизуйтесь на нем с помощью пароля и открытый ключ вставьте ключ в конец файла /root/.ssh/authorized_keys.
Ключ можно брать прямо из окна PuTTYgen «Public key for pasting» или из файла открытого ключа:
Все, теперь можно выходить и авторизоваться снова. На этот раз подключение по ssh putty будет выполняться с помощью нашего ключа. Не забывайте сохранять настройки сессии, чтобы не выбирать ключ каждый раз. Теперь вы знаете как пользоваться программой putty, рассмотрим еще передачу файлов.
5. Передача файлов через scp в PuTTY
Не все знают, но PuTTY позволяет передавать файлы через ssh также как это делает linux с помощью утилиты scp. Нажмите Win+R, затем пропишите cmd, чтобы запустить командную строку.
Синтаксис утилиты pcsp выглядит следующим образом:
pscp опции путь_файлу имя_пользователя@хост/путь/к/файлу/на/удаленном/хосте
Например, мы можем отправить файл из текущей папки в папку пользователя /root/:
С помощью опции -P можно задать удаленный порт:
А опция load позволяет загрузить сохраенные настройки сессии PuTTY:
Теперь вы знаете как использовать putty для передачи файлов.
Установка, обновление и удаление пакетов
В Linux почти все программное обеспечение имеет открытый исходный код, поэтому в большинстве своем распространяется через открытые репозитории. Для его загрузки и установки используются менеджеры пакетов. В каждом семействе дистрибутивов он свой.
apt (в Debian, Ubuntu и им подобных)
sudo apt-get install название пакета — устанавливает пакет из подключенных репозиториев. Ищется по названию и версии.
sudo apt remove название пакета — удаляет из системы установленный пакет.
sudo apt purge название пакета — удаляет установленный пакет и вместе с ним уничтожает все зависимые данные. От приложения не остается никаких следов. Такой вариант подходит, когда нужна полная переустановка пакета «с нуля».
sudo apt autoremove — автоматически выполняет уборку среди установленных пакетов, убирая ненужные остатки кода.
sudo apt-add-repository адрес репозитория — подключает к системе дополнительный репозиторий с пакетами, не вошедшими в базу репозиториев по умолчанию. Требуется для установки некоторых редких open-source-приложений.
sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе и тех, что хранятся в подключенных репозиториях.
sudo apt-upgrade — обновляет версии установленных пакетов до самых свежих, доступных в подключенных репозиториях.
dnf (в Red Hat Linux, CentOS, Fedora)
sudo dnf install название пакета — устанавливает программу на выбор.
sudo dnf config-manager –add-repo адрес репозитория — подключает к системе дополнительный репозиторий.
sudo dnf upgrade — обновляет версии установленных пакетов до самых свежих, доступных в подключенных репозиториях.
sudo dnf remove название пакета — стирает с жесткого диска имеющийся в системе пакет.
sudo dnf autoremove — разыскивает мусор среди имеющихся пакетов и в автоматическом режиме вычищает его.
pacman (в Arch Linux и Manjaro)
sudo pacman -S название пакета — устанавливает пакет на выбор.
sudo yaourt -S название пакета — устанавливает пакет на выбор из репозитория AUR.
sudo pacman -Sy — обновляет информацию о пакетах, имеющихся в системе и тех, что хранятся в подключенных репозиториях.
sudo pacman -Syu — обновляет версии установленных пакетов до самых свежих, доступных в подключенных репозиториях.
sudo pacman -R название пакета — стирает с жесткого диска имеющийся в системе пакет.
sudo pacman -Rs название пакета — стирает не только установленное приложение, но и все зависимые от него элементы.
Настройка ssh клиента
В Debian настройки клиентской части ssh делятся на глобальные и пользовательские. Глобальные клиентские настройки находятся в файле /etc/ssh/ssh_config и применяются ко всем пользователям. Пользовательские настройки могут находиться в домашнем каталоге пользователя, в ~/.ssh/config и применяются к одному пользователю. Файл пользовательских настроек не создаётся автоматически в отличие от файла глобальных настроек клиентской части ssh. Для большинства выполняемых задач подойдут настройки по умолчанию, но для удобства использования, так сказать для тюнинга или для выполнения нестандартных задач клиентские настройки изменяются. Рассмотрим вкратце некоторые из этих настроек. Полезно помнить о приоритетах настроек: высший приоритет имеют ключи командной строки, затем следуют настройки пользователя, а после них используются глобальные настройки клиентской части.
Параметр Host. Ограничивает множество хостов, к которым применяются последующие (до ближайшей новой директивы Host) директивы, по указанным шаблонам (хост должен соответствовать хотя бы одному шаблону). Шаблон, состоящий из одного символа *, соответствует любому хосту. Под хостом в данном контексте понимается аргумент имя_хоста передаваемый в командной строке (т.е. никаких преобразований перед сравнением не выполняется).
Параметр HostName. Устанавливает соответствие между псевдонимами, сокращениями и настоящими именами хостов. По умолчанию используется имя, передаваемое в командной строке. Допустимо непосредственное указание IP-адресов.
Параметр Port. Порт на удалённой машине, к которому следует подключаться. Значение по умолчанию — 22
Параметр User. Имя пользователя, которое следует использовать при регистрации в удалённой системе. Полезно, когда на разных серверах используются разные имена, т.к. избавляет от надобности вспоминать каждый раз нужное имя.
В качестве примера я создам файл пользовательских настроек /home/selifan/.ssh/config следующего содержания:
Host sunup
HostName sunup.aitishnik.local
Port 2203
User andrey
Host windbag
HostName windbag.nnov.ru
Port 2280
User joker
Host 212.177.65.1
HostName 212.177.65.1
Port 2222
User forester
Теперь при подключении к компьютерам sunup.aitishnik.local, windbag или по ip адресу 212.177.65.1 мне не нужно вспоминать, ни имя пользователя, ни ssh порт подключения, достаточно после ssh набрать имя сервера. Просто и удобно! Описания всех параметров, значений и некоторых примеров находятся в man ssh_config. Продолжаем настраивать SSH и читаем «Генерация ключей SSH».
Об авторе:
Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.
Как подключиться по SSH
Для подключения по SSH нам необходимо знать такие данные:
- ip адрес сервера, к которому мы собираемся подключится;
- порт, на котором ожидает подключения SSH сервер, по умолчанию используется 22, но в целях безопасности порт подключения ssh часто изменяют;
- имя и пароль пользователя на удаленном сервере.
Больше ничего не нужно, обычно эти данные присылают в письме вместе с описанием VPS. Теперь перейдем к практике.
1. Подключение через SSH в Linux
В Linux подключение по SSH выполняется с помощью утилиты ssh. Мы более подробно рассматривали работу с ней в статье как пользоваться ssh. Для подключения к удаленному компьютеру ее синтаксис будет выглядеть следующим образом:
$ ssh имя_пользователя@айпи_адрес
Это самый простой вариант, если вам также нужно задать порт, используйте опцию -p:
$ ssh имя_пользователя@айпи_адрес -p порт
Чтобы выполнить подключение по SSH Linux нажмите Ctrl+Alt+T для открытия терминала и наберите команду, заменив нужные значения:
Или, с нестандартным портом:
Если ip_адрес и порт правильные, то на следующем шаге программа попросит у вас ввести пароль:
Если пытаетесь подключится через SSH к этому серверу первый раз, то утилита также попросит подтвердить добавление нового устройства в свой список известных устройств, здесь нужно набрать yes и нажать Enter:
Теперь вы подключены, и все вводимые далее команды будут выполнены на удаленном сервере:
Если же произошла ошибка и IP адрес или порт введены неверно, то вы получите ошибку Connection Refused:
Просто убедитесь что порт введен верно. Если это ваш сервер, то, возможно на нем еще нужно разрешить подключение SSH в брандмауэре. В Ubuntu/Debian для этого на удаленном сервере выполните:
А в CentOS/Fedora:
Если вы используете другой порт для SSH, то замените 22 на свой порт. Для удобства подключения по SSH в дальнейшем можно настроить авторизацию по ключу ssh, чтобы не вводить каждый раз пароль.
Теперь вы знаете как подключиться по ssh linux и решить проблемы с подключением. А теперь перейдем к Windows.
2. Подключение через SSH в Windows
Раньше подключение по SSH из Windows выполнялось только с помощью сторонних утилит, например PuTTY. Но в Windows 10 был добавлен встроенный OpenSSH клиент и работает он точно так же, как и в Linux. По умолчанию этот компонент не активирован. Для его установки откройте Параметры -> Приложения:
Затем выберите Управление дополнительными компонентами:
Здесь нажмите добавить новый компонент и в открывлемся меню выберите OpenSSH Client и нажмите Устанвоить:
Дальше вернитесь назад и дождитесь завершения установки. После того, как SSH клиент будет установлен нужно обязательно перезагрузить компьютер.
После перезагрузки нажмите Win+R чтобы открыть окно запуска команд и наберите в нем cmd:
Далее нажмите Enter. Перед вами откроется командная строка Windows. Здесь можно использовать утилиту ssh. Синтаксис у нее абсолютно такой же, как и для Linux:
ssh имя_пользователя@айпи_адрес -p порт
Например, такой командой можно подключится по SSH к Raspberry Pi, который находится в вашей локальной сети по адресу 192.168.1.5:
Утилита предложит добавить устройство в список известных:
Затем предложит ввести пароль:
Все следующие команды будут выполняться уже на Raspberry Pi или другой удаленной машине, к которой вы подключились.
Теперь подключиться к серверу по ssh из этой операционной системы также просто как и из Linux.