Ssh удалить папку с файлами

Обновлено: 07.07.2024

В этой статье я расскажу об основных и наиболее часто используемых ssh командах. Точнее это просто shell команды. Но раньше я этого не знал.

SSH это такой протокол для удаленного управления. Я как веб-разработчик использую его для управления своим веб-сервером, конечно есть панель ISP Manager, которая позволяет делать в принципе тоже самое, но только через графический интерфейс, а ssh все-же имеет больше возможностей

Пример: я переношу сейчас сайты с одного хостинга на другой, для этого нужно сначала сказать архивы со старого сервера на компьютер, и потом закачать на новый, с моей скоростью интернета это очень долго, а возможность удаленной загрузки файла в ISP manager почему-то не работает, и я использую SSH для того чтоб скачивать напрямую со старого сервера.

Введение

Требования

В данной статье предполагается, что:

  • у вас есть SSH доступ к вашему серверу.
  • Вы используете терминал, или PuTTY (Windows), чтобы войти на сервер.

Поехали

Для начала нам нужно авторизоваться, открываем SSH клиент и вводим

После этого вас попросят ввести пароль, Внимание: пароль вводится не видимо для пользователя – просто набирайте и нажмите Enter или Return.
Если все хорошо, то вы увидите что то вроде этого

После этого вы окажитесь в папке /var/www/username/data если у вас Debian, если нет то папка будет немного другая, но суть та-же.

Навигация

Для того чтоб узнать где мы сейчас находимся есть ssh команда

выполнив которую вы увидите в какой директории находитесь
Пример результата выполнения:

Используйте эту команду для перемещения по папкам:

Если вы хотите продолжить путь от текущей директории, то первый слэш использовать не нужно. Пример:

Для перемещения на уровень выше используйте двоеточие, как в CSS))

Чтоб попасть в домашнюю директорию можно использовать вот такую SSH команду

Что тут?

Дальше вы можете узнать о том какие файлы и папки находятся в вашей директории

ls команда которая показывает список файлов и папок. -alh модифицирует стандартный вывод.
a - говорит что нужно показать даже скрытые файлы
l - позволяет показать полную информацию о файле(права, размер, пользователя, дату)
h - делает вывод более читабельным

Файлы

Давайте разберем элементы, которые отображается при запуске LS-ALH из предыдущего раздела.

Изменение прав

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

Используйте эту команду для копирования файла в другую папку(первый пример) или для копирования файла в ту же папку(второй пример)

cp

это команда, logo.jpg – имя исходного файла, затем идет имя нового файла, включая информацию о пути, если необходимо.

Так же вы можете скопировать целую папку, со вложенными фалами, используя -R

Перемещение или переименование

Команды осень походи на команды копирования файла

mv – основная команда. Она перемещает logo.jpg в image/ поддиректорию.

А еще вы можете переименовать файл

Ну тут думаю все понятно, теперь мы знаем как происходит переименование файлов, я думал что как то иначе если честно)

Ну и еще примерчик

Тут мы папочку image перемещаем на уровень выше

Создание и редактирование файлов

Если это существующий файл, то вы увидите его содержимое, если файл не существует, то он создастся и откроется для редактирования.
Файл откроется в редакторе vi о том как им пользоваться можете погуглить, это обширная тема.

Простое создание файла

Выполнение этой команды просто создаст файл

Быстрый просмотр файла

Если вам нужно просто посмотреть файлик то используйте кошку))(cat)

Удаление файла

Вот мы добрались уже и до удаления, для того чтоб это сделать выполните ssh команду

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

Если нужно удалить каталог со всеми вложенными файлами используйте:

Скачивание файла по ssh

Для того чтоб скачать файл с другого сервера по ssh нужно выполнить следующую комманду

Введя этот код(изменив его на свой) вам потребуется ввести пароль от для того юзера которого вы указали, в нашем случае это your_username, затем начнется скачивание файла foobar.txt с удаленной директории /some/remote/directory в вашу /some/local/directory

А вот еще хороший аналог предыдущего действия, отличается тем что этот в отличие от того показывает процесс копирования и сколько осталось

SSH позволяет управлять аккаунтом напрямую на сервере. С его помощью можно собрать полную информацию о занятом дисковом пространстве и количестве файлов, а также, например, импортировать объемный дамп базы данных, работать с системой контроля версий git и проектами на Node.JS или Python.

