Score:0

เรียกใช้เชลล์สคริปต์ด้วย ProxyCommand ที่คำนวณ IP และเริ่มเซสชัน SSH

ธง ng

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

นี่เป็นสคริปต์ที่ค่อนข้างยาวและไม่ได้ออกแบบมาเพื่อเป็นซับใน ProxyCommand คำสั่ง

นี่คือสารสกัดจากสคริปต์ที่แสดงปัญหา:

#!/bin/bash

instance_id="$1"
ผู้ใช้ = "$2"
พอร์ต = "$ 3"

ถ้า [[ $instance_id == *"i"* ]]; แล้ว
  filter="--instance-ids ${instance_id}"
อื่น
  filter="--filters Name=ip-address,Value=${instance_id}"
ไฟ

public_ip=$(aws ec2 อธิบายอินสแตนซ์ $filter | jq -r '.Reservations[0].Instances[0].PublicIpAddress')

ถ้า [[ $public_ip == "null" ]]; แล้ว
  จริง
อื่น
  ssh $user@$public_ip -p $พอร์ต
ไฟ

และนี่คือของฉัน ~/.ssh/config:

โฮสต์ i-* mi-* 172.2* 172.3*
   กระดิ่งของผู้ใช้
   ProxyCommand ~/.ssh/aws_iea_proxy_command.sh %h %r %p

หากฉันพยายาม ssh เป็นรหัสอินสแตนซ์ เช่น ssh i-030ee3dd4f2712b3bสคริปต์ถูกเรียกใช้ แต่ฉันไม่ได้รับเชลล์แบบโต้ตอบ

[คอนเนอร์@ปริศนา:~/.ssh] 130 $ ssh i-030ee3dd4f2712b3b
Pseudo-terminal จะไม่ถูกจัดสรร เนื่องจาก stdin ไม่ใช่เทอร์มินัล
-bash: บรรทัดที่ 1: SSH-2.0-OpenSSH_8.2p1: ไม่พบคำสั่ง

ฉันจะทำให้คำสั่ง SSH ทำงานในสคริปต์ผ่าน ProxyCommand ได้อย่างไร

โพสต์คำตอบ

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