В этой статье мы рассмотрим пошаговую настройку Unix-подобной операционной системы (например, Linux) на виртуальной машине, начиная с установки и заканчивая настройкой сети. В качестве примера будем использовать дистрибутив Ubuntu Server, но основные шаги применимы и к другим Unix-системам.
1. Установка виртуальной машины
1.1. Выбор гипервизора
Для начала необходимо выбрать программное обеспечение для виртуализации. Наиболее популярные варианты:
- VirtualBox (бесплатный, кроссплатформенный)
- VMware Workstation Player (бесплатный для некоммерческого использования)
- Hyper-V (встроен в Windows Pro и Enterprise)
- KVM (для Linux)
В этом примере будем использовать VirtualBox.
1.2. Установка VirtualBox
- Запустите VirtualBox и нажмите "Создать" для создания новой виртуальной машины.
- Укажите имя виртуальной машины, выберите тип ОС (Linux) и версию (Ubuntu 64-bit).
- Выделите объем оперативной памяти (рекомендуется не менее 2 ГБ).
- Создайте виртуальный жесткий диск (рекомендуется не менее 20 ГБ).
1.3. Настройка виртуальной машины
- Выберите созданную виртуальную машину и нажмите "Настроить".
- В разделе "Система" убедитесь, что включены параметры "Включить EFI" и "Аппаратное ускорение".
- В разделе "Носители" выберите пустой оптический привод и укажите путь к ISO-образу Ubuntu Server.
- В разделе "Сеть" выберите тип подключения "Сетевой мост" (Bridged Adapter), чтобы виртуальная машина получила доступ к локальной сети.
2. Установка Ubuntu Server
2.1. Загрузка с ISO-образа
- Запустите виртуальную машину.
- Начнется загрузка с ISO-образа. Выберите язык и нажмите "Установить Ubuntu Server".
2.2. Настройка сети
- На этапе настройки сети выберите интерфейс (обычно eth0 или ens33).
- Выберите "Автоматическая настройка через DHCP" или вручную укажите IP-адрес, маску подсети, шлюз и DNS-серверы.
2.3. Разметка диска
- Выберите "Автоматическая разметка диска" или настройте вручную, создав разделы для корневого каталога (/), домашнего каталога (/home) и swap-раздела.
2.4. Настройка пользователя
- Укажите имя пользователя, пароль и имя хоста.
- Выберите, устанавливать ли SSH-сервер (рекомендуется установить).
2.5. Завершение установки
- Дождитесь завершения установки и перезагрузите виртуальную машину.
- После перезагрузки войдите в систему с указанным именем пользователя и паролем.
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
- Примените изменения:
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. Установка дополнительного ПО
- Установите необходимые пакеты, например:
bash
sudo apt install vim git curl
4.3. Настройка времени
- Убедитесь, что время синхронизировано:
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.
- Запустите PuTTY.
- В поле "Host Name (or IP address)" введите IP-адрес сервера.
- Укажите порт SSH (например, 2222) в поле "Port".
- Если вы используете SSH-ключи:
Перейдите в раздел "Connection" -> "SSH" -> "Auth".
Укажите путь к приватному ключу (в формате .ppk). - Нажмите "Open" для подключения.
- Введите имя пользователя и пароль (если используется аутентификация по паролю).
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. Рекомендации по безопасности
- Используйте SSH-ключи вместо паролей.
- Измените порт SSH (не используйте стандартный порт 22).
- Отключите вход под root.
- Ограничьте доступ по IP с помощью фаервола.
- Регулярно обновляйте 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-системой через командную строку. Постепенно изучая дополнительные команды и их опции, вы сможете решать более сложные задачи и автоматизировать свою работу.