Главная > Управление сетью > ssh

Руководство по команде SSH (Secure Shell)

SSH (Secure Shell) — это сетевой протокол, который позволяет безопасно подключаться к удаленным компьютерам и выполнять команды. Он обеспечивает безопасность данных с помощью шифрования и используется для различных целей, таких как управление удаленными серверами и передача файлов. Ознакомьтесь с основными функциями и методами использования SSH в этом руководстве.

Обзор 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` с удаленного сервера в текущую директорию локального ПК.


Те же команды в категории