После подключения вы увидите приглашение командной строки: [username@server

  • username — логин вашего аккаунта на хостинге;
  • server — имя сервера, на котором он размещен.

Для работы требуется знание команд. Они выглядят так: command -key argument

  • command — название команды;
  • -key — дополнительные опции (ключи);
  • argument — значение, с которым будет работать команда (путь до папки, фраза, которую нужно найти и т.д.).

Рекомендуем прочитать справочную информацию для команды, которую вы планируете использовать, введя в консоли man. Обратите внимание, справочник англоязычный.

Например, откроем руководство для ls: [username@server domains]$ man ls Чтобы выйти из режима справки, нажмите «q».

Команды для работы с файлами

ls — просмотр содержимого каталога

Чтобы получить полную информацию о содержимом каталога, пригодятся ключи:

  • -l — вывести подробную информацию о файле;
  • -a — отобразить скрытые файлы;
  • -h — отобразить размер файла в удобном формате (по умолчанию выводится в байтах).

pwd — показать полный путь до директории

Команда выводит полный путь до каталога, в котором вы находитесь: [username@server domains]$ pwd
/home/username/domains

cd — переход по директориям

Для перехода между каталогами используйте команду cd. В качестве аргумента укажите путь до папки, куда нужно переместиться: [username@server

cd (без параметров) — перейти в домашний каталог: [username@server public_html]$ cd
[username@server

]$ pwd // Выводим путь до текущего каталога.
/home/username // Вернулись в домашний каталог пользователя username.

mkdir — создание папки

Команда имеет вид: mkdir путь_до_каталога, где «путь_до_каталога» — путь к создаваемой папке, в конце указывается ее имя.

Если вы создаете каталог в том же месте, где находитесь, полный путь указывать не нужно: [username@server

touch — создание файла

touch создаёт пустой файл с именем и расширением, которое вы укажете, или обновляет дату модификации существующего файла: [username@server domains]$ touch example.txt // Создаем файл example.txt в текущем каталоге.

// Проверяем:
[username@server domains]$ ls // Выводим список файлов.
example.txt // Файл example.txt создан.

rm — удаление папок и файлов

Для удаления файла достаточно указать путь до него: [username@server public_html]$ rm example.txt

Чтобы удалить директорию, используйте ключи -r (рекурсивно) и -f (без подтверждения): [username@server public_html]$ rm -rf example1

Очистить текущий каталог от всех файлов и папок можно с помощью команды: [username@server public_html]$ rm -rf *

cp — копирование файлов/папок

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

mv — перемещение или переименование файлов и папок

Синтаксис команды mv такой же как, и у cp (копирование). Укажите сначала полный путь до файла, который нужно перенести, а затем путь до каталога, куда будут перемещены данные.

Чтобы переименовать файл, введите сначала текущее имя, а затем — новое: [username@server public_html]$ ls // Выводим список файлов в текущем каталоге.
example.txt
[username@server public_html]$ mv example.txt primer.txt // Изменяем имя example.txt на primer.txt.

// Проверяем:
[username@server public_html]$ ls // Выводим список файлов.
primer.txt // Файл переименован.

wget — получение файлов со сторонних сайтов

Скачивайте файлы на ваш аккаунт хостинга со сторонних ресурсов с помощью утилиты wget.

scp — передача файлов с компьютера

Команда scp поможет передать файлы с вашего устройства на unix на аккаунт. Заранее устаналивать соединение по SSH для использования этой утилиты не нужно. Выполните команду: [user@mycomputer

Чтобы передать каталог, используйте ключ -r (рекурсивно):

du — получение информации о занятом дисковом пространстве

Чтобы читать результат работы команды было проще, добавьте ключи:

  • -s — вывести общий объем каталога;
  • -h — отобразить размер файла в удобном формате (Кб, Мб или Гб).

В качестве аргумента укажите символ «*»: команда посчитает размер каждого каталога и файла в директории: [username@server

]$ du -sh *
70M domains
4,0K example2
4,0K tmp
12K username_wor00.sql.bz2.gz
16K username_wor1.sql

find — поиск файлов/папок

Команда имеет вид: find путь_до_каталога -ключи , где «путь_до_каталога» — папка, с которой начинается поиск.

Рекомендуем ознакомиться с руководством (man) для find, так как она обладает обширным набором ключей. Мы рассмотрим основные:

  • -name — поиск файлов, имена которых соответствуют заданному шаблону;
  • -type — поиск файлов определенного типа:
    • f — обычный файл;
    • d — каталог;
    • l — символическая ссылка.

    Примеры

    Найти все файлы с расширением .php в текущем каталоге (обозначается символом «.») и подкаталогах: [username@server

    Найти все файлы с расширением .php, а также файлы, имена которых начинаются с точки в каталоге public_html: [username@server

    Найти все каталоги, имена которых начинаются с «w» в текущей папке: [username@server

    Количество файлов

    С помощью find можно посчитать количество файлов на аккаунте. Выполните команду: [username@server

    grep — поиск файлов по их содержимому

    Команда имеет вид: grep "текст" путь_до_файла, где «текст» — информация, которую нужно найти, «путь_до_файла» — путь к файлу, по которому производится поиск.

    stat — подробная информация о файле

    ln — создание ссылки на файл

    Чаще всего применяется для создания символических ссылок (ярлыков). Используйте их, если необходимо, например, изменить путь до корневой директории сайта.

    сhmod — изменение прав доступа

    Изменить права на файл или папку можно с помощью команды chmod xxx путь_до_файла , где xxx - права, «путь_до_файла» — путь до папки или файла. Чтобы изменить права и на папку, и на ее содержимое, добавьте ключ -R (рекурсивно).

    Пример

    [username@server domains]$ chmod -R 777 /home/username/example2 // Устанавливаем права 777 для папки example2 и ее содержимого.

    ]$ stat example2 // Смотрим статус.
    Файл: «example2»
    Доступ: (0777/drwxrwxrwx) // Права для каталога example2 изменены на 777.
    [username@server

    ]$ cd example2/ // Переходим в example2.
    [username@server example2]$ ls // Выводим содержимое каталога.
    copytest.txt example1
    [username@server example2]$ stat copytest.txt // Смотрим статус файла copytest.txt.
    Файл: «copytest.txt»
    Доступ: (0777/-rwxrwxrwx) // Права доступа к файлу изменены на 777.

    mc — Midnight Commander

    Midnight Commander — файловый менеджер с текстовым интерфейсом, встроенный в консоль. Для запуска введите в команду mc.


    Работа с базами данных

    mysql — подключение к базе данных

    Процесс подключения к базе данных с помощью команды mysql мы описали в статье.

    Импорт дампа базы данных

    mysql позволяет импортировать дамп базы данных, загруженный на дисковое пространство аккаунта. Выполните команду: [username@server domains]$ mysql -u db_username -p db_name < dump_name.sql где

    • db_username — имя пользователя базы данных;
    • db_name — название базы;
    • dump_name.sql — имя дампа.

    mysqldump — экспорт дампа БД

    Чтобы выгрузить дамп на дисковое пространство аккаунта выполните команду: [username@server domains]$ mysqldump -u db_username -p db_name > dump_name.sql Он будет помещен в каталог, из которого выполнялось действие.

    Работа с архивами

    Выбор команды для распаковки архива зависит от формата, в котором он создан: [username@server domains]$ unzip archive.zip
    [username@server domains]$ unrar x archive.rar
    [username@server domains]$ tar xf archive.tar
    [username@server domains]$ tar xfz archive.tar.gz
    [username@server domains]$ gunzip archive.gz
    [username@server domains]$ 7za x archive.7z

    Особенности

    Для команды rar обязательно укажите параметр «x», чтобы сохранить структуру.

    gunzip распаковывает файлы, после чего удаляет архив. Если нужно его сохранить, создайте копию на дисковом пространстве аккаунта.

    crontab — планировщик Cron

    Настройте выполнение скриптов по расписанию с помощью планировщика Cron. Чтобы добавить новое задание, выполните: [username@server

    Выбор интерпретатора зависит от скрипта, который нужно выполнить. Для php-скриптов подойдет php, curl или wget, для Python или Node.js — python или node соответственно.

    Чтобы узнать путь до нужного интерпретатора, выполните команду: [username@server

    Сохраните изменения в редакторе vim. Нажмите Esc и введите «:q!»

    Вместо php укажите имя интерпретатора.

    idn — преобразование домена в Punycode

    Чтобы перевести IDN-домен в Punycode, выполните команду: [username@server


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

    Знание нескольких трюков ssh полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.

    Практические примеры SSH

    Разбор командной строки SSH

    В следующем примере используются обычные параметры, часто встречающиеся при подключении к удалённому серверу SSH .

    • -v : вывод отладочной информации особенно полезен при анализе проблем аутентификации. Можно использовать несколько раз для вывода дополнительной информации.
    • - p 22 : порт для подключения к удалённому серверу SSH. 22 не обязательно указывать, потому что это значение по умолчанию, но если протокол на каком-то другом порту, то указываем его с помощью параметра -p . Порт прослушивания указывается в файле sshd_config в формате Port 2222 .
    • -C : сжатие для соединения. Если у вас медленный канал или вы просматриваете много текста, это может ускорить связь.
    • neo@ : строка перед символом @ обозначает имя пользователя для аутентификации на удалённом сервере. Если не указать его, то по умолчанию будет использоваться имя пользователя учётной записи, в которую вы вошли в данный момент (

    Использование файла конфигурации


    Хотя многие знакомы с файлом sshd_config , есть ещё файл конфигурации клиента для команды ssh . Значение по умолчанию

    /.ssh/config , но его можно определить как параметр для опции -F .


    В приведённом выше примерном файле конфигурации ssh две записи хоста. Первая обозначает все хосты, для всех применяется параметр конфигурации Port 2222. Вторая говорит, что для хоста remoteserver следует использовать другое имя пользователя, порт, FQDN и IdentityFile.

    Файл конфигурации может сэкономить много времени на ввод символов, позволяя автоматически применять продвинутую конфигурацию при подключении к конкретным хостам.

    Копирование файлов по SSH с помощью SCP

    SSH-клиент поставляется с двумя другими очень удобными инструментами для копирования файлов по зашифрованному ssh-соединению. Ниже см. пример стандартного использования команд scp и sftp. Обратите внимание, что многие параметры для ssh применяются и в этих командах.


    В этом примере файл mypic.jpg скопирован на remoteserver в папку /media/data и переименован в mypic_2.jpg.

    Не забывайте о разнице в параметре порта. На этом попадаются многие, кто запускает scp из командной строки. Здесь параметр порта -P , а не -p , как в ssh-клиенте! Вы забудете, но не волнуйтесь, все забывают.

    Для тех, кто знаком с консольным ftp , многие из команд похожи в sftp . Вы можете сделать push, put и ls, как сердце пожелает.

    Во многих из этих примеров можно достичь результата разными методами. Как и во всех наших учебниках и примерах, предпочтение отдаётся практическим примерам, которые просто делают своё дело.

    1. SSH socks-прокси

    Функция SSH Proxy под номером 1 по уважительной причине. Она более мощная, чем многие предполагают, и даёт вам доступ к любой системе, к которой имеет доступ удалённый сервер, используя практически любое приложение. Клиент ssh может туннелировать трафик через прокси-сервер SOCKS одной простой командой. Важно понимать, что трафик к удалённым системам будет исходить от удалённого сервера, так будет указано в логах веб-сервера.


    Здесь мы запускаем socks-прокси на TCP-порту 8888, вторая команда проверяет, что порт активен в режиме прослушивания. 127.0.0.1 указывает, что служба работает только на localhost. Мы можем применить немного другую команду для прослушивания всех интерфейсов, включая ethernet или wifi, это позволит другим приложениям (браузерам и т д.) в нашей сети подключаться к прокси-сервису через ssh socks-прокси.


    Теперь можем настроить браузер для подключения к socks-прокси. В Firefox выберите Настройки | Основные | Параметры сети. Укажите IP-адрес и порт для подключения.


    Обратите внимание на опцию в нижней части формы, чтобы DNS-запросы браузера тоже шли через прокси SOCKS. Если используете прокси-сервер для шифрования веб-трафика в локальной сети, то наверняка захотите выбрать эту опцию, чтобы DNS-запросы туннелировались через SSH-соединение.

    Активация socks-прокси в Chrome

    Запуск Chrome с определёнными параметрами командной строки активирует socks-прокси, а также туннелирование DNS-запросов из браузера. Доверяй, но проверяй. Используйте tcpdump для проверки, что DNS-запросы больше не видны.

    Использование других приложений с прокси

    Имейте в виду, что многие другие приложения тоже могут использовать socks-прокси. Веб-браузер просто самое популярное из них. У некоторых приложений есть параметры конфигурации для активации прокси-сервера. Другим нужно немного помочь вспомогательной программой. Например, proxychains позволяет запустить через socks-прокси Microsoft RDP и др.


    Параметры конфигурации socks-прокси задаются в файле конфигурации proxychains.

    Подсказка: если используете удалённый рабочий стол из Linux на Windows? Попробуйте клиент FreeRDP. Это более современная реализация, чем rdesktop , с гораздо более плавным взаимодействием.

    Вариант использования SSH через socks-прокси

    Вы сидите в кафе или гостинице — и вынуждены использовать довольно ненадёжный WiFi. С ноутбука локально запускаем ssh-прокси и устанавливаем ssh-туннель в домашнюю сеть на локальный Rasberry Pi. Используя браузер или другие приложения, настроенные для socks-прокси, мы можем получить доступ к любым сетевым службам в нашей домашней сети или выйти в интернет через домашнее подключение. Всё между вашим ноутбуком и домашним сервером (через Wi-Fi и интернет до дома) зашифровано в туннеле SSH.

    2. Туннель SSH (переадресация портов)

    В простейшей форме SSH-туннель просто открывает порт в вашей локальной системе, который подключается к другому порту на другом конце туннеля.


    Разберём параметр -L . Его можно представить как локальную сторону прослушивания. Таким образом, в примере выше порт 9999 прослушивается на стороне localhost и переадресуется через порт 80 на remoteserver. Обратите внимание, что 127.0.0.1 относится к localhost на удалённом сервере!

    Поднимемся на ступеньку. В следующем примере порты прослушивания связываются с другими узлами локальной сети.


    В этих примерах мы подключаемся к порту на веб-сервере, но это может быть прокси-сервер или любая другая служба TCP.

    3. SSH-туннель на сторонний хост

    Мы можем использовать те же параметры для подключения туннеля с удалённого сервера к другой службе, запущенной на третьей системе.


    В данном примере мы перенаправляем туннель от remoteserver к веб-серверу, работающему на 10.10.10.10. Трафик с remoteserver к 10.10.10.10 уже не в SSH-туннеле. Веб-сервер на 10.10.10.10 будет считать remoteserver источником веб-запросов.

    4. Обратный SSH-туннель

    Здесь настроим прослушивающий порт на удалённом сервере, который будет подключаться обратно к локальному порту на нашем localhost (или другой системе).


    В этой SSH-сессии устанавливается соединение с порта 1999 на remoteserver к порту 902 на нашем локальном клиенте.

    5. Обратный прокси SSH

    В этом случае мы устанавливаем socks-прокси на нашем ssh-соединении, однако прокси слушает на удалённом конце сервера. Подключения к этому удалённому прокси теперь появляются из туннеля как трафик с нашего localhost.

    Устранение проблем с удалёнными SSH-туннелями

    Если у вас возникли проблемы с работой удалённых опций SSH, проверьте с помощью netstat , к каким ещё интерфейсам подключён порт прослушивания. Хотя мы в примерах указали 0.0.0.0, но если значение GatewayPorts в sshd_config установлено в значение no, то листенер будет привязан только к localhost (127.0.0.1).

    Предупреждение безопасности


    Обратите внимание, что при открытии туннелей и socks-прокси внутренние сетевые ресурсы могут быть доступны ненадёжным сетям (например, интернету!). Это может быть серьёзной угрозой безопасности, поэтому убедитесь, что вы понимаете, что представляет собой слушатель и к чему у него есть доступ.

    6. Установка VPN по SSH

    Общий термин среди спецов по методам атаки (пентестеры и проч.) — это «точка опоры в сети». После установления соединения в одной системе эта система становится шлюзом для дальнейшего доступа к сети. Точка опоры, которая позволяет двигаться вширь.

    Для такой точки опоры мы можем использовать SSH-прокси и proxychains, однако есть некоторые ограничения. Например, не получится работать напрямую с сокетами, поэтому мы не сможем сканировать порты внутри сети через Nmap SYN .

    Метод использует ssh , iptables , tun interfaces и маршрутизацию.

    Сначала нужно задать эти параметры в sshd_config . Поскольку мы вносим изменения в интерфейсы и удалённой, и клиентской системы, нам нужны права root с обеих сторон.


    Затем установим ssh-соединение, используя параметр, который запрашивает инициализацию tun-устройств.

    Сторона клиента SSH:


    Сторона сервера SSH:


    Теперь у нас прямой маршрут к другому хосту ( route -n и ping 10.10.10.10 ).

    Можно маршрутизировать любую подсеть через хост на другой стороне.


    На удалённой стороне необходимо включить ip_forward и iptables .


    Бум! VPN через туннель SSH на сетевом уровне 3. Вот это уже победа.

    Если возникают какие-то проблемы, используйте tcpdump и ping , чтобы установить причину. Поскольку мы играем на уровне 3, то наши пакеты icmp пойдут через этот туннель.

    7. Копирование ключа SSH (ssh-copy-id)


    Тут есть несколько способов, но эта команда экономит время, чтобы не копировать файлы вручную. Она просто копирует

    /.ssh/id_rsa.pub (или ключ по умолчанию) с вашей системы в

    /.ssh/authorized_keys на удалённом сервере.

    8. Удалённое выполнение команд (неинтерактивно)

    Команду ssh можно связать с другими командам для обычного удобного интерфейса. Просто добавьте команду, которую хотите запустить на удалённом хосте, в качестве последнего параметра в кавычках.


    В данном примере grep выполняется на локальной системе после того, как лог скачался по ssh-каналу. Если файл большой, удобнее запустить grep на удалённой стороне, просто заключив обе команды в двойные кавычки.

    Другой пример выполняет ту же самую функцию, что и ssh-copy-id из примера 7.

    9. Удалённый перехват пакетов и просмотр в Wireshark

    Я взял один из наших примеров по tcpdump. Используйте его для удалённого перехвата пакетов с выдачей результата непосредственно в GUI локального Wireshark.

    10. Копирование локальной папки на удалённый сервер по SSH

    Красивый трюк, который сжимает папку с помощью bzip2 (это параметр -j в команде tar ), а затем извлекает поток bzip2 на другой стороне, создавая на удалённом сервере дубликат папки.

    11. Удалённые приложения GUI с переадресацией SSH X11

    Если на клиенте и удалённом сервере установлены «иксы», то можно удалённо выполнить команду GUI, с окном на вашем локальном рабочем столе. Эта функция существует давным давно, но по-прежнему очень полезна. Запустите удалённый веб-браузер или даже консоль VMWawre Workstation, как я делаю в этом примере.


    Требуется строка X11Forwarding yes в файле sshd_config .

    12. Удалённое копирование файлов с помощью rsync и SSH

    rsync во многом удобнее scp , если требуется периодическое резервное копирование каталога, большого количества файлов или очень больших файлов. Здесь есть функция восстановления после сбоя передачи и копирования только изменённых файлов, что сохраняет трафик и время.

    В этом примере используется сжатие gzip (-z) и режим архивирования (-a), который включает рекурсивное копирование.

    13. SSH через сеть Tor

    Анонимная сеть Tor может туннелировать SSH-трафик с помощью команды torsocks . Следующая команда прокинет ssh-прокси через Tor.


    Torsocks будет использовать для прокси порт 9050 на localhost. Как всегда при использовании Tor необходимо серьёзно проверять, какой трафик туннелируется и другие проблемы операционной безопасности (opsec). Куда идут ваши DNS-запросы?

    14. SSH к инстансу EC2


    Для подключения к инстансу EC2 необходим закрытый ключ. Скачайте его (расширение .pem) из панели управления Amazon EC2 и измените разрешения ( chmod 400 my-ec2-ssh-key.pem ). Храните ключ в надёжном месте или поместите его в свою папку


    Параметр -i просто указывает ssh-клиенту использовать этот ключ. Файл

    /.ssh/config идеально подходит для автоматической настройки использования ключа при подключении к хосту ec2.

    15. Редактирование текстовых файлов с помощью VIM через ssh/scp

    Для всех любителей vim этот совет сэкономит немного времени. С помощью vim файлы редактируются по scp одной командой. Этот метод просто создаёт файл локально в /tmp , а затем копирует его обратно, как только мы его сохранили из vim .


    Примечание: формат немного отличается от обычного scp . После хоста у нас двойной // . Это ссылка на абсолютный путь. Один слэш будет означать путь относительно домашней папки users .


    Если увидите такую ошибку, дважды проверьте формат команды. Обычно это означает синтаксическую ошибку.

    16. Монтирование удалённого SSH как локальной папки с SSHFS

    При помощи sshfs — клиента файловой системы ssh — мы можем подключить локальный каталог к удалённому местоположению со всеми взаимодействиями файлов в зашифрованном сеансе ssh .


    На Ubuntu и Debian установим пакет sshfs , а затем просто приимонтируем удалённое расположение к нашей системе.

    17. Мультиплексирование SSH с помощью ControlPath

    По умолчанию при наличии существующего подключения к удалённому серверу с помощью ssh второе подключение с помощью ssh или scp устанавливает новый сеанс с дополнительной аутентификацией. Опция ControlPath позволяет использовать существующий сеанс для всех последующих соединений. Это значительно ускорит процесс: эффект заметен даже в локальной сети, а тем более при подключении к удалённым ресурсам.


    ControlPath указывает сокет для проверки новыми соединениями на предмет наличия активной сессии ssh . Последняя опция означает, что даже после выхода из консоли существующий сеанс останется открытым 10 минут, так что в течение этого времени вы сможете повторно подключиться по существующему сокету. Для дополнительной информации смотрите справку ssh_config man .

    18. Потоковое видео по SSH с помощью VLC и SFTP

    Даже давние пользователи ssh и vlc (Video Lan Client) не всегда знают об этой удобной опции, когда очень нужно посмотреть видео по сети. В настройках File | Open Network Stream программы vlc можно ввести местоположение как sftp:// . Если требуется пароль, появится запрос.

    19. Двухфакторная аутентификация

    Такая же двухфакторная аутентификация, как у вашего банковского счёта или учётной записи Google, применима к сервису SSH.

    Конечно, ssh изначально имеет функцию двухфакторной аутентификации, под которой подразумеваются пароль и ключ SSH. Преимущество аппаратного токена или приложения Google Authenticator заключается в том, что это обычно другое физическое устройство.

    20. Прыжки по хостам с ssh и -J

    Если из-за сегментации сети приходится переходить через несколько хостов ssh, чтобы добраться до конечной сети назначения, вам сэкономит время ярлык -J.


    Здесь главное понимать, что это не аналогично команде ssh host1 , затем user@host1:

    $ ssh host2 и т. д. Параметр -J хитро использует переадресацию, чтобы localhost устанавливал сеанс со следующим хостом в цепочке. Таким образом, в приведённом выше примере наш localhost аутентифицируется на host4. То есть используются наши ключи localhost, а сеанс от localhost до host4 полностью зашифрован.

    Для такой возможности в ssh_config укажите опцию конфигурации ProxyJump. Если регулярно приходится переходить через несколько хостов, то автоматизация через конфиг сэкономит массу времени.

    21. Блокировка попыток брутфорса SSH с помощью iptables

    С помощью iptables тоже можно легко блокировать попытки подключения к порту по достижении определённого порога. Простой способ сделать это — использовать OSSEC, поскольку он не только блокирует SSH, но выполняет кучу других мер по обнаружению вторжений на базе имени хоста (HIDS).

    22. SSH Escape для изменения переадресации портов

    Нажав enter , попробуйте ввести в консоли

    C . Это управляющая последовательность в сессии, позволяющая вносить изменения в существующее соединение.


    Здесь вы можете увидеть, что мы переадресовали наш локальный порт 1445 на хост Windows 2003, который нашли во внутренней сети. Теперь просто запустите msfconsole , и можно идти дальше (предполагая, что вы планируете использовать этот хост).

    Эти примеры, советы и команды ssh должны дать отправную точку; дополнительная информация о каждой из команд и возможностей доступна на справочных страницах ( man ssh , man ssh_config , man sshd_config ).

    Меня всегда очаровывала возможность обращаться к системам и выполнять команды в любой точке мира. Развивая свои навыки по работе с инструментами вроде ssh вы станете более эффективным в любой игре, в какую играете.

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

    Для подключения можно использовать терминал в вашей ОС, утилиту PuTTY или же веб-консоль в панели управления. Подробнее см. в статье статье "Подключение по SSH".

    Обратите внимание, что команды необходимо вводить в нижнем регистре. Например, pwd - корректное имя команды, Pwd - некорректное.

    Навигация

    Вывод текущей рабочей директории

    Для вывода информации о текущей рабочей директории используется команда pwd.

    Пример использования:

    Вывод содержимого директории

    Чтобы посмотреть содержимое директории, воспользуйтесь командой ls.

    Вывод содержимого текущей директории в несколько колонок (только имена файлов и директорий):

    Вывод содержимого текущей директории в одну колонку (только имена файлов и директорий):

    Вывод подробной информации о содержимом текущей директории, включая скрытые файлы (имя которых начинается с точки):

    Вывод содержимого конкретной директории:

    Пример использования:

    Перемещение между директориями

    Команда cd позволяет выполнить переход в другую директорию.

    Основные способы применения:

    Перейти в директорию, которая находится в текущей директории:

    Перейти в родительский каталог (на уровень выше):

    Перейти в домашний каталог:

    Перейти в домашний каталог по абсолютному пути (начиная с корня):

    Перейти в предыдущий каталог:


    Примеры использования:

    Действия с файлами и каталогами

    Создание директорий

    Команда для создания директорий - mkdir.

    Создать сразу несколько директорий:

    Создать дерево директорий:

    Пример использования:

    Создание файлов

    Для создания файлов можно использовать различные команды, например:

    Создать новый файл при его отсутствии (если файл существует, содержимое файла не изменяется):

    Создать новый файл при его отсутствии (если файл существует, то команда удаляет его содержимое):

    Создать новый файл при его отсутствии и записать в него строку "test" (если файл существует, то команда заменяет его содержимое на строку "test"):

    Вы можете выбрать удобный для вас способ или использовать любой другой.

    Также можно создать файл с помощью текстового редактора. На наших серверах доступен nano:

    При этом файл сразу будет открыт для редактирования.

    Чтобы сохранить изменения и закрыть файл, в nano можно воспользоваться сочетанием клавиш Crtl X → Y → Enter.

    Копирование файлов и каталогов

    Копирование каталогов и файлов осуществляется с помощью команды cp.

    Основные способы применения:

    Скопировать файл test.txt в файл test1.txt (файл test.txt должен присутствовать в текущей директории):

    Скопировать директорию dir1 в директорию dir2, включая всё содержимое (ключ -r означает рекурсивное копирование, директория dir1 должна присутствовать в текущей директории):

    Перемещение и переименование файлов

    Перемещение и переименование файлов выполняется при помощи команды mv.

    Основные способы применения:

    Переименовать файл test.txt в test2.txt (файл test.txt должен присутствовать в текущей директории):

    Переместить файл test2.txt в директорию dir (файл и директория должны присутствовать в текущей директории):

    Примеры использования:

    Удаление файлов и каталогов

    Для удаления объектов используйте команду rm.

    Основные способы применения:

    Удалить файл test.txt в текущем каталоге:

    Удалить все файлы в определенной директории:

    Удалить все файлы с расширением .txt в определенной директории:

    Удалить директорию и все ее содержимое:

    Для того, чтобы при удалении каждого файла запрашивалось подтверждение, можно использовать ключ -i:

    Если же файлов много и вы точно уверены в необходимости их удаления, можно использовать противоположную опцию -f, тогда удаление будет выполнено без подтверждения:

    Создание ссылок

    Ссылки при работе по SSH-протоколу создаются командой ln.

    Основные способы применения:

    Создать "жёсткую" ссылку:

    Создать "символьную" ссылку:

    Примеры использования:

    Изменение прав доступа к файлам и директориям

    Команда chmod позволяет настроить права доступа к файлам и директориям.

    Основные способы применения:

    Изменение прав на xxxx для файла file (file должен существовать в текущей директории):

    Изменение прав на xxxx для директории dir (dir должна существовать в текущей директории):

    Примеры использования:

    Работа с содержимым файлов

    Конкатенация содержимого файлов

    Команда cat позволяет выполнить конкатенацию (объединение) содержимого файлов и печать его в стандартный поток вывода. Данная команда зачастую используется просто для просмотра содержимого файла.

    Примеры использования:

    Данную команду можно использовать в сочетании с командами head и tail для вывода определённого количества строк от начала или конца файла соответственно.

    Примеры использования:

    Данные команды позволяют вывести 2 первых строки и 1 последнюю строку файла test.txt.

    Поиск по содержимому файла

    grep - это популярная команда, позволяющая найти содержимое файлов.

    Например, у нас есть файл test1.txt, который имеет следующее содержимое:

    Примеры использования grep:

    Данная команда имеет огромное количество способов применения. За дополнительной информацией вы можете обратиться к официальной документации, либо к свободным источникам в интернете.

    Поиск файлов

    Используйте команду find, чтобы найти нужный файл.

    Основные способы применения:

    Поиск файлов и каталогов с именем "test" в текущей директории:

    Поиск в текущей директории файлов и каталогов, имена которых начинаются на "test" и далее содержат любое количество любых символов:

    Поиск в домашней директории файлов и каталогов, имена которых начинаются на "test" и далее содержат любое количество любых символов:

    Поиск файлов с расширением ".php" в домашней директории:

    Пример использования:

    Архивы

    Создать архив директории:

    Распаковать архив .tar в текущую директорию:

    Процесс создания или распаковки тяжелых архивов может завершаться принудительно в связи с установленными ограничениями на использование процессами процессоров сервера.

    В таких случаях для архивирования в .tar вы можете использовать следующую команду, которая позволит ограничить скорость архивации и снизить использование ресурсов процессора.

    Для удобства команда может быть расширена, чтобы отобразить в консоли счетчик времени, оставшегося до завершения процесса, и вывести уведомление (END) о его завершении (позволит проконтролировать, что процесс не прервался и был выполнен успешно).

    Для распаковки большого архива .tar можно воспользоваться командой:

    Аналогично для распаковки архивов .tar.gz:

    Распаковка .tar.gz с уведомлением о завершении:

    Распаковать архив .rar в текущую директорию:

    Распаковать архив .zip в текущую директорию:

    Для распаковки тяжелых .zip-архивов:

    Базы данных

    Создание дампа базы данных:

    Импорт данных из дампа в базу данных:

    Проверка базы данных на наличие ошибок:

    Восстановление базы данных при наличии ошибок:

    Подробнее о восстановлении баз данных и решении возможных ошибок см. в статье Восстановление базы данных.

    Подключение к серверу баз данных:

    Нажмите Enter, после чего введите пароль базы.

    Получение информации о параметрах MySQL:

    Завершение работы процессов

    Завершить текущие процессы можно командой killall. Например, для завершения процессов веб-сервера Apache:

    Обратите внимание! После выполнения данной команды для перезапуска обработчиков Apache необходимо изменить версию обработчика php в разделе "Сайты".

    Аналогично для других сервисов, например:

    Завершение процесса MySQL:

    Для просмотра процессов MySQL используйте:

    Для завершения процессов MySQL можно также использовать утилиту pt-kill.

    Дисковое пространство

    Вывод информации о текущей дисковой квоте (в квоту не включается информация по базам данных):

    Вывести размер файлов и директорий в текущем каталоге:

    Анализ дискового пространства аккаунта (сканирует корневой каталог):

    Просканировать файлы конкретную директорию:

    Подробнее об использовании утилиты ncdu смотрите в статье Анализ дискового пространства.

    Другие вспомогательные команды

    Вывод истории команд:

    Очистить экран (сочетание клавиш Ctrl-L):

    Закрыть подключение по SSH (сочетание клавиш Ctrl-D):

    Сочетания клавиш:

    Ctrl-C - прервать выполнение текущей команды.

    Ctrl-Shift-C - копировать выделенный фрагмент (в интерфейсе PuTTY копирование осуществляется простым выделением).

    Ctrl-Shift-V - вставить (в интерфейсе PuTTY вставка осуществляется нажатием на правую кнопку мыши).

    PuTTY: как пользоваться, настройка, основные команды

    Подключение между двумя компьютерами в среде Linux осуществляется через SSH. Это сетевой протокол прикладного уровня, производящий удаленное управление ОС и туннелирование TCP-соединений. Его использование обусловлено простотой и надежностью, что позволяет выполнять безопасное подключение к серверу.

    Соединение по SSH дает возможность выполнять любые команды на удаленном компьютере так, будто мы находимся прямо перед ним. Такой процесс обычно осуществляется через специальные утилиты, особенно если нужно получить доступ к Linux через Windows. Одной из программ таких является PuTTY, о которой речь пойдет в сегодняшней статье. Как ее настроить и подключиться через нее к серверу – читайте далее.

    Где скачать PuTTY

    PuTTY распространяется в бесплатном доступе на официальном сайте разработчика. Переходим по ссылке и загружаем подходящую версию приложения под разрядность операционной системы.

    Putty

    Скачиваем инсталлятор и запускаем его. Перед нами отобразится окно приветствия – кликаем по кнопке «Next» до конечного пункта. По пути мы также можем изменить местоположение программы, а также добавить или исключить некоторые функции PuTTY.

    Как установить putty на компьютер

    После успешной установки в меню «Пуск» появится новый ярлык под названием PuTTY – с ним мы и будем работать в последующих разделах.

    Как настроить PuTTY

    В настройках программы нет ничего сложного. Давайте откроем программу и посмотрим, что в ней есть. После запуска перед нами отобразится окно конфигурации приложения, где слева находятся различные категории, а справа – их настройки.

    Putty как настроить

    Программа включает в себя 4 основных раздела:

    • Session — основная вкладка, предназначенная для подключения к удаленному компьютеру. Здесь вводятся параметры подключения, порт, адрес, а также вносятся так называемые пресеты, которыми можно воспользоваться, чтобы не вводить каждый раз данные для входа. Достаточно один раз прописать настройки сессии, сохранить ее и использовать при следующем запуске программы.
    • Terminal — необходима для включения или отключения возможностей терминала.
    • Window — здесь производятся все настройки интерфейса: внешний вид окна, цвет, шрифт и кодировка.
    • Connection — настройка параметров подключения, алгоритма шифрования, сжатия, ключей аутентификации и других значений.

    Нам потребуется всего две вкладки: Session и SSH. Первым делом перейдем ко второй и убедимся, что версия протокола стоит в значении «2». Как правило, сейчас используется понятие SSH-2, так как первая версия практически не применяется из-за существенных недостатков, например, ошибки в схеме обеспечения безопасности.

    Как настроить putty

    Вернемся к разделу Session, где находятся основные параметры, которые потребуются нам для подключения к серверу по SSH. Давайте немного остановимся и поговорим о них:

    1. Первый блок включает в себя основные параметры, необходимые для подключения: окно ввода IP-адреса и порта, строку с выбором типа подключения.
    2. Следующий блок предназначен для создания пресетов, которые можно использовать для быстрого подключения к удаленному компьютеру. В строку «Saved Sessions» вводится название сессии, оно сохраняется с помощью кнопки «Save». Чтобы воспользоваться сохраненным пресетом, достаточно его загрузить с помощью кнопки «Load».
    3. Последний блок – параметры закрытия окна при выходе. Доступные значения: always, never, only on clean exit.

    Как видите, в настройках PuTTY нет ничего сложного. Теперь давайте перейдем к подключению по протоколу SSH.

    Как подключиться по SSH

    Нам понадобится IP-адрес удаленного компьютера или сервера, к которому мы хотим подключиться. Последующие действия мы будем рассматривать на примере VDS от Timeweb – все шаги аналогичны любому хостингу, поэтому у вас не должно возникнуть никаких вопросов. Если же подключаетесь не к серверу, а к компьютеру, то можете сразу переходить ко второму пункту.

    Подключаемся по SSH:

    1. Первым делом узнаем, какой используется адрес у VDS – для этого переходим в личный кабинет хостинга и заходим в список подключенных серверов. На Timeweb адрес можно узнать в специально отведенном для этого столбце.
    2. Переходим к PuTTY – запускаем программу и открываем раздел «Session». Там вводим адрес удаленного компьютера, указываем порт 22 и в нижней части приложения кликаем по кнопке «Open».
    3. При успешном вводе данных перед нами отобразится консольное окно, в котором нужно ввести логин и пароль для подключения к серверу. Как правило, логин – root, а пароль отправляется хостингом в почтовом письме после установки ОС.
    4. Если логин и пароль были введены корректно, то мы увидим окно приветствия.

    Таким образом мы подключились к ПК на операционной системе Linux. Здесь мы можем вводить команды и удаленно взаимодействовать с компьютером.

    VDS Timeweb арендовать

    Основные команды PuTTY

    Как говорилось ранее, для использования удаленного компьютера нам необходимо вводить различный набор команд. Их огромное множество, но для первоначального изучения достаточно знать лишь их небольшую часть.

    ls — предназначена для вывода файлов, содержит в себе набор команд:

    • ls -la — выводит различные документы и показывает права доступа, включая имя создателя и владельца;
    • ls -lha — также выводит файлы, но показывает размер файла в байтах;
    • ls -lha | less — используется для постраничного просмотра документов.

    cd — необходима для перемещения между директориями, например, cd [путь] перенаправляет пользователя в указанную папку, cd../ перемещает в верхний уровень, cd

    открывает корневую папку.

    echo — позволяет перемещать текст в файл. Например, если нам требуется создать новый текстовый документ или добавить текст в уже созданный файл, достаточно ввести «echo Привет, мир! >> new.txt».

    sudo — наиболее используемая команда, означающая «SuperUser Do». Она позволяет выполнять любые команды от имени администратора.

    df — дает возможность увидеть доступное дисковое пространство в каждом из разделов операционной системы. Синтаксис: df [опции устройство].

    mv — используются для переименования файлов и перемещения их в другую директорию. Синтаксис: mv [опции исходные_файлы куда].

    rm — если нужно удалить файлы или директорию целиком, то используйте эту команду. Синтаксис: rm [опции файл(ы)].

    cp — для копирования файлов и целых директорий воспользуйтесь этой строчкой. Синтаксис: cp [опции файл-источник файл-приемник].

    mc — предназначена для запуска файлового менеджера Midnight Commander, который позволяет работать с файлами по FTP внутри консольного окна.

    Как запустить midnight commander в linux

    cat — наиболее популярная команда в Linux, позволяющая считывать данные из файлов и выводить их содержимое. Наиболее простой способ отображения содержимого в командной строке. Синтаксис: cat [опции файл].

    mkdir — позволяет создать одну или несколько директорий с указанным именем. Например, mkdir mdir1 mdir2 mdir3 добавит сразу 3 директории.

    chmod — изменяет права доступа к файлам и каталогам. Синтаксис: chmod [ключи установка_прав имя_файла].

    pwd — при первом запуске терминала мы оказываемся в домашнем каталоге пользователя. Если вдруг каталог был изменен, то проверить это можно с помощью данной команды.

    touch — используется для создания любого типа файлов: от пустого txt до пустого zip. Синтаксис: touch [имя файла].

    man и --help — нужны для того, чтобы узнать информацию о команде и о том, как ее можно использовать (man). Например, «man cat» покажет доступную информацию о команде cat. Ввод имени команды и аргумента помогает показать, каким образом можно использовать команду, например, cd –help.

    locate — предназначена для поиска файла в системе Linux.

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

    Как подключиться к серверу без пароля

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

    Готово! Теперь при повторном входе на сервер авторизация не потребуется. Главное – сохранить настройки сессии, чтобы не вводить ключ каждый раз.

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

    Читайте также: