Найти в Дзене
Skill Up In IT

DevOps and Unix

В этой статье мы рассмотрим пошаговую настройку Unix-подобной операционной системы (например, Linux) на виртуальной машине, начиная с установки и заканчивая настройкой сети. В качестве примера будем использовать дистрибутив Ubuntu Server, но основные шаги применимы и к другим Unix-системам. Для начала необходимо выбрать программное обеспечение для виртуализации. Наиболее популярные варианты: В этом примере будем использовать VirtualBox. Проверьте доступные сетевые интерфейсы командой: bash ip a
Вы должны увидеть список интерфейсов и их IP-адреса. Если вы хотите настроить статический IP-адрес, отредактируйте конфигурационный файл сетевого интерфейса: Откройте файл конфигурации: bash sudo nano /etc/netplan/01-netcfg.yaml
Внесите изменения, например: yaml network: version: 2 ethernets: eth0: dhcp4: no
addresses: - 192.168.1.100/24
gateway4: 192.168.1.1
nameservers: addresses: - 8.8.8.8
- 8.8.4.4
bash sudo n
Оглавление

В этой статье мы рассмотрим пошаговую настройку Unix-подобной операционной системы (например, Linux) на виртуальной машине, начиная с установки и заканчивая настройкой сети. В качестве примера будем использовать дистрибутив Ubuntu Server, но основные шаги применимы и к другим Unix-системам.

изображение взято с просторов интернета
изображение взято с просторов интернета

1. Установка виртуальной машины

1.1. Выбор гипервизора

Для начала необходимо выбрать программное обеспечение для виртуализации. Наиболее популярные варианты:

  • VirtualBox (бесплатный, кроссплатформенный)
  • VMware Workstation Player (бесплатный для некоммерческого использования)
  • Hyper-V (встроен в Windows Pro и Enterprise)
  • KVM (для Linux)

В этом примере будем использовать VirtualBox.

1.2. Установка VirtualBox

  1. Скачайте и установите VirtualBox с официального сайта.
  2. Запустите VirtualBox и нажмите "Создать" для создания новой виртуальной машины.
  3. Укажите имя виртуальной машины, выберите тип ОС (Linux) и версию (Ubuntu 64-bit).
  4. Выделите объем оперативной памяти (рекомендуется не менее 2 ГБ).
  5. Создайте виртуальный жесткий диск (рекомендуется не менее 20 ГБ).

1.3. Настройка виртуальной машины

  1. Выберите созданную виртуальную машину и нажмите "Настроить".
  2. В разделе "Система" убедитесь, что включены параметры "Включить EFI" и "Аппаратное ускорение".
  3. В разделе "Носители" выберите пустой оптический привод и укажите путь к ISO-образу Ubuntu Server.
  4. В разделе "Сеть" выберите тип подключения "Сетевой мост" (Bridged Adapter), чтобы виртуальная машина получила доступ к локальной сети.

2. Установка Ubuntu Server

2.1. Загрузка с ISO-образа

  1. Запустите виртуальную машину.
  2. Начнется загрузка с ISO-образа. Выберите язык и нажмите "Установить Ubuntu Server".

2.2. Настройка сети

  1. На этапе настройки сети выберите интерфейс (обычно eth0 или ens33).
  2. Выберите "Автоматическая настройка через DHCP" или вручную укажите IP-адрес, маску подсети, шлюз и DNS-серверы.

2.3. Разметка диска

  1. Выберите "Автоматическая разметка диска" или настройте вручную, создав разделы для корневого каталога (/), домашнего каталога (/home) и swap-раздела.

2.4. Настройка пользователя

  1. Укажите имя пользователя, пароль и имя хоста.
  2. Выберите, устанавливать ли SSH-сервер (рекомендуется установить).

2.5. Завершение установки

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

3. Настройка сети

3.1. Проверка сетевых интерфейсов

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

bash

ip a


Вы должны увидеть список интерфейсов и их IP-адреса.

3.2. Настройка статического IP-адреса (опционально)

Если вы хотите настроить статический IP-адрес, отредактируйте конфигурационный файл сетевого интерфейса:

Откройте файл конфигурации:

bash

sudo nano /etc/netplan/01-netcfg.yaml

Внесите изменения, например:

yaml

network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
  1. Примените изменения:

bash

sudo netplan apply

3.3. Настройка SSH

Убедитесь, что SSH-сервер установлен и запущен:

bash

sudo systemctl status ssh

Если SSH не установлен, установите его:

bash

sudo apt update
sudo apt install openssh-server

Для повышения безопасности измените порт SSH и отключите вход по паролю:
Откройте конфигурационный файл SSH:

