Tidak dapat terhubung ke database MySQL melalui SSH dengan Workbench


10

Saya mencoba untuk terhubung ke database saya melalui tunneling SSH dari salah satu server aplikasi web kami dengan MySQL Workbench. Inilah konfigurasi dasar; perhatikan bahwa saya mengubah beberapa nilai di tangkapan layar untuk alasan keamanan.

Tangkapan layar workbench

Masalahnya adalah setiap kali saya mencoba untuk terhubung melalui terowongan SSH dari salah satu server aplikasi kami, saya mendapatkan kesalahan berikut:

Gagal terhubung ke us-east-1.amazonaws.com melalui terowongan SSH di computer.amazonaws.com dengan pengguna social_shop_prod. Tidak dapat terhubung ke server MySQL di 127.0.0.1.

Namun, jika saya menggunakan kredensial yang sama melalui SSH melalui baris perintah berikut:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

Saya dapat terhubung dengan sukses dan mendapatkan prompt perintah interaktif MySQL.

Telah berbicara dengan anggota tim pengembangan saya di sini dan tidak ada di antara kita yang bisa mengetahui mengapa saya tidak bisa menggali SSH dari server aplikasi kami dengan Workbench; tetapi ketika saya SSH ke salah satu server aplikasi kami dan terhubung ke MySQL melalui baris perintah; Saya dapat terhubung dengan sukses.

Dan mengapa itu mencoba menghubungkan lebih dari 127.0.0.1? Saya tidak menentukan itu dalam konfigurasi; file host saya juga tidak mengarahkan domain yang ditunjukkan di bawah ini ke IP itu.

Masukan konstruktif apa pun sangat dihargai.

Jawaban:


5

Karena Anda terhubung melalui terowongan SSH, ini berarti bahwa port MySQL 3306 dari us-east-1.amazonaws.com dibuka secara lokal di komputer Anda. Alamat ip komputer Anda adalah 127.0.0.1 atau localhost. Ketika Anda terhubung ke server mysql di us-east-1.amazonaws.com, Anda sebenarnya mengaksesnya melalui 127.0.0.1, yaitu komputer Anda. Jika Anda memiliki terowongan lain terbuka, atau MySQL berjalan secara lokal di komputer Anda, maka mungkin server MySQL lain yang menolak upaya otentikasi Anda

Ada beberapa tes yang bisa Anda coba:

1. Port apa yang Anda dengarkan di komputer Windows

Dari prompt perintah: netstat -a (daftar semua port yang terbuka)

Di linux akan menjadi: netstat -tlpn

2. Tes konektivitas dasar

Dari prompt perintah DOS atau konsol linux: telnet 127.0.0.1 3306

Jika Anda mendapatkan waktu istirahat, atau beberapa program lain merespons maka terowongan Anda tidak diatur dengan benar.

3. Ubah nomor port yang dibuka MySQL Workbench secara lokal

Kami mengasumsikan bahwa meja kerja MySQL membuat terowongan di komputer Anda. Jika demikian, di meja kerja MySQL, coba tunneling melalui nomor port lain seperti 9000.

Pastikan bahwa 9000 tidak terdaftar sebagai port terbuka dari: netstat -a

Jika Anda memiliki akses ssh ke us-east-1.amazonaws.com

4. Coba sambungkan ke MySQL dari us-east-1.amazonaws.com

mysql -u myuser -h 127.0.0.1 -p

Dan seperti kata Rolando, Anda ingin memverifikasi bahwa Anda terhubung dengan kredensial yang tepat. Misalnya, jika Anda terhubung sebagai myuser@127.0.0.1 dan Anda memiliki pengguna myuser tanpa host, Anda mungkin tidak akan dapat terhubung menggunakan user@127.0.0.1.


2

Alasan 127.0.0.1 dihubungi adalah karena terowongan menghubungkan port pada mesin lokal Anda ke host jarak jauh. Pesan itu sepertinya menyarankan bahwa koneksi SSH tidak sedang dibuat.

Coba ini dari baris perintah:

ssh -L 33000:remotehost:3306 user@remotehost

Pastikan SSH mengizinkan port yang diteruskan; jika Anda mendapatkan pesan yang menyatakan bahwa penyerang tidak diizinkan atau ditolak, maka itu sebabnya.

Untuk memperbaikinya, Anda harus mengubah konfigurasi server; tambahkan konfigurasi ini ke server SSH:

AllowTcpForwarding yes

Jangan lupa untuk me-restart server untuk mengaktifkan konfigurasi ini.


