วิธีการเชื่อมต่อแอพท้องถิ่น (เช่น rubymine, prosequel) ไปยังเซิร์ฟเวอร์ระยะไกลโดยใช้ไพรเวตคีย์ AWS?


1

โปรแกรมที่อนุญาตการเชื่อมต่อระยะไกล (โดยปกติจะเป็น ssh) มักจะขอชื่อผู้ใช้ / pwd เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล: ดูตัวอย่างด้านล่างจากsequelproและrubymineตามลำดับ:

Sequel pro: การพยายามเชื่อมต่อกับเซิร์ฟเวอร์ mysql ระยะไกลผ่าน ssh:

Sequelpro หน้าต่างการเชื่อมต่อ

Rubymine: การพยายามดีบักฝั่งเซิร์ฟเวอร์: หน้าต่างกำหนดค่าการเชื่อมต่อ rubytime

ด้วย Amazon AWS ในการเชื่อมต่อโดยใช้ SSHคุณต้องมีคีย์ส่วนตัวและคำสั่งการเชื่อมต่อจะเป็นดังนี้:

ssh -i %privateKeyFileName.pem% ubuntu@server

คำถาม:ฉันจะรวมไฟล์ส่วนตัวนี้เพื่อให้สามารถเชื่อมต่อได้สำเร็จโดยใช้แอพอย่างเช่น prosql หรือ rubymine ได้อย่างไร?


Update: sequel pro สามารถทำได้โดยกำเนิด .. สำหรับ rubymine .. ฉันเริ่มต้นด้วยการทำ tunnel ssh .. ดังนั้นนี่คือขั้นตอน:

แรก:ฉันเริ่มกระบวนการอุโมงค์ SSH บนเครื่องของฉันเพื่อให้คำขอใด ๆ ที่ทำกับ localhost ของฉัน: พอร์ต 9999 จะถูกส่งต่อไปยัง aws ip ที่พอร์ต 3000:

ssh -l ubuntu -i '/path/to/cert/file/certFile.cer' -L 9999:%aws.ip%:3000 %aws.ip%

สอง:ต่อไปเหล่านี้คำแนะนำ .. ฉันแถมเสื่อมแก้ปัญหาอัญมณีกับโครงการทางรถไฟของฉัน .. และวิ่งคำสั่งต่อไปนี้:

rdebug-ide --port 3000 -- rvmsudo thin start -p 3000 -e production

ที่สาม:ฉันเปลี่ยนการตั้งค่าการดีบักการผลิตใน rubymine ของฉันและทำให้มันชี้ไปที่พอร์ต 3000 ใน localhost ของฉันดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ที่สี่:ฉันเริ่มกระบวนการดีบักจาก 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 db ในความคิดที่ว่าฉันกำลังเชื่อมต่อกับมันจากภายใน aws ..

ในทางเทคนิคฉันสามารถทำสิ่งเดียวกันได้: ฉันสามารถสร้าง ssh tunnel อื่นสำหรับโฮสต์ mysql ได้โดยเฉพาะ แต่แล้วฉันจะสั่ง rubymine ให้เชื่อมต่อกับ tunnel นั้นสำหรับ db ได้อย่างไร?

คำตอบ:


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)


ในขณะที่ SSH tunneling เป็นวิธีแก้ปัญหาที่อาจใช้งานได้จริงโปรแกรมเหล่านี้มีความสามารถเต็มที่ในการเชื่อมต่อ SSH แบบดั้งเดิม - อาจไม่ได้ใช้คีย์ส่วนตัวรับรองความถูกต้อง
บ๊อบ

ใช่ @Bob .. นั่นคือเหตุผลที่ฉันถามคำถามนี้
abbood

@abbood ฉันไม่มีตัวแทนมากพอที่จะแสดงความคิดเห็นกับคำถามดังนั้นที่นี่ไป 1. MySQL ทำงานบนพอร์ตโดยค่าเริ่มต้นไม่ได้3306 30002. คุณยืนยันว่าคุณสามารถ SSH เข้ากับเซิร์ฟเวอร์ AWS ที่พอร์ตได้22หรือไม่? (โปรดทราบว่านี่หมายถึง SSH'ing จากไคลเอ็นต์ SSH ในพื้นที่ของคุณและไม่ผ่านConnectตัวเลือกบนหน้าจอ EC2)
FloatingRock

@ Bob ตอนนี้ทำงานเป็นปัญหาเดียวกันกับ mongodb ใช้ robomongo!
abbood

0

ปรากฎว่า sequelpro เสนอตัวเลือกให้คีย์ ssh แล้ว (ฉันเดาว่ามันเป็นบั๊ก .. หากคุณคลิกที่sshตัวเลือกและไม่เห็นฟิลด์ของคีย์ให้คลิกกลับไปที่หนึ่งในสองแท็บอื่น ๆ กว่าคลิก อีกครั้งในssh.. และคุณควรเห็นหน้าจอต่อไปนี้:ป้อนคำอธิบายรูปภาพที่นี่

อัปเดต:ดูที่นี่สำหรับการสนทนาโดยละเอียดเกี่ยวกับการเชื่อมต่อกับภาคต่อของโปรโดยใช้ ssh tunneling

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.