bash

sudo nano /etc/ssh/sshd_config

Измените порт (например, на 2222):

bash

Port 2222



Отключите вход по паролю:

bash

PasswordAuthentication no

Перезапустите SSH-сервер:

bash

sudo systemctl restart ssh

3.4. Настройка фаервола

Установите ufw (Uncomplicated Firewall):

bash

sudo apt install ufw

Разрешите SSH и другие необходимые порты:

bash

sudo ufw allow 2222/tcp
sudo ufw allow http
sudo ufw allow https

Включите фаервол:

bash

sudo ufw enable

4. Дополнительные настройки

4.1. Обновление системы

Обновите пакеты системы:

bash

sudo apt update
sudo apt upgrade

4.2. Установка дополнительного ПО

  1. Установите необходимые пакеты, например:

bash

sudo apt install vim git curl

4.3. Настройка времени

  1. Убедитесь, что время синхронизировано:

bash

sudo timedatectl set-ntp true

Подключение к Unix-машине по SSH

1. Подключение с Linux/macOS

На Linux и macOS SSH-клиент предустановлен. Для подключения выполните следующие шаги:

Откройте терминал.

Используйте команду ssh для подключения:

bash

ssh username@server_ip -p 2222


username — имя пользователя на Unix-машине.
server_ip — IP-адрес сервера.
-p 2222 — порт SSH (если вы изменили порт).

Если вы используете SSH-ключи, убедитесь, что приватный ключ находится в ~/.ssh/id_rsa. Если ключ имеет другое имя, укажите его:

bash

ssh -i ~/.ssh/my_key username@server_ip -p 2222

При первом подключении вы увидите запрос на добавление сервера в список известных хостов. Введите yes.

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

2. Подключение с Windows

На Windows SSH-клиент не предустановлен (кроме Windows 10/11, где есть OpenSSH). Рассмотрим два способа подключения.

Способ 1: Использование OpenSSH (Windows 10/11)

Откройте PowerShell или командную строку.

Используйте команду ssh:

bash

ssh username@server_ip -p 2222

Если вы используете SSH-ключи, убедитесь, что приватный ключ находится в C:\Users\YourUsername\.ssh\id_rsa.

Способ 2: Использование PuTTY

PuTTY — популярный SSH-клиент для Windows.

  1. Скачайте и установите PuTTY с официального сайта.
  2. Запустите PuTTY.
  3. В поле "Host Name (or IP address)" введите IP-адрес сервера.
  4. Укажите порт SSH (например, 2222) в поле "Port".
  5. Если вы используете SSH-ключи:
    Перейдите в раздел "Connection" -> "SSH" -> "Auth".
    Укажите путь к приватному ключу (в формате .ppk).
  6. Нажмите "Open" для подключения.
  7. Введите имя пользователя и пароль (если используется аутентификация по паролю).

3. Использование SSH-ключей для аутентификации

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

3.1. Генерация SSH-ключей

На вашем локальном компьютере выполните команду:

bash

ssh-keygen -t rsa -b 4096

Укажите путь для сохранения ключей (по умолчанию ~/.ssh/id_rsa).

При необходимости задайте парольную фразу для ключа.

3.2. Копирование публичного ключа на сервер

Используйте команду ssh-copy-id для копирования ключа:

bash

ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip -p 2222

Если ssh-copy-id недоступен, скопируйте ключ вручную:

bash

cat ~/.ssh/id_rsa.pub | ssh username@server_ip -p 2222 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Убедитесь, что права доступа к файлу authorized_keys корректны:

bash

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

3.3. Подключение с использованием SSH-ключей

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

bash

ssh username@server_ip -p 2222

4. Дополнительные возможности SSH

4.1. Передача файлов через SCP

SCP (Secure Copy) позволяет передавать файлы между локальной машиной и сервером.

Копирование файла на сервер:

bash

scp -P 2222 myfile.txt username@server_ip:/path/to/destination

Копирование файла с сервера:

bash

scp -P 2222 username@server_ip:/path/to/file /local/destination

4.2. Туннелирование через SSH

SSH позволяет создавать туннели для безопасной передачи данных.

Локальное туннелирование (проброс порта):

bash

ssh -L 8080:localhost:80 username@server_ip -p 2222

Теперь локальный порт 8080 будет перенаправлен на порт 80 сервера.

Удаленное туннелирование:

bash

ssh -R 8080:localhost:80 username@server_ip -p 2222

Теперь порт 8080 на сервере будет перенаправлен на порт 80 вашей локальной машины.