dapatkah kamu menjelaskan perintah itu sedikit? Anda mengikat alamatnya? Bisakah itu dikombinasikan dengan perintah mysql?
Thufir

Dengan SSH di sini Anda membuat terowongan, tidak lebih. Ini menghubungkan port jarak jauh ke port lokal. Apa yang Anda lakukan dalam kasus ini adalah mengikat port lokal ke port MySQL jarak jauh.
Mei

1

Saya terus berurusan dengan masalah ini selama hampir 2 minggu sekarang saya sudah berhasil mengaturnya. Saya akan mempostingnya di sini sehingga lebih banyak orang dapat mencobanya.

Ok, saya menggunakan OpenSSH (Win10 asli) dan Workbench 8.

Langkah-demi-langkah:
1. Tambahkan kunci host SSH Anda ke agen menggunakan ssh-add.
2. Hasilkan pasangan kunci menggunakan ssh-keygen. Dalam kasus saya, file-file ini masuk secara otomatis Users/myUser/.sshsesuai konfigurasi instalasi.
3. Tambahkan kunci publik ke file otor_keys (yang harus ada di dalam jalur instalasi server Anda, dalam kasus saya Windows/System32/OpenSSH/.ssh) tanpa ekstensi.
4. Tambahkan kunci yang dibuat Anda baru saja dibuat untuk agen menggunakan ssh-add.

Langkah-langkah di atas cukup banyak konfigurasi dari SSH Server baris perintah yang saya tahu OP sudah lakukan untuk koneksi-nya bekerja melalui terminal. Untuk mengkonfigurasi MySQL Workbench 8 Anda cukup banyak melakukan hal yang sama persis kecuali Anda harus mengkonversi private_key.pem ke format OpenSSH sebelum memindahkannya ke Users/myUser/.sshdanOpenSSH_instalation_path/.ssh

  1. Konversi private_key.pem ke format OpenSSH menggunakan PUTTYgen.
  2. Salin bidang "Kunci Publik untuk menempel ke OpenSSH diotorisasi" .
  3. Simpan kunci publik di folder User/myUser/.sshdanOpenSSH_instalation_path/.ssh
  4. Rekatkan kunci yang Anda salin dari PUTTY ke file yang diotorisasi pada OpenSSH_instalation_path/.sshfolder.
  5. Ekspor kunci format OpenSSH ke User/myUser/.ssh.
  6. Mulai kembali layanan sshd dan mysql
  7. Konfigurasikan Workbench untuk terhubung ke server SSH menggunakan kunci pribadi yang dikonversi.

UPDATE: Anda perlu mengatur yang berikut ini di file sshd_config Anda:

PermitRootLogin tanpa kata sandi
PubkeyAuthentication ya
PasswordAuthentication no
PermitEmptyPasswords no
AllowTcpMeneruskan ya

HARAP BACA:

Saya seorang analis yang tidak berpengalaman, jadi jika pengguna yang lebih mahir tahu di antara dua folder .ssh mana yang benar, beri tahu kami. Saya menemukan OpenSSH agak ambigu tentang ini.
Ini bekerja untuk saya sambil menetapkan lingkungan pengembangan lokal menggunakan localhost saja. Hanya untuk tujuan belajar.
Anda mungkin ingin menambahkan myUser @ localhost ke pengguna MySQL Workbench sebelum menguji koneksi.
Jika benar-benar diperlukan saya dapat menambahkan gambar.


0

Dalam kasus saya, masalah saya harus beralih kembali ke nama domain atau IP yang valid alih-alih host kustom yang di-host secara lokal.

Resolusi host kustom gagal ( /etc/hosts)

Saya bekerja dengan mekanisme resolusi host lokal yang didefinisikan:

#.#.#.#    my-vm

Untuk beberapa alasan dengan MySQL 5.2.47atas Linux Mint 14 (Nadia)yang mirip dengan Ubuntu 12.10 (Quantal)yang mekanisme resolusi tidak bekerja .

Larutan

Cukup beralih ke nama domain publik seperti my-website.commenyelesaikan masalah.


@Mat telah diperbaiki, thanj = ks
Édouard Lopez


0

Saya memiliki masalah yang sama, dan ini mungkin tidak sopan, tetapi periksa aturan firewall Anda di AWS. Saya memiliki rangkaian rentang IP, untuk membatasi koneksi dari dunia luar. Dan IP di kantor saya berubah, jadi ada di luar kisaran IP. Rekan saya di kantor lain masih bisa terhubung, jadi saya pikir masalahnya ada di PC saya, tapi masalahnya ada pada aturan firewall di AWS. Semoga itu bisa membantu seseorang :)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.