4.3.7 Использование туннеля 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 в следующем порядке приоритетов:
Файл конфигурации SSH, который вы указываете в качестве параметра подключения.
Файл конфигурации SSH, который вы установили в качестве значения по умолчанию, используя параметр конфигурации MySQL Shell
ssh.configFile. Инструкции по установке этого параметра см. в разделе 14.4, «Настройка параметров MySQL Shell».Стандартный файл конфигурации SSH
~/.ssh/config.
Файл известных хостов считывается из стандартного расположения (~/.ssh/known_hosts), если иное не задано в файле конфигурации SSH.
Для файла идентификации (приватного ключа) вы можете указать пользовательский файл с помощью параметра ssh-identity-file во время подключения. Нет возможности установить пользовательское значение по умолчанию для файла идентификации. Если вы не укажете его, библиотека SSH использует следующую последовательность попыток аутентификации до достижения успеха:
Если используется агент SSH, аутентификация выполняется с помощью файлов идентификации, настроенных в нём, если они доступны.
Если для целевого хоста в файле конфигурации SSH указан файл идентификации, аутентификация выполняется с помощью этого файла.
Если ни один из этих вариантов недоступен или попытка аутентификации завершается неудачно, аутентификация выполняется с использованием стандартного файла приватного ключа в папке конфигурации SSH (
~/.ssh/id_rsa).
Размер буфера по умолчанию для передачи данных через туннель SSH составляет 10240 байт. Вы можете изменить это, установив параметр конфигурации MySQL Shell ssh.bufferSize. Инструкции по установке этого параметра см. в разделе 14.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, «Подключение с помощью отдельных параметров».
- Команда
\connectMySQL Shell -
При подключении с помощью команды
\connectво время работы MySQL Shell вы можете указать URI для подключения к серверу SSH. Дополнительных параметров для подключения SSH нет, поэтому вы должны использовать файл идентификации по умолчанию~/.ssh/id_rsaи стандартный файл конфигурации SSH, который может быть стандартным файлом~/.ssh/configили пользовательским значением по умолчанию, настроенным с помощью параметра конфигурации MySQL Shellssh.configFile(см. раздел 14.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.