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 в следующем порядке приоритетов:
Файл конфигурации SSH, который вы укажете в качестве параметра подключения.
Файл конфигурации SSH, который вы установите в качестве значения по умолчанию, используя параметр конфигурации MySQL Shell
ssh.configFile. Инструкции по настройке этого параметра см. в разделе 13.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. Инструкции по настройке этого параметра см. в разделе 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 Shellssh.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.