ฉันเพิ่งสมัครใช้บริการ Elastic Beanstalk ใหม่ของ Amazon สิ่งที่ฉันไม่สามารถเข้าใจได้คือวิธี SSH ไปยังอินสแตนซ์ Beanstalk ฉันไม่มีรหัสส่วนตัวเนื่องจาก Beanstalk สร้างอินสแตนซ์ในนามของฉัน
eb ssh
ฉันเพิ่งสมัครใช้บริการ Elastic Beanstalk ใหม่ของ Amazon สิ่งที่ฉันไม่สามารถเข้าใจได้คือวิธี SSH ไปยังอินสแตนซ์ Beanstalk ฉันไม่มีรหัสส่วนตัวเนื่องจาก Beanstalk สร้างอินสแตนซ์ในนามของฉัน
eb ssh
คำตอบ:
ฉันพบว่ามันเป็นกระบวนการแบบสองขั้นตอน นี่ถือว่าคุณได้ตั้งค่า keypair เพื่อเข้าถึงอินสแตนซ์ EC2 ในภูมิภาคที่เกี่ยวข้องแล้ว
elasticbeanstalk-default
กลุ่มความปลอดภัยหากคุณได้เปิดตัวอินสแตนซ์ Elastic Beanstalk ในภูมิภาคนั้นแก้ไขกลุ่มความปลอดภัยเพื่อเพิ่มกฎสำหรับการเข้าถึง SSH ด้านล่างนี้จะล็อคมันลงไปเพื่ออนุญาตให้เข้าได้เฉพาะจากที่อยู่ IP ที่เฉพาะเจาะจง
SSH | tcp | 22 | 22 | 192.168.1.1/32
Existing Key Pair
ฟิลด์ เมื่ออินสแตนซ์ได้เปิดตัวอีกครั้งคุณจะต้องรับชื่อโฮสต์จากแท็บอินสแตนซ์ของ AWS Console EC2 หรือผ่านทาง API จากนั้นคุณควรจะสามารถ ssh บนเซิร์ฟเวอร์
$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com
หมายเหตุ: สำหรับการเพิ่ม keypair ในการกำหนดค่าสภาพแวดล้อมการป้องกันการเลิกจ้างของอินสแตนซ์จะต้องปิดเนื่องจาก Beanstalk จะพยายามยกเลิกอินสแตนซ์ปัจจุบันและเริ่มต้นอินสแตนซ์ใหม่ด้วย KeyPair
หมายเหตุ: หากสิ่งใดไม่ทำงานให้ตรวจสอบแท็บ "เหตุการณ์" ในแอปพลิเคชั่น / สภาพแวดล้อมของ Beanstalk และค้นหาสิ่งที่ผิดพลาด
ยืดหยุ่นฝักถั่ว CLI v3 ขณะนี้สนับสนุน SSH eb ssh
โดยตรงกับคำสั่ง เช่น
eb ssh your-environment-name
ไม่ต้องวุ่นวายกับการตั้งค่ากลุ่มความปลอดภัยในการค้นหาที่อยู่อินสแตนซ์ EC2
นอกจากนี้ยังมีเคล็ดลับเจ๋ง ๆ นี้:
eb ssh --force
ที่จะบังคับชั่วคราวพอร์ต 22 เปิดให้ 0.0.0.0 exit
และให้มันเปิดจนกว่าคุณ นี่เป็นการผสมผสานข้อดีของคำตอบยอดนิยมเล็กน้อยโดยไม่ต้องยุ่งยาก คุณสามารถให้สิทธิ์บุคคลอื่นที่ไม่ใช่คุณชั่วคราวเพื่อการดีบักและอะไรก็ตาม แน่นอนคุณยังต้องอัปโหลดกุญแจสาธารณะไปยังโฮสต์เพื่อให้พวกเขาสามารถเข้าถึงได้ เมื่อคุณทำเช่นนั้น (และตราบใดที่คุณอยู่ภายในeb ssh
) บุคคลอื่นก็สามารถทำได้
ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com
eb ssh production
เพียงเพื่อเพิ่มคุณสามารถระบุสภาพแวดล้อมโดยท้ายคำสั่งเช่น นอกจากนี้คุณยังสามารถตั้งค่าสภาพแวดล้อมเฉพาะด้วยตัวเลือกการตั้งค่า:eb ssh production --setup
ประสบการณ์ของฉันในเดือนสิงหาคม 2556 ที่มีไคลเอ็นต์ linux และการติดตั้ง AWS Beanstalk อย่างง่าย (อินสแตนซ์ EC2 เดียว) มีดังต่อไปนี้ (อิงจาก Community Wiki ด้านบน)
awsweb...
กลุ่มความปลอดภัยและรายละเอียดควรแสดงที่ฐานของหน้าโชคดี
ฉันได้เล่นกับสิ่งนี้เช่นกัน
บริการจะเปิดให้บริการอีกครั้งดังนั้นจึงควรชงกาแฟ 5 นาที
บนแท็บ ec2 ของคุณสำหรับภูมิภาคเดียวกันคุณจะเห็นอินสแตนซ์ทำงานใหม่ของคุณ ssh ไปยังชื่อ dns สาธารณะในฐานะผู้ใช้ ec2 โดยใช้คีย์ที่เพิ่มใน 3 เช่น ssh ec2-user@ec2-xx-xxx-xx-xx-xxx.compute-1.amazonaws.com
มีตัวเลือก 'เชื่อมต่อ' ที่มีประโยชน์ในเมนู 'การกระทำของอินสแตนซ์' สำหรับอินสแตนซ์ EC2 มันจะให้คำสั่ง SSH ที่แน่นอนเพื่อดำเนินการกับ url ที่ถูกต้องสำหรับอินสแตนซ์ คำแนะนำโดยรวมของ Jabley นั้นถูกต้อง
คำตอบข้างต้นค่อนข้างเก่า
ขั้นแรกสร้างคู่คีย์จากนั้นแนบกับสภาพแวดล้อม Elastic Beanstalk
ขั้นตอนในการสร้างคู่กุญแจ
ขั้นตอนในการแนบคู่กุญแจที่สร้างขึ้นกับสภาพแวดล้อม Elastic Beanstalk
AWS -> บริการ -> ยืดหยุ่นฝักถั่ว
เลือกสภาพแวดล้อมของคุณและคลิกที่การกำหนดค่าทางด้านซ้าย
ในภาพรวมการกำหนดค่าเลือกแก้ไขจากความปลอดภัย
ภายใต้การอนุญาตของเครื่องเสมือนให้เลือกคู่คีย์ที่เราสร้าง
คลิกที่บันทึกและจากนั้นบันทึกการกำหนดค่า
ขั้นตอนนี้จะใช้เวลาสักครู่เพื่อสะท้อนถึงอินสแตนซ์ EC2 ของคุณ
หากคุณกำลังใช้ elastic bean และ EB CLI เพียงใช้eb ssh
เพื่อล็อกอินเข้าสู่อินสแตนซ์ คุณสามารถใช้ตัวเลือกตามที่ระบุในลิงก์ต่อไปนี้
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html
คุณต้องเชื่อมต่อกับอินสแตนซ์ ec2 โดยตรงโดยใช้ที่อยู่ IP สาธารณะ คุณไม่สามารถเชื่อมต่อโดยใช้ URL ที่ยืดหยุ่นของถั่ว
คุณสามารถค้นหาที่อยู่ IP อินสแตนซ์ได้โดยค้นหาในคอนโซล ec2
คุณต้องแน่ใจว่าพอร์ต 22 เปิดอยู่ โดยค่าเริ่มต้น EB CLI จะปิดพอร์ต 22 หลังจากการเชื่อมต่อ ssh เสร็จสมบูรณ์ คุณสามารถโทร eb ssh -o เพื่อให้พอร์ตเปิดหลังจากเซสชั่น ssh เสร็จสมบูรณ์
คำเตือน: คุณควรรู้ว่าต้นถั่วยืดหยุ่นสามารถแทนที่อินสแตนซ์ของคุณได้ตลอดเวลา รัฐจะไม่รับประกันในกรณีที่มีความยืดหยุ่นใด ๆ ของคุณฝักถั่ว น่าจะดีกว่าที่จะใช้ ssh สำหรับการทดสอบและการดีบักเท่านั้นเนื่องจากสิ่งที่คุณแก้ไขสามารถหายไปได้ทุกเมื่อ
ทิศทางในการตั้งค่าคู่กุญแจสำหรับอินสแตนซ์ ElasticBeanstalk ec2 ที่มี UI ปัจจุบันคือ: คำเตือน: สิ่งนี้จะต้องมีการอัปเดตอินสแตนซ์ EC2 ในแอพ ElasticBeanstalk ของคุณ หมายเหตุ: คุณจะต้องสร้างคู่คีย์ในแดชบอร์ด EC2 ก่อนหน้านี้
1) ใน AWS Dashboard เลือกบริการ ElasticBeanstalk 2) เลือกแอปพลิเคชันที่คุณต้องการใช้ 3) เลือก 'การกำหนดค่า' 4) เลือกไอคอนเฟือง (การตั้งค่า) บนกล่องการกำหนดค่า 'อินสแตนซ์' 5) สิ่งนี้จะนำคุณไปยังหน้าที่ชื่อ 'เซิร์ฟเวอร์' ซึ่งคุณสามารถอัปเดตฟิลด์ดร็อปดาวน์ 'คู่คีย์ EC2' ด้วยคีย์คู่ที่คุณต้องการและเลือก 'บันทึก'
สิ่งหนึ่งที่ควรทราบคือสิ่งนี้อาจใช้ไม่ได้กับแอปพลิเคชันที่มีหลายอินสแตนซ์ (แต่ฉันเชื่อว่าเป็นไปได้ว่าพวกมันทั้งหมดอยู่ในภูมิภาคเดียวกันกับคู่คีย์)
ฉันมาที่นี่เพื่อหาวิธีเพิ่มคีย์ให้กับตัวอย่างที่ Beanstalk สร้างขึ้นระหว่างการจัดเตรียม (เรากำลังใช้ Terraform) คุณสามารถทำสิ่งต่อไปนี้ใน Terraform:
resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
...
setting {
namespace = "aws:autoscaling:launchconfiguration"
name = "EC2KeyName"
value = "${aws_key_pair.your-ssh-key.key_name}"
}
...
}
จากนั้นคุณสามารถใช้คีย์นั้นเพื่อ SSH ลงในช่อง
หากคุณได้ตั้งค่า CLI ที่ใช้eb init
กับสภาพแวดล้อมของคุณแล้วมันควรจะง่ายเหมือน
eb ssh --setup
ซึ่งจะช่วยให้คุณสามารถสร้างคู่คีย์ใหม่หรือใช้คู่ที่มีอยู่หากมีอยู่
คุณอาจจะสามารถเชื่อมต่อกับสภาพแวดล้อมที่มีอยู่ด้วยeb use
แม้ว่าฉันจะไม่ได้ทำเช่นนั้น
สำหรับรายละเอียดเกี่ยวกับการติดตั้ง CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install
บน mac คุณสามารถติดตั้ง cli โดยใช้ brew:
brew install awsebcli
ด้วยเครื่องมือบรรทัดคำสั่งคุณสามารถ ssh ด้วย:
eb ssh environment-name
และยังดำเนินการอื่น ๆ สิ่งนี้ถือว่าคุณได้เพิ่มกลุ่มความปลอดภัยที่อนุญาตให้ ssh จาก ip ของคุณ
ขึ้นอยู่กับการกำหนดค่าสภาพแวดล้อมของคุณคุณอาจไม่มีที่อยู่ IP สาธารณะในอินสแตนซ์ EC2 ที่สร้างขึ้นสำหรับสภาพแวดล้อมของคุณ คุณสามารถตรวจสอบโดย:
สุดท้ายเลือก EIP ใหม่ของคุณแล้วเลือกเชื่อมโยงที่อยู่จากเมนูการกระทำ เชื่อมโยง IP นั้นกับอินสแตนซ์ EC2 ของคุณ คุณควรจะสามารถเชื่อมต่อโดยใช้eb ssh
ตอนนี้
eb ssh --setup
คุณสามารถตั้งค่าข้อมูลการเชื่อมต่อโดยใช้
ฉันยังเจอปัญหาเดียวกันเมื่อไม่นานมานี้ ฉันต้องการใช้ไฟล์กุญแจ แต่ Amazon บอกว่าอยู่ที่ไหนที่คุณไม่สามารถเพิ่มไฟล์คีย์ไปยังเซิร์ฟเวอร์ EC2 ที่มีอยู่ สำหรับแอปพลิเคชั่น Beanstalk แรก Amazon จะกำหนดค่าแอปพลิเคชันให้คุณล่วงหน้า คุณต้องสร้างแอปพลิเคชันใหม่และคุณสามารถกำหนดค่าเซิร์ฟเวอร์ EC2 ที่รันแอป Beanstalk เพื่อใช้ไฟล์ pem เก่า (ppk ถ้าใช้ Putty) หรือคุณสามารถสร้างขึ้นใหม่ ตอนนี้คุณควรจะสามารถ SSH
จากนั้นกำหนดค่าจากนั้นลบแอปเก่าของคุณ