Обзор SSH
SSH работает по модели клиент-сервер и подключается к SSH-серверу с помощью SSH-клиента. По умолчанию используется 22-й порт, и связь защищена от атак типа 'человек посередине' и перехвата данных с помощью мощной технологии шифрования.
Основные функции SSH
SSH предоставляет следующие основные функции:
Основные функции SSH
- Удаленное выполнение команд: Вы можете выполнять команды непосредственно на удаленном сервере.
- Безопасная передача файлов: Вы можете безопасно передавать файлы с помощью `scp` (Secure Copy) или `sftp` (SSH File Transfer Protocol).
- Портовое перенаправление (туннелирование): Создает зашифрованный туннель между локальным и удаленным портами для безопасного использования определенных служб.
- X11 перенаправление: Позволяет запускать GUI-приложения удаленного сервера на локальном ПК.
- Аутентификация на основе ключей SSH: Предоставляет более надежный и удобный метод аутентификации с использованием пары открытого и закрытого ключей вместо пароля.
Основные команды SSH
Узнайте, как подключаться к удаленным серверам и выполнять различные задачи с помощью команды SSH. Комбинируйте различные опции, чтобы использовать необходимые функции.
1. Основные подключения и аутентификация
2. Расширенные функции и перенаправление
Сгенерированная команда:
Комбинируйте команды.
Описание:
`ssh` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Аутентификация на основе ключей SSH
Аутентификация на основе ключей SSH является гораздо более безопасным и удобным методом, чем аутентификация по паролю. Она использует пару открытого и закрытого ключей для аутентификации, что снижает риск утечки паролей.
Создание ключа SSH
Используйте команду `ssh-keygen` для создания пары открытого и закрытого ключей. По умолчанию будут созданы файлы `~/.ssh/id_rsa` (закрытый ключ) и `~/.ssh/id_rsa.pub` (открытый ключ).
Команда для создания ключа SSH
ssh-keygen -t rsa -b 4096
Создает новую пару SSH-ключей на диске. Вы можете установить место хранения ключа и пароль.
Распространение открытого ключа
Сгенерированный открытый ключ (`id_rsa.pub`) необходимо добавить в файл `~/.ssh/authorized_keys` в домашнем каталоге пользователя удаленного сервера. Пользователь, чей открытый ключ зарегистрирован в этом файле, может подключаться к серверу без пароля, используя соответствующий закрытый ключ.
Копирование открытого ключа на сервер (с использованием ssh-copy-id)
ssh-copy-id user@hostname
Используя команду `ssh-copy-id`, вы можете легко скопировать открытый ключ на удаленный сервер. Это самый рекомендованный метод.
Ручное копирование открытого ключа (с использованием scp)
scp ~/.ssh/id_rsa.pub user@hostname:~/
ssh user@hostname "mkdir -p ~/.ssh && cat ~/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && rm ~/id_rsa.pub"
Если вы не можете использовать `ssh-copy-id`, вы можете использовать `scp` для копирования файла открытого ключа на сервер, а затем вручную добавить его в `authorized_keys`.
Файл конфигурации SSH (~/.ssh/config)
Используя файл конфигурации SSH (`~/.ssh/config`), вы можете заранее сохранить информацию о подключении к часто используемым серверам для удобного доступа. Вам не нужно каждый раз вводить сложные опции, вы можете просто подключаться по псевдониму (Alias).
Пример файла конфигурации
Вот пример файла `~/.ssh/config`. Вы можете определить настройки подключения для нескольких хостов.
Содержимое файла конфигурации
Host myserver
HostName 192.168.1.100
User myuser
Port 2222
IdentityFile ~/.ssh/my_server_key.pem
Host dev-web
HostName dev.example.com
User webadmin
ForwardAgent yes
LocalForward 8080 localhost:80
Основные опции настройки
Вот основные опции, которые можно использовать в файле `config`.
- Host: Псевдоним этого блока настройки. Используется как `ssh myserver`.
- HostName: IP-адрес или доменное имя удаленного хоста, к которому вы хотите подключиться.
- User: Имя пользователя для подключения к удаленному серверу.
- Port: Номер порта для подключения.
- IdentityFile: Путь к файлу закрытого ключа, используемого для аутентификации.
- LocalForward: Настройка локального портового перенаправления. `LocalForward [local_port] [remote_host]:[remote_port]`
- RemoteForward: Настройка удаленного портового перенаправления. `RemoteForward [remote_port] [local_host]:[local_port]`
- ForwardAgent: Активирует перенаправление SSH-агента. Полезно при переходе через несколько серверов.
- ServerAliveInterval: Регулярно отправляет сигнал на сервер, чтобы поддерживать соединение SSH. (в секундах)
- StrictHostKeyChecking: Настройка проверки ключа хоста. `yes` или `no`
Подключение с использованием файла конфигурации
ssh myserver
Если вы определили псевдоним Host под названием `myserver` в файле `~/.ssh/config`, вы можете просто подключиться следующим образом.
Примеры использования
Изучите различные примеры использования команды SSH для управления удаленными серверами и передачи файлов через реальные сценарии.
Основное подключение SSH
ssh testuser@192.168.1.100
Подключается к серверу 192.168.1.100 под именем testuser. Появится сообщение запроса на ввод пароля.
Подключение с использованием файла ключа SSH
ssh -i ~/.ssh/my_key.pem ubuntu@ec2-1-2-3-4.compute-1.amazonaws.com
Подключается к серверу с использованием файла закрытого ключа `~/.ssh/my_key.pem` вместо пароля. (широко используется в облачных средах)
Выполнение одной команды на удаленном сервере
ssh user@hostname "ls -l /var/log"
Выполняет команду `ls -l /var/log` на удаленном сервере без подключения к нему и получает результат локально.
Локальное портовое перенаправление (доступ к веб-службе)
ssh -L 8888:localhost:80 user@hostname
Подключается к 80-му порту удаленного сервера через 8888-й порт локального ПК. Вы можете получить доступ к веб-серверу так, как будто он находится локально.
Копирование файла с использованием SCP (локальный -> удаленный)
scp mylocalfile.txt user@hostname:/tmp/
Копирует файл `mylocalfile.txt` с локального ПК в директорию `/tmp/` на удаленном сервере.
Копирование файла с использованием SCP (удаленный -> локальный)
scp user@hostname:/var/log/syslog .
Копирует файл `/var/log/syslog` с удаленного сервера в текущую директорию локального ПК.