%20%D0%BA%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC%D1%83%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D0%BE%D0%B3%D0%BE%20%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%20AWS%3F.png)
Программы, которые разрешают удаленные подключения (обычно в SSH), обычно запрашивают имя пользователя/пароль для подключения к удаленному серверу: см. примеры ниже изсиквелпроирубимин, соответственно:
Продолжение:Попытка подключиться к удаленному серверу MySQL через ssh:
Рубимин:Попытка выполнить отладку на стороне сервера:
С Amazon AWS,для подключения по SSHвам нужен закрытый ключ, а команда подключения выглядит примерно так:
ssh -i %privateKeyFileName.pem% ubuntu@server
Вопрос:Как включить этот приватный файл, чтобы иметь возможность успешно подключиться с помощью таких приложений, как prosql или rubymine?
Обновлять:сиквел про можно сделатьизначально.. что касается rubymine.. я начал с того, что сделалssh-туннелирование.. итак, вот шаги:
первый:Я запустил процесс туннелирования SSH на своей машине, так что любой запрос, сделанный на мой порт localhost:9999, будет перенаправлен на aws ip на порт 3000:
ssh -l ubuntu -i '/path/to/cert/file/certFile.cer' -L 9999:%aws.ip%:3000 %aws.ip%
второй:следующийэтиинструкции.. я связалунижатьотладочный гем с моим проектом rails.. и выполнил следующую команду:
rdebug-ide --port 3000 -- rvmsudo thin start -p 3000 -e production
третий:Я изменил настройки отладки в Rubymine и указал порт 3000 на локальном хосте следующим образом:
четвертое:Я инициировал процесс отладки из rubymine..
проблема:процесс отладки начался... но он сообщает мне, что не может подключиться к серверу MySQL:
/Users/abdullahbakhach/.rvm/rubies/ruby-1.9.3-p484/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484/gems/ruby-debug-ide-0.4.17/bin/rdebug-ide --port 58053 --dispatcher-port 58054 -- /Users/abdullahbakhach/dev/ruby/icars-web-application-veritopia/script/rails server -b 0.0.0.0 -p 9999 -e production
Fast Debugger (ruby-debug-ide 0.4.17, ruby-debug-base19x 0.11.30.pre12) listens on 127.0.0.1:58053
=> Booting Thin
=> Rails 3.2.13 application starting in production on http://0.0.0.0:9999
=> Call with -d to detach
=> Ctrl-C to shutdown server
/Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484@global/gems/actionpack-3.2.13/lib/action_dispatch/http/mime_type.rb:102: warning: already initialized constant PDF
Uncaught exception: Host '78.111.131.68' is not allowed to connect to this MySQL server
Exiting
/Users/abdullahbakhach/.rvm/gems/ruby-1.9.3-p484/gems/mysql2-0.3.14/lib/mysql2/client.rb:67:in `connect'
Я знаю, что если я попытаюсь напрямую подключиться к mysql
базе данных, размещенной на машине aws, напрямую со случайного хоста, он отклонит это подключение по тем же причинам. Идея в том, чтобы обмануть базу данных mysql, заставив ее думать, что я на самом деле подключаюсь к ней изнутри aws..
Технически я могу сделать то же самое: я могу создать еще один туннель SSH специально для хоста MySQL, но как тогда мне указать Rubymine подключиться к этому туннелю для базы данных?
решение1
Вы ищете SSH Tunneling, чтобы позволить вам перенаправить локальный порт (например, 127.0.0.1:9876
) на определенный порт на удаленном сервере. Найдите подробностиздесь
Вот суть:
ssh -l <SERVER_USER> -i "<SERVER_SSH_KEY>" \
-L <local-port-to-listen>:<remote-host>:<remote-port>
<remote-host>
и вот пример:
ssh -l ubuntu -i "/home/myuser/awskey.pem" -L \
9999:51.100.80.10:3306 51.100.80.10
В приведенном выше примере мы перенаправляем все запросы, сделанные на порт 9999
на локальной машине, на порт 3306
(для MySQL) на целевом сервере (IP: 51.100.80.10
) — туннелируя через порт SSH на целевом сервере (обычно порт 22
).
В AWS это означает, что вам нужно будет изменить группы безопасности на странице EC2, чтобы включить доступ SSH к серверу (SSH обычно работает на порту 22
, поэтому вам нужно будет разрешить доступ к этому порту p).
решение2
оказывается, что sequelpro уже предлагает возможность предоставить ключ SSH.. (я думаю, это ошибка.. если вы нажмете на эту ssh
опцию и не увидите поля для ключа, щелкните обратно на одну из двух других вкладок, затем щелкните еще раз на ssh
.. и вы должны увидеть следующий экран:
обновлять:видетьздесьдля подробного обсуждения подключения к sequel pro с использованием ssh-туннелирования