sshpass: เครื่องมือที่ยอดเยี่ยมสำหรับการเข้าสู่ระบบ SSH แบบไม่โต้ตอบ - ห้ามใช้บนเซิร์ฟเวอร์ที่ใช้งานจริง
ในกรณีส่วนใหญ่ ผู้ดูแลระบบ Linux เข้าสู่ระบบเซิร์ฟเวอร์ Linux ระยะไกลโดยใช้ SSH โดยระบุรหัสผ่าน หรือเข้าสู่ระบบ SSH โดยไม่ต้องใช้รหัสผ่าน หรือการตรวจสอบสิทธิ์ SSH แบบใช้คีย์
จะทำอย่างไรถ้าคุณต้องการระบุ รหัสผ่าน พร้อมด้วย ชื่อผู้ใช้ เพื่อแจ้ง SSH เอง นี่คือจุดที่ sshpass เข้ามาช่วยเหลือ
sshpass เป็นเครื่องมือบรรทัดคำสั่งที่เรียบง่ายและมีน้ำหนักเบาซึ่งช่วยให้เราสามารถระบุรหัสผ่าน (การตรวจสอบสิทธิ์รหัสผ่านแบบไม่โต้ตอบ) ให้กับพร้อมท์คำสั่ง เพื่อให้สามารถดำเนินการเชลล์สคริปต์อัตโนมัติเพื่อสำรองข้อมูลผ่านตัวกำหนดเวลา cron
ssh ใช้การเข้าถึง TTY โดยตรงเพื่อให้แน่ใจว่าผู้ใช้แป้นพิมพ์โต้ตอบเป็นผู้ให้รหัสผ่านจริง Sshpass รัน ssh ใน tty โดยเฉพาะ ทำให้เข้าใจผิดโดยเชื่อว่าได้รับรหัสผ่านจากผู้ใช้แบบโต้ตอบ
ข้อสำคัญ: การใช้ sshpass ถือว่ามีความปลอดภัยน้อยที่สุด เนื่องจากจะเปิดเผยรหัสผ่านแก่ผู้ใช้ระบบทุกคนบนบรรทัดคำสั่งด้วย แบบธรรมดา “ps” คำสั่ง ฉันขอแนะนำอย่างยิ่งให้ใช้การตรวจสอบสิทธิ์แบบไม่ใช้รหัสผ่าน SSH
ติดตั้ง sshpass บนระบบ Linux
ในระบบที่ใช้ RedHat/CentOS ก่อนอื่นคุณต้องเปิดใช้งานพื้นที่เก็บข้อมูล Epel บนระบบของคุณเพื่อติดตั้งโดยใช้คำสั่ง yum ดังที่แสดง
yum install sshpass
dnf install sshpass [On Fedora 22+ versions]
บน Debian/Ubuntu และอนุพันธ์ คุณสามารถติดตั้งได้โดยใช้คำสั่ง apt-get ดังที่แสดง
sudo apt-get install sshpass
หรือคุณสามารถติดตั้งจากแหล่งที่มาเพื่อให้มี sshpass เวอร์ชันล่าสุด ขั้นแรกให้ดาวน์โหลดซอร์สโค้ด จากนั้นแยกเนื้อหาของไฟล์ tar และติดตั้งดังนี้:
wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -xvf sshpass.tar.gz
cd sshpass-1.06
./configure
sudo make install
วิธีใช้ sshpass ใน Linux
sshpass ใช้ร่วมกับ ssh คุณสามารถดูตัวเลือกการใช้งาน sshpass ทั้งหมดพร้อมคำอธิบายแบบเต็มได้โดยการออกคำสั่งด้านล่าง:
sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ sshpass มีความน่าเชื่อถือมากกว่าและมีประโยชน์สำหรับวัตถุประสงค์ในการเขียนสคริปต์ ลองพิจารณาคำสั่งตัวอย่างด้านล่าง
ล็อกอินเข้าสู่เซิร์ฟเวอร์ Linux ssh ระยะไกล (10.42.0.1) ด้วยชื่อผู้ใช้และรหัสผ่าน และตรวจสอบการใช้งานดิสก์ระบบไฟล์ของระบบระยะไกลดังที่แสดง
sshpass -p 'my_pass_here' ssh [email 'df -h'
ข้อสำคัญ: ที่นี่ มีการให้รหัสผ่านไว้ในบรรทัดคำสั่งซึ่งในทางปฏิบัติไม่ปลอดภัยและไม่แนะนำให้ใช้ตัวเลือกนี้
อย่างไรก็ตาม เพื่อป้องกันการแสดงรหัสผ่านบนหน้าจอ คุณสามารถใช้แฟล็ก -e
และป้อนรหัสผ่านเป็นค่าของตัวแปรสภาพแวดล้อม SSHPASS ดังต่อไปนี้:
export SSHPASS='my_pass_here'
echo $SSHPASS
sshpass -e ssh [email 'df -h'
หมายเหตุ: ในตัวอย่างด้านบน ตัวแปรสภาพแวดล้อม SSHPASS มีไว้เพื่อวัตถุประสงค์ชั่วคราวเท่านั้น และจะถูกลบออกในระหว่างการรีบูต
หากต้องการตั้งค่าตัวแปรสภาพแวดล้อม SSHPASS อย่างถาวร ให้เปิดไฟล์ /etc/profile และพิมพ์คำสั่งส่งออกที่จุดเริ่มต้นของไฟล์:
export SSHPASS='my_pass_here'
บันทึกไฟล์และออก จากนั้นรันคำสั่งด้านล่างเพื่อให้มีผลกับการเปลี่ยนแปลง:
source /etc/profile
ในทางกลับกัน คุณยังสามารถใช้แฟล็ก -f
และใส่รหัสผ่านในไฟล์ได้ ด้วยวิธีนี้ คุณสามารถอ่านรหัสผ่านจากไฟล์ได้ดังนี้:
sshpass -f password_filename ssh [email 'df -h'
คุณยังสามารถใช้ sshpass เพื่อถ่ายโอนไฟล์โดยใช้ scp หรือไฟล์สำรอง/ซิงค์ผ่าน rsync โดยใช้ SSH ดังที่แสดง:
------- Transfer Files Using SCP -------
scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html
------- Backup or Sync Files Using Rsync -------
rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/
สำหรับการใช้งานเพิ่มเติม ฉันขอแนะนำให้คุณอ่านหน้าคู่มือ sshpass พิมพ์:
man sshpass
ในบทความนี้ เราได้อธิบาย sshpass เครื่องมือง่ายๆ ที่เปิดใช้งานการตรวจสอบสิทธิ์รหัสผ่านแบบไม่โต้ตอบ แม้ว่าเครื่องมือนี้อาจมีประโยชน์ แต่ขอแนะนำอย่างยิ่งให้ใช้กลไกการตรวจสอบคีย์สาธารณะที่ปลอดภัยยิ่งขึ้นของ ssh
กรุณาทิ้งคำถามหรือแสดงความคิดเห็นผ่านทางส่วนข้อเสนอแนะด้านล่างสำหรับการสนทนาเพิ่มเติม