เซสชัน SSH แบบไม่โต้ตอบ
ถ้าคุณไม่จำเป็นต้องมีการโต้ตอบเซสชั่นบนเซิร์ฟเวอร์ระยะไกลคุณสามารถดำเนินการssh
ในสภาพแวดล้อมโดยไม่ต้องtty
เช่นเป็นส่วนหนึ่งของการเรียกใช้ Shell Scriptการดำเนินการในอัตโนมัติ
คุณต้องสร้างโปรแกรมที่เมื่อเรียกว่าพิมพ์รหัสผ่านเพื่อออกมาตรฐานเช่นสคริปต์ทุบตีต่อไปนี้คุณต้องทำให้สามารถใช้งานได้โดยใช้chmod +x pwd.sh
:
#!/usr/bin/env bash
echo "password"
จากนั้นตั้งค่าSSH_ASKPASS
ตัวแปรสภาพแวดล้อมเป็นพา ธ ไปยังโปรแกรมนี้จากนั้นเรียกใช้ssh
ในการดำเนินการอัตโนมัติเช่นนี้:
export SSH_ASKPASS=/Users/danielbeck/pwd.sh
ssh user@hostname ls
เมื่อไม่มีtty
แต่SSH_ASKPASS
และDISPLAY
(สำหรับ X11 ตั้งค่าเริ่มต้น) SSH จะเรียกใช้งานโปรแกรมที่ระบุโดยSSH_ASKPASS
และใช้เอาต์พุตเป็นรหัสผ่าน สิ่งนี้มีวัตถุประสงค์เพื่อใช้ในสภาพแวดล้อมแบบกราฟิกเพื่อให้หน้าต่างสามารถปรากฏขึ้นเพื่อขอรหัสผ่านของคุณ ในกรณีนี้เราเพิ่งข้ามหน้าต่างคืนรหัสผ่านจากโปรแกรมของเรา คุณสามารถใช้security
อ่านจากพวงกุญแจแทนเช่นนี้:
#!/usr/bin/env bash
security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2
ls
(บนssh
บรรทัดคำสั่ง) เป็นคำสั่งที่ดำเนินการเมื่อssh
ลงชื่อเข้าใช้และเอาต์พุตของมันจะถูกพิมพ์ใน Automator แน่นอนคุณสามารถเปลี่ยนเส้นทางไปยังไฟล์เพื่อบันทึกผลลัพธ์ของโปรแกรมที่คุณเริ่มต้น
ใช้เซสชัน SSH แบบโต้ตอบ sshpass
ฉันดาวน์โหลดรวบรวมและติดตั้งsshpass
และทำงานได้อย่างสมบูรณ์ นี่คือสิ่งที่ฉันทำ:
- รับเครื่องมือสำหรับนักพัฒนาของ Apple
- ดาวน์โหลดและเปิด
sshpass-1.05.tar.gz
- เปิดเชลล์ไปยังไดเร็กทอรี
sshpass-1.05
- วิ่ง
./configure
- วิ่ง
make
- เรียกใช้
make install
(คุณอาจต้องการsudo
มัน)
ตอนนี้โปรแกรมได้รับการติดตั้ง/usr/local/bin/sshpass
แล้ว ดำเนินการโดยใช้บรรทัดดังต่อไปนี้:
sshpass -pYourPassword ssh username@hostname
คุณสามารถอ่านรหัสผ่านได้security
ก่อนที่จะทำเช่นนั้นและใช้รหัสนี้:
SSHPASSWORD=$( security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2 )
sshpass -p"$SSHPASSWORD" ssh username@hostname
ล้อมสิ่งนี้ในฟังก์ชั่นเชลล์และคุณสามารถพิมพ์เช่นssh-yourhostname
เพื่อเชื่อมต่อโดยดึงมันแล้วป้อนรหัสผ่านโดยอัตโนมัติ
STDIN is not a terminal
ยังคงถามผมสำหรับรหัสผ่านและหลังจากที่ผมเข้ามันฉันได้ 2) การประชุมแบบโต้ตอบกับsshpass
ที่-p
ตัวเลือกที่เห็นได้ชัดไม่ได้ทำอะไร แต่การทำงานsshpass
ในขณะที่SSH_ASKPASS
ตั้งค่าใช้งานไม่ได้!