Secure shell (ssh) — это мощный инструмент для удаленного доступа и управления сервером. Несмотря на то, кто вы, новичок или профессионал, от знания и использования команд работы в защищенной оболочке протокола удаленного доступа, зависит эффективность ваших стараний.
Давайте рассмотрим этот базис, которым должен владеть практически каждый SSH-пользователь.
Прежде, чем начать, вам нужно получить доступ к удаленному серверу, для этого следует:
Используя ssh-клиента (напр. Putty) указать IP-адрес и порт целевого сервера.
Или через командную строку Windows/Linux ввести в терминале:
ssh username@serveripaddr
где username — имя пользователя и serveripaddr — ip-адрес целевого сервера.
При первом обращении к серверу ssh-клиент или терминал выдаст запрос о вводе пароля, а также предупреждение, что ваш сервер пока неизвестен, — просто подтвердите в ответе словом «Yes».
С этого момента вы готовы к выполнению команд SSH.
Рассмотрим список основных команд SSH.
ls — показать содержимое директории
cd — сменить директорию
mkdir — создать новую папку (директорию)
touch — создать новый файл
rm — удалить файл
cat — показать содержимое файла
pwd — показать полный путь текущей папки
cp — скопировать файл или папку
mv — переместить файл или папку
grep — поиск по ключевой фразе в файле или строке
find — поиск файлов и папок
vi, nano — текстовый редактор
history — показать историю последних 50 команд
clear — очистить экран терминала
tar — запаковать/распаковать сжатый архив
wget — загрузить (скачать) файлы с интернета
du — получить размер
Как видим, их всего 17, но может быть +/- больше или меньше, но не суть.
Важно, что даже данный небольшой набор, в постоянном обиходе, уже хорошее подспорье.
Ну-с, дальше по порядку, поехали.
=== 1. команда ls
Эта ssh-команда используется для вывода списка файлов и директорий.
ls
У нее также есть опции:
-l — добавляет деталей к выводу списка
-a — отражает еще и скрытые файлы и папки
=== 2. команда cd
cd (change directory) — команда, которая перебрасывает нас из папки в папку.
cd [папка] cd /home cd /home/user
Не обязательно перемещаться по папкам шаг за шагом, можно сразу указать полный путь до назначения.
Как только вы подтвердите введенную команду, вы переместитесь в указанную директорию.
Для того, чтобы вернуться назад, необходимо ввести следующую команду:
cd .. cd ../..
Таким образом вы переместитесь на один шаг назад или на несколько.
Для того, чтобы вернуться в папку пользователя, под которым вы вошли в систему, необходимо выполнить команду cd без каких-либо дополнительных опций, знаков и точек после нее. Данная команда вернет вас «домой» :).
=== 3. команда mkdir
mkdir используется для создания директории.
mkdir [имя папки] mkdir newfolder
=== 4. команда touch
touch создает новый файл.
touch [имя файла] touch newfile.txt
Для примера показано создание текстового файла с расширением .txt.
Таким образом можно создавать файлы с любыми расширениями, и даже без них.
# Далее я приведу только синтаксис команд,
# т.к. результат выполнения вы уже сможете
# посмотреть самостоятельно в вашем терминале
# 😉
=== 5. команда rm
rm удаляет файл или папку.
rm [имя файла] rm newfile.txt
Чтобы данной командой удалить директорию необходимо добавить опцию -r, чтобы удалить также все вложенные папки и файлы в ней.
rm -r home/newfolder
=== 6. команда cat
cat отображает содержание файла.
cat [имя файла] cat info.txt
cat позволяет создать новый файл из содержимого например двух других файлов.
cat info.txt info2.txt > info3.txt
Таким образом содержимое файлов info.txt и info2.txt запишется в новый файл info3.txt.
Вот эта самая стрелочка «>» в данном случае, это оператор перенаправления, который по сути позволяет произвести запись в файл, а две стрелочки «>>» — это добавление (запись) содержимого в конец файла.
=== 7. команда pwd
pwd выводит полный путь до текущего места, где вы находитесь.
Это очень полезная команда, когда вам нужно знать абсолютный путь, особенно при работе на удаленном сервере, т.к. некоторые из них не говорят вам, где вы сейчас 🙂 .
pwd В выводе будет: /home/user
=== 8. команда cp
cp копирует файлы и папки.
cp [опции] [источник] [назначение] cp file01.txt file02.txt
[источник] — файл или папка, которые вы хотите копировать.
[назначение] — куда создается копия.
В нашем примере копируется файл file01.txt из текущей директории в файл file02.txt.
Для того, чтобы создать копию в какую-то конкретную папку, нужно использовать следующую команду:
cp /home/user/abc.txt /home/somefolder/
Когда указываете имя файла, имейте ввиду, если оно такое же как и файл в папке назначения, он перезапишется. А если в папке назначения нет такого файла, то он будет создан.
Можно также указать некоторые опции для данной команды:
-f — создаст новый файл, в случае, если у вас не достаточно прав
-u — копирует файл, если он новее, чем целевой
-n — не даст перезаписать существующий файл
-i — спросит, прежде чем перезаписать
ну и т.д.
В отличие от дублирования файлов, копирование папок требует использования опции -R (рекурсия). Опция -R позволяет копировать все папки и файлы внутри него.
cp -R /home/user/somefolder /home/user2/
=== 9. команда mv
mv похожа на cp, но в отличие от нее не копирует, а перемещает файл или папку.
mv [откуда] [куда]
К примеру, хотим переместить файл file01.txt из папки /home/user/somefolder в папку /home/user2/. В таком случае команда будет следующей:
mv /home/user/somefolder/file01.txt /home/user2
В отличие от команды cp, для команды mv нет необходимости использовать опцию -R, чтобы переместить папку.
mv /home/user/somefolder/ /home/user2/
Данная команда автоматически переместит все файлы и подпапки внутри somefolder в папку user2.
=== 10. команда grep
grep ищет заданную строку в файле.
grep 'wow' info.txt
Т.о. мы ищем слово ‘wow’ в файле info.txt.
Данная команда хороша еще тем, что она выведет всю строку целиком, где встречается искомое слово.
Команда grep регистрозависима, т.е. ‘wow’ и ‘Wow’, — это два разных слова.
Если мы хотим найти слова, независимо от заглавных букв, необходимо использовать опцию -i.
=== 11. команда find
Когда нам нужно найти файл или файлы по заданному критерию поиска (имя, размер, тип файла и т.д.), мы используем команду find.
find [в какой папке ищем] [опции] [критерий поиска]
[в какой папке ищем] — папка в которой начинаем искать.
Для папки, где ищем, существует три варианта:
/ (слеш) — поиск по всей системе
. (точка) — поиск в текущей папке
~ (тильда) — поиск в домашней папке авторизованного пользователя
[опции] — это дополнительный аргумент, который сужает поиск.
Вот некоторые наиболее часто используемые из них:
-name — поиск по имени файла
-user — поиск файлов конкретного пользователя
-size — поиск файлов по размеру
[критерий поиска] — это ключевое слово или число.
find . -name "goga"
Выше приведенная команда вернет любые файлы, которые содержат слово «goga» в названии.
И т.к. мы используем «.» (точку), команда будет искать в рабочем каталоге.
=== 12. команды vi / nano
Vi и Nano — это два популярных текстовых редактора, используемых в командной строке.
Чтобы открыть файл используя команды vi или nano, достаточно ввести:
vi [имя файла] или nano [имя файла]
Если файла не существуют, обе команды создадут новый файл.
Некоторые дистрибутивы Linux не содержат редактора Nano по умолчанию. Но это не беда, его всегда можно установить выполнив нижеуказанные команды:
— для Debian/Ubuntu: sudo apt-get install nano
— для CentOS/RHEL: yum install nano
=== 13. команда history
history покажет последние из использованных команд.
Для ограничения вывода количества нужно использовать число.
history 20
Будет показано 20 последних введенных команд.
=== 14. команда clear
Функция команды clear проста — очистить окно терминала от любого текста.
=== 15. команда tar
tar — это SSH команда, которая создает или распаковывает архив с расширением .tar.gz.
Чтобы создать архив для папки в формате .tar.gz, нужно выполнить:
tar -cvzf ArchiveName.tar.gz /путь/до/папки
Чтобы распаковать архив нужно выполнить:
tar -xvzf ИмяФайла.tar.gz
Как видите опции у этих двух команды различны. Каждая буква — это специальная инструкция:
-x — извлечь файлы
-c — создать архив
-v — показать все файлы, которые обрабатываются
-z — распаковать архив
-f — назначить имя файлу архива
=== 16. команда wget
wget используется для загрузки файлов из интернета.
Например вам нужно «достать» файл из интернета и загрузить его на ваш комп:
wget https://путь-до-файла/имя-файла.txt
К примеру, нужно загрузить несколько файлов из разных адресов, тогда поможет опция -i. Нужно поместить все ссылки в файл downloads.txt и выполнить команду:
wget -i downloads.txt
=== 17. команда du
du (Disk Usage) — команда отражающая размер файлов и папок какой-либо директории.
du [путь до папки]
В выводе будут показаны номера блоков дисков.
Чтобы получить понятно-читаемый вывод (байты, килобайты, мегабайты) нужно использовать опцию -h:
du -h /home
В качестве послесловия.
Изучение и дальнейшее использования команд SSH имеет решающее значение для управления сервером (Linux, VPS).
Работа в терминале с помощью команд — это самый эффективный способ навигации по системе и изменения файлов или папок.
Данный перечень команд, который вы рассмотрели, вполне достаточен для выполнения основных задач на удаленном компьютере (или сервере), таких например как создание файлов, их удаление, переключение между каталогами и так далее.
А если у вас пока нет желания или возможности, а может даже необходимости, удаленно подключаться к целевому серверу, вы можете потренировать свои навыки в подсистеме Windows для Linux.