5. Рекомендации по безопасности

  1. Используйте SSH-ключи вместо паролей.
  2. Измените порт SSH (не используйте стандартный порт 22).
  3. Отключите вход под root.
  4. Ограничьте доступ по IP с помощью фаервола.
  5. Регулярно обновляйте SSH-сервер и операционную систему.

Основные команды с примерами

1. Навигация по файловой системе

1.1. pwd (Print Working Directory)

Показывает текущую директорию.

Пример:

bash

pwd

Вывод:

/home/user

1.2. ls (List)

Отображает содержимое директории.

Примеры:

  • Показать содержимое текущей директории:

bash

ls
  • Показать содержимое с подробной информацией (права доступа, размер, владелец):

bash

ls -l
  • Показать скрытые файлы (начинающиеся с точки):

bash

ls -a

1.3. cd (Change Directory)

Изменяет текущую директорию.

Примеры:

  • Перейти в домашнюю директорию:

bash

cd ~
  • Перейти в корневую директорию:

bash

cd /
  • Перейти на уровень выше:

bash

cd ..

2. Работа с файлами и директориями

2.1. mkdir (Make Directory)

Создает новую директорию.

Пример:

bash

mkdir myfolder

2.2. touch

Создает пустой файл или обновляет время модификации существующего файла.

Пример:

bash

touch myfile.txt

2.3. cp (Copy)

Копирует файлы или директории.

Примеры:

  • Скопировать файл:

bash

cp file1.txt file2.txt
  • Скопировать директорию рекурсивно:

bash

cp -r dir1 dir2

2.4. mv (Move)

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

Примеры:

  • Переименовать файл:

bash

mv oldname.txt newname.txt
  • Переместить файл в другую директорию:

bash

mv file.txt /path/to/destination/

2.5. rm (Remove)

Удаляет файлы или директории.

Примеры:

  • Удалить файл:

bash

rm file.txt
  • Удалить директорию рекурсивно:

bash

rm -r myfolder
  • Удалить директорию с подтверждением:

bash

rm -ri myfolder

3. Просмотр и редактирование файлов

3.1. cat (Concatenate)

Показывает содержимое файла.

Пример:

bash

cat myfile.txt

3.2. less и more

Постраничный просмотр файлов.

Пример:

bash

less myfile.txt

(Для выхода из less нажмите q.)

3.3. nano, vim, emacs

Текстовые редакторы для редактирования файлов.

Пример:

bash

nano myfile.txt

4. Управление процессами

4.1. ps (Process Status)

Показывает запущенные процессы.

Примеры:

  • Показать процессы текущего пользователя:

bash

ps
  • Показать все процессы:

bash

ps aux

4.2. top

Интерактивный мониторинг процессов.

Пример:

bash

top

(Для выхода нажмите q.)

4.3. kill

Завершает процесс по его идентификатору (PID).

Пример:

bash

kill 1234

(Где 1234 — PID процесса.)

5. Работа с сетью

5.1. ping

Проверяет доступность хоста в сети.

Пример:

bash

ping google.com

5.2. ifconfig или ip

Показывает сетевые интерфейсы и их настройки.

Пример:

bash

ifconfig

или

bash

ip a

5.3. ssh (Secure Shell)

Подключение к удаленному серверу.

Пример:

bash

ssh user@192.168.1.100

5.4. scp (Secure Copy)

Копирование файлов между компьютерами через SSH.

Пример:

bash

scp file.txt user@192.168.1.100:/path/to/destination/

6. Поиск файлов и текста

6.1. find

Поиск файлов по имени, размеру, дате и другим критериям.

Примеры:

  • Найти файл по имени:

bash

find /path/to/search -name "myfile.txt"
  • Найти файлы больше 10 МБ:

bash

find /path/to/search -size +10M

6.2. grep

Поиск текста в файлах.

Примеры:

  • Найти строку в файле:

bash

grep "search_text" myfile.txt
  • Рекурсивный поиск в директории:

bash

grep -r "search_text" /path/to/search

7. Управление правами доступа

7.1. chmod

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

Примеры:

  • Дать права на выполнение файла:

bash

chmod +x script.sh
  • Установить права rwxr-xr--:

bash

chmod 754 file.txt

7.2. chown

Изменяет владельца файла или директории.

Пример:

bash

chown user:group file.txt

8. Архивация и сжатие

8.1. tar

Создание и распаковка архивов.

Примеры:

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

bash

tar -cvf archive.tar /path/to/files
  • Распаковать архив:

bash

tar -xvf archive.tar

8.2. gzip и gunzip

Сжатие и распаковка файлов.

Пример:

bash

gzip file.txt
gunzip file.txt.gz

Заключение

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