Score:0

ไม่สามารถ ssh โดยใช้ ProxyJump แต่ใช้งานได้กับ ssh -J

ธง cn

คำถามของฉันคือ: ฉันจะตั้งค่าโฮสต์ป้อมปราการสำหรับ ssh บน AWS โดยใช้อินสแตนซ์ Ubuntu ได้อย่างไร

ฉันทำสิ่งต่อไปนี้ได้สำเร็จ:

root@e183d80cdabc# ssh -J [email protected] [email protected]
เข้าระบบครั้งล่าสุด: ส. 4 ก.ย. 13:14:17 น. 2021 จาก 10.240.0.30 น.
==> สำเร็จ! ==> อูบุนตู@ip-10-240-0-20:~$

แต่มันล้มเหลวเมื่อฉันลองวิธีไฟล์ ~/.ssh/config คำสั่งที่ใช้:

# ssh 10.240.0.20
# ssh อูบุนตู@10.240.0.20
# ssh -i ~/.ssh/id_rsa อูบุนตู@10.240.0.20

ssh: เชื่อมต่อกับโฮสต์ 10.240.0.20 พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ

~/.ssh/config ของฉันมีลักษณะดังนี้:

root@e183d80cdabc# cat $HOME/.ssh/config
โฮสต์ป้อมปราการ
  ชื่อโฮสต์ 54.170.186.144
โฮสต์ระยะไกล
  ชื่อโฮสต์ 10.240.0.20
  ป้อมปราการ ProxyJump

ฉันใช้ Ubuntu บน AWS ดังนี้:

ubuntu@ip-10-240-0-30:~$ cat /etc/os-release
NAME="อูบุนตู"
VERSION="20.04.2 LTS (โฟกัสแอ่ง)"
ID=อูบุนตู
ID_LIKE=เดเบียน
PRETTY_NAME="อูบุนตู 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=โฟกัส
UBUNTU_CODENAME=โฟกัส

ฉันได้ลองเพิ่มไฟล์ ผู้ใช้อูบุนตู ฟิลด์ แต่สิ่งนี้ไม่ได้ช่วย

ของฉัน /etc/ssh/ssh_config บนเซิร์ฟเวอร์มีลักษณะดังนี้:

เจ้าภาพ *
    ForwardX11เชื่อถือได้ใช่
    IdentityFile ~/.ssh/id_rsa
    พอร์ต 22
    SendEnv LANG LC_*
    HashKnownHosts ใช่
    การตรวจสอบ GSSAPIA ใช่

อัปเดต ตอนนี้ฉันใช้ตัวเลือก verbose เช่น

root@e183d80cdabc# ssh -vvv 10.240.0.20
OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f 31 มี.ค. 2020
debug1: อ่านข้อมูลการกำหนดค่า /root/.ssh/config
debug1: /root/.ssh/config บรรทัดที่ 2: การใช้ตัวเลือกสำหรับ *
debug1: อ่านข้อมูลการกำหนดค่า /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config บรรทัดที่ 19: รวม /etc/ssh/ssh_config.d/*.conf ที่ไม่ตรงกับไฟล์
debug1: /etc/ssh/ssh_config บรรทัดที่ 21: การใช้ตัวเลือกสำหรับ *
debug2: Solve_canonicalize: ชื่อโฮสต์ 10.240.0.20 คือที่อยู่
ดีบัก 2: ssh_connect_direct
debug1: กำลังเชื่อมต่อกับพอร์ต 10.240.0.20 [10.240.0.20] 22
debug1: เชื่อมต่อกับที่อยู่ 10.240.0.20 พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ
ssh: เชื่อมต่อกับโฮสต์ 10.240.0.20 พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ

ดูเหมือนว่าจะไม่ใช้โฮสต์การกระโดดใด ๆ (เช่น มันข้ามป้อมปราการ) และกำลังไปโดยตรง และ FAILS

ความคิดใด ๆ ที่ชื่นชมอย่างมาก! ขอบคุณ

=========================================================

อัปเดต: 2021-09-04-15-44 - พร้อมโซลูชัน ขอบคุณทุกคน ฉันได้ทำเครื่องหมายเป็นคำตอบแล้วด้านล่าง

การกำหนดค่าที่ถูกต้องไม่ได้ใช้ชื่อโฮสต์ เนื่องจากการจับคู่เสร็จสิ้นแล้ว เจ้าภาพ. ฉันยังสามารถใส่สัญลักษณ์แทนในที่อยู่ IP ซึ่งเป็นสิ่งที่ฉันทำจริงๆ

การกำหนดค่า ssh

root@e183d80cdabc# cat $HOME/.ssh/config
โฮสต์ป้อมปราการ
  ชื่อโฮสต์ 63.33.206.201
  ผู้ใช้อูบุนตู
โฮสต์ 10.240.0.*
  ป้อมปราการ ProxyJump
  ผู้ใช้อูบุนตู

และ โวล่า!

# ssh 10.240.0.20
...
อูบุนตู@ip-10-240-0-20:~$
anx avatar
fr flag
anx
อย่าคัดลอกคีย์ ssh *private* การเก็บไว้อย่างปลอดภัยในเครื่องเป็น *จุด* ทั้งหมดของกลไกนี้
in flag
เมื่อสงสัยให้รัน ssh ด้วยคำฟุ่มเฟือยพิเศษ `ssh -vvv ... remote`
cn flag
ขอบคุณ anx --> ตรวจสอบวันนี้ว่าฉันไม่จำเป็นต้องคัดลอกคีย์ส่วนตัวที่ใดก็ได้ - ใช้งานได้กับ -J commandline โดยไม่ต้องคัดลอก แต่ก็ยังใช้งานไม่ได้กับคำสั่งง่ายๆ ssh พร้อมกับไฟล์ ~/.ssh/config ที่มีพารามิเตอร์ทั้งหมด (รวมถึง "User ubuntu")
cn flag
ขอบคุณ zoredache - อัปเดตด้วย -zzz เอาต์พุตด้านบน
anx avatar
fr flag
anx
ฉันจะแก้ไขส่วนที่เป็นอันตรายของคำถามของคุณ .. อย่าลังเลที่จะอุทิศคำถามแยกต่างหากให้กับคำถามเหล่านั้น แต่ฉันค่อนข้างแน่ใจว่ามีรายการที่ซ้ำกันอยู่แล้วสำหรับคำถามเหล่านั้น
Score:3
ธง fr

การจับคู่เสร็จสิ้นเมื่อ เจ้าภาพ ฉันท์ไม่บน ชื่อโฮสต์.

พยายาม:

ssh อูบุนตู@remote
cn flag
อีปี้! นี่คือคำตอบ ขอบคุณหนึ่งล้าน Tomek! โปรดดูการอัปเดตของฉัน @ 2021-09-04-15 (ในคำถามเดิมด้านบน) ซึ่งเพิ่มการสนับสนุนเพิ่มเติมสำหรับการใช้ที่อยู่ IP เฉพาะและไวด์การ์ดเพื่อรวมช่วงซับเน็ต เยี่ยมมาก ขอบคุณ!
Score:3
ธง fr
anx

ความแตกต่างระหว่างบรรทัดคำสั่งของคุณ

ssh -J อูบุนตู@54.170.186.144 อูบุนตู@10.240.0.20

และสิ่งที่ฉันแนะนำให้คุณทำเพื่ออ้างอิงการกำหนดค่าของคุณ

ssh ระยะไกล

คืออันหลังไม่มีทั้ง IP และ ผู้ใช้ที่จะเข้าสู่ระบบบนทั้งสองเครื่อง ในบรรทัดคำสั่ง - คุณต้องแก้ไขการกำหนดค่า ssh เพื่อรวม ทั้งหมด ข้อมูลที่คุณไม่ได้ส่งผ่านบรรทัดคำสั่งอีกต่อไป:

# $HOME/.ssh/config
### โฮสต์ป้อมปราการ
โฮสต์ป้อมปราการ
  ชื่อโฮสต์ 54.170.186.144
  ผู้ใช้อูบุนตู

### โฮสต์ระยะไกล
โฮสต์ระยะไกล
  ชื่อโฮสต์ 10.240.0.20
  ผู้ใช้อูบุนตู
  ป้อมปราการ ProxyJump

อัปเดต: แม้ว่าใช่ ในทางทฤษฎีแล้วคุณ สามารถ กำหนดค่าของคุณ เจ้าภาพ ฉันแนะนำ stanzas เพื่อให้ตรงกับที่อยู่ IP ต่อต้าน การทำเช่นนั้น

หากโฮสต์ไม่สามารถเข้าถึงได้โดยตรงด้วยที่อยู่ IP บางอย่าง โฮสต์นั้นควรได้รับการอ้างอิงโดย ชื่อ - ลองจินตนาการว่าจะเกิดอะไรขึ้นเมื่อคุณมีพื้นที่ IP (ส่วนตัว) เดียวกันที่กำหนดให้กับหลายโฮสต์ คุณไม่สามารถกำหนดการกำหนดค่า ProxyJump ที่ถูกต้องสำหรับแต่ละโฮสต์ได้

อีกเหตุผลหนึ่งที่การใช้ที่อยู่เพื่ออ้างถึงโฮสต์นั้นไม่เอื้ออำนวยคือโฮสต์สามารถเข้าถึงได้ผ่านตระกูลที่อยู่หลายตระกูล: หากโฮสต์สามารถเข้าถึงได้ผ่าน IPv4 และ IPv6 คุณอาจต้องการให้การเชื่อมต่อ ssh ของคุณยังคงไม่เชื่อเรื่องโปรโตคอลและเพิ่มแฟล็กเฉพาะเมื่อคุณตั้งใจจริง ๆ ที่จะจำกัด (อัตโนมัติ) ตัวเลือก

cn flag
ขอบคุณ anx. ใช่ น่าเสียดายที่ด้านบนให้ exacy เหมือนกัน นั่นคือไม่ทำงาน ขอบคุณสำหรับการตอบสนองของคุณ!
cn flag
โปรดดูคำตอบสุดท้าย - ปัญหาเกี่ยวข้องกับการจับคู่ - การเพิ่มฟิลด์ผู้ใช้เพียงอย่างเดียวจะไม่ช่วย - ต้องตรงกับการกำหนดค่าที่ถูกต้อง ฉันใช้ชื่อโฮสต์และควรใช้โฮสต์เพื่อทำการแข่งขัน ขอบคุณสำหรับความช่วยเหลือของคุณ anx!
anx avatar
fr flag
anx
@Banoona ใช่ คุณควรอ้างถึงโฮสต์โดยวิธีการเรียกโฮสต์ในบรรทัด `Host` ในการกำหนดค่าของคุณ แต่ฉันยังเชื่อว่าสิ่งเหล่านี้ควรเป็นชื่อ (นึกคิด: ชื่อบัญญัติ * โฮสต์ *) ไม่ใช่ที่อยู่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา