Spec-Zone.ru › MySQL Shell 8.4

4.3.6 Использование туннеля SSH

MySQL Shell поддерживает туннелирование SSH для подключения к экземплярам сервера MySQL. Туннель SSH позволяет передавать нешифрованный трафик по шифрованному соединению и обеспечивает авторизованный удаленный доступ к серверам, защищенным от внешних подключений брандмауэром.

Использование команд AdminAPI не поддерживается при подключениях из MySQL Shell через туннель SSH, за исключением команд для развертывания, запуска, остановки, завершения и удаления экземпляров песочницы (dba.deploySandboxInstance, dba.startSandboxInstance, dba.stopSandboxInstance, dba.killSandboxInstance и dba.deleteSandboxInstance). Команды для песочницы всегда выполняются локально в экземпляре MySQL Shell.

После создания туннель SSH можно использовать для подключения к одному хосту от одного пользователя с одного удалённого экземпляра сервера. Функция MySQL Shell shell.listSshConnections() отображает подключенные и активные туннели SSH из сессии MySQL Shell, включая URI сервера SSH и подключенного экземпляра сервера MySQL. Если вы укажете те же данные подключения SSH, MySQL Shell автоматически повторно использует существующий туннель.

Вы можете выбрать файл конфигурации SSH и файл идентификатора (приватный ключ), используемые для подключения. При настройке туннеля SSH MySQL Shell выбирает файл конфигурации SSH в следующем порядке приоритетов:

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

  2. Файл конфигурации SSH, который вы установите в качестве значения по умолчанию, используя параметр конфигурации MySQL Shell ssh.configFile. Инструкции по настройке этого параметра см. в разделе 13.4, «Настройка параметров MySQL Shell».

  3. Стандартный файл конфигурации SSH ~/.ssh/config.

Файл известных хостов читается из стандартного расположения (~/.ssh/known_hosts), если в файле конфигурации SSH не установлено другое значение.

Для файла идентификатора (приватный ключ) вы можете указать пользовательский файл с помощью параметра ssh-identity-file во время подключения. Нет возможности установить пользовательское значение по умолчанию для файла идентификатора. Если вы его не укажете, библиотека SSH использует следующую последовательность попыток аутентификации до успеха:

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

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

  3. Если ни один из этих вариантов недоступен или попытка аутентификации завершается неудачей, аутентификация выполняется с использованием стандартного файла приватного ключа в папке конфигурации SSH (~/.ssh/id_rsa).

Размер буфера по умолчанию для передачи данных через туннель SSH составляет 10240 байт. Вы можете изменить его, установив параметр конфигурации MySQL Shell ssh.bufferSize. Инструкции по настройке этого параметра см. в разделе 13.4, «Настройка параметров MySQL Shell».

Туннелирование SSH доступно при использовании любого из методов подключения MySQL Shell — метод shell.connect(), параметры командной строки mysqlsh или команда MySQL Shell \connect.

shell.connect()

При использовании метода shell.connect() для подключения, когда MySQL Shell уже запущен, вы можете указать URI для подключения к серверу SSH или использовать пары ключ-значение для данных подключения. Доступны следующие параметры:

  • ssh: URI для подключения к серверу SSH. Формат URI: [user@]host[:port].

  • uri: URI для экземпляра сервера MySQL, к которому необходимо получить доступ через туннель SSH. Формат URI: [scheme://] [user@]host:port. Не используйте базовые параметры подключения (scheme, user, host, port) для указания подключения к серверу MySQL при туннелировании SSH, используйте только этот параметр. Порт должен быть указан.

  • ssh-password: Пароль для подключения к серверу SSH.

  • ssh-config-file: Файл конфигурации SSH для подключения к серверу SSH.

  • ssh-identity-file: Файл идентификатора для подключения к серверу SSH.

  • ssh-identity-pass: Парольная фраза для файла идентификатора, указанного параметром ssh-identity-file.

Эти параметры также доступны при использовании метода shell.openSession(), который работает аналогично shell.connect(), но создаёт и возвращает объект session, а не устанавливает его как глобальную сессию для MySQL Shell. Полные инструкции по использованию этого метода подключения и доступных параметров см. в .

Параметры командной строки mysqlsh

При подключении с помощью параметров командной строки во время запуска MySQL вы можете указать URI для подключения к серверу SSH. Доступны следующие параметры:

  • --ssh: URI для подключения к серверу SSH. Формат URI: [user@]host[:port]. При использовании этого параметра порт для подключения к экземпляру сервера MySQL должен быть указан в URI экземпляра сервера.

  • --ssh-config-file: Файл конфигурации SSH для подключения к серверу SSH. Если вы укажете этот параметр со значением пустой строки, пользовательский файл конфигурации SSH, указанный параметром --ssh.configFile, будет проигнорирован, и вместо него будет использован файл ~/.ssh/config.

  • --ssh-identity-file: Файл идентификатора для подключения к серверу SSH.

Полные инструкции по использованию этого метода подключения и доступных параметров см. в разделе 4.3.1, «Подключение с помощью отдельных параметров».

Команда MySQL Shell \connect

При подключении с помощью команды \connect, когда MySQL Shell уже запущен, вы можете указать URI для подключения к серверу SSH. Дополнительных параметров для подключения SSH нет, поэтому вы должны использовать файл идентификатора по умолчанию ~/.ssh/id_rsa и стандартный файл конфигурации SSH — это либо стандартный файл ~/.ssh/config, либо пользовательский файл по умолчанию, который вы установили, используя параметр конфигурации MySQL Shell ssh.configFile (см. раздел 13.4, «Настройка параметров MySQL Shell»).

Для получения дополнительных параметров настройки вы можете создать туннель SSH с помощью метода shell.connect() или в командной строке во время запуска MySQL Shell, а затем повторно использовать его с командой \connect. В сессии MySQL Shell вы можете просмотреть текущие подключенные туннели SSH с помощью команды shell.listSshConnections().

Магазин секретов MySQL Shell может хранить пароли и парольные фразы для подключения к серверу SSH и к файлу идентификатора, чтобы автоматически получать их для будущих подключений. Если вы предоставите пароль или парольную фразу в параметрах подключения, они будут использоваться вместо любого пароля, хранящегося в Магазине секретов. Обратите внимание, что хотя есть параметры, позволяющие это сделать, явное указание пароля в данных подключения небезопасно и не рекомендуется. MySQL Shell запрашивает пароль интерактивно, когда он требуется, как для подключения к серверу SSH, так и для файла идентификатора. Например:

mysql-js> shell.connect({uri:"mysql://root:sandbox@192.0.2.3:3306",
        > ssh:"root@198.51.100.4:2222", "ssh-identity-file":"/home/hanna/.ssh/config_pw"})
Creating a Classic session to 'root@192.0.2.3:3306'
Opening SSH tunnel to 198.51.100.4:2222...
Please provide key passphrase for /home/hanna/.ssh/config_pw: ********
Save password for 'file:/home/hanna/.ssh/config_pw'?
[Y]es/[N]o/Ne[v]er (default No): y
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 7869
Server version: 8.0.28 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
<ClassicSession:root@192.0.2.3:3306>

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/mysql-shell-connection-ssh.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API