นี่คือคำสั่ง autossh ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
อัตโนมัติ — ตรวจสอบและรีสตาร์ทเซสชัน ssh
เรื่องย่อ
อัตโนมัติ [-V] [-M พอร์ต[:echo_port]] [-f] [SSH_OPTIONS]
DESCRIPTION
อัตโนมัติ เป็นโปรแกรมสำหรับเริ่มสำเนาของ ssh และตรวจสอบมัน รีสตาร์ทตามความจำเป็น
มันควรจะตายหรือหยุดผ่านการจราจร
แนวคิดดั้งเดิมและกลไกมาจาก rstunnel (อุโมงค์ SSH ที่เชื่อถือได้) พร้อมเวอร์ชั่น
1.2 จาก อัตโนมัติ วิธีการเปลี่ยน: อัตโนมัติ ใช้ ssh เพื่อสร้างลูปของการส่งต่อ ssh
(หนึ่งจากโลคัลไปยังรีโมต อีกอันจากรีโมตไปยังโลคัล) จากนั้นส่งข้อมูลการทดสอบว่า
คาดว่าจะได้รับกลับมา (แนวคิดนี้ต้องขอบคุณ Terrence Martin)
ในเวอร์ชัน 1.3 มีการเพิ่มวิธีการใหม่ (ขอบคุณ Ron Yorston): อาจระบุพอร์ตสำหรับ
บริการ echo ระยะไกลที่จะสะท้อนกลับข้อมูลการทดสอบ เพื่อหลีกเลี่ยงความแออัดและ
การทำให้รุนแรงขึ้นเพื่อให้แน่ใจว่าหมายเลขพอร์ตทั้งหมดบนเครื่องระยะไกลไม่ชนกัน NS
วิธีการวนซ้ำของการส่งต่อยังคงใช้ได้สำหรับสถานการณ์ที่ใช้บริการสะท้อนอาจ
เป็นไปไม่ได้
การควบคุม SSH
SSH ทางออก
อัตโนมัติ พยายามแยกแยะลักษณะการตายของกระบวนการ ssh ที่กำลังติดตามและดำเนินการ
อย่างเหมาะสม. กฎคือ:
1. หากกระบวนการ ssh ออกตามปกติ (เช่น มีคนพิมพ์ "exit" ใน an
เซสชันแบบโต้ตอบ) อัตโนมัติ ออกแทนที่จะเริ่มต้นใหม่
2 ถ้า อัตโนมัติ ตัวเองได้รับสัญญาณ SIGTERM, SIGINT หรือ SIGKILL ก็ถือว่า
มันถูกส่งสัญญาณโดยเจตนาและออกหลังจากฆ่ากระบวนการ ssh ลูก;
3 ถ้า อัตโนมัติ ตัวเองได้รับสัญญาณ SIGUSR1 มันจะฆ่ากระบวนการลูก ssh และ
เริ่มใหม่;
4. เป็นระยะ (ตามค่าเริ่มต้นทุกๆ 10 นาที) อัตโนมัติ พยายามที่จะผ่านการจราจรบน
ตรวจสอบพอร์ตที่ส่งต่อ หากสิ่งนี้ล้มเหลว อัตโนมัติ จะฆ่ากระบวนการ ssh ลูก (ถ้า
มันยังคงทำงานอยู่) และเริ่มต้นใหม่
5. หากกระบวนการ ssh ลูกตายด้วยเหตุผลอื่นใด อัตโนมัติ จะพยายามเริ่มต้น a
อันใหม่.
การเริ่มต้น พฤติกรรม
หากเซสชัน ssh ล้มเหลวโดยมีสถานะออกเป็น 1 ในการลองครั้งแรก อัตโนมัติ
1. จะถือว่ามีปัญหากับไวยากรณ์หรือการตั้งค่าการเชื่อมต่อและจะ
ออกแทนที่จะลองใหม่
2. มีเวลา "ประตูเริ่มต้น" หากกระบวนการ ssh แรกล้มเหลวภายในสองสามครั้งแรก
วินาทีที่เริ่มต้น อัตโนมัติ ถือว่าไม่เคยทำให้ "ออกจากจุดเริ่มต้น
gate" และออก เพื่อจัดการกับการพิสูจน์ตัวตนที่ล้มเหลวในเบื้องต้น การเชื่อมต่อ ฯลฯ
เวลานี้เป็นค่าเริ่มต้น 30 วินาที และสามารถปรับเปลี่ยนได้ (ดู AUTOSSH_GATETIME
ตัวแปรสภาพแวดล้อมด้านล่าง) หาก AUTOSSH_GATETIME ตั้งค่าเป็น 0 แสดงว่าทั้งสองพฤติกรรม
ถูกปิดใช้งาน: ไม่มี "ประตูเริ่มต้น" และ autossh จะรีสตาร์ทแม้ว่า ssh
ล้มเหลวในการวิ่งครั้งแรกด้วยสถานะการออก 1 เวลา "ประตูเริ่มต้น" ก็เช่นกัน
ตั้งค่าเป็น 0 เมื่อ -f ใช้การตั้งค่าสถานะเป็น autossh
อย่างต่อเนื่อง ความล้มเหลว
หากการเชื่อมต่อ ssh ล้มเหลวและพยายามรีสตาร์ทจะล้มเหลวอย่างรวดเร็ว อัตโนมัติ
จะเริ่มชะลอการพยายามรีสตาร์ท ค่อยๆ ถอยห่างออกไปจนถึง
ช่วงเวลาสูงสุดของ อัตโนมัติ เวลาสำรวจความคิดเห็น (โดยปกติคือ 10 นาที) อัตโนมัติ สามารถ "กระตุ้น"
เพื่อลองอีกครั้งโดยส่งสัญญาณ อาจมี SIGHUP ("kill -HUP")
การเชื่อมต่อ การติดตั้ง
เนื่องจากจะต้องสร้างการเชื่อมต่อแบบอัตโนมัติ การใช้ อัตโนมัติ ต้องการให้รูปแบบบางอย่างของ
ตั้งค่าการรับรองความถูกต้องอัตโนมัติ การใช้ RSAAuthentication กับ ssh-agent คือ
วิธีการที่แนะนำ สคริปต์ตัวตัดทอนตัวอย่างพยายามตรวจสอบว่ามีตัวแทนหรือไม่
กำลังทำงานสำหรับสภาพแวดล้อมปัจจุบันและเพื่อเริ่มต้นหากไม่มี
ไม่สามารถเน้นได้มากพอที่คุณต้องแน่ใจว่า ssh ทำงานด้วยตัวเองซึ่งคุณสามารถตั้งค่าได้
ขึ้นเซสชั่นที่คุณต้องการก่อนที่คุณจะพยายามเรียกใช้ภายใต้ อัตโนมัติ
หากคุณกำลังสร้างอุโมงค์และใช้ ssh เวอร์ชันเก่าที่ไม่รองรับ -N ธง,
คุณควรอัปเกรด (เวอร์ชันของคุณมีข้อบกพร่องด้านความปลอดภัย) หากคุณไม่สามารถอัพเกรดได้ คุณอาจต้องการ
ทำตามที่ rstunnel ทำ และให้คำสั่ง ssh ทำงาน เช่น "sleep 99999999999"
OPTIONS
-M พอร์ต[:echo_port]
ระบุพอร์ตการตรวจสอบฐานที่จะใช้ หากไม่มีพอร์ต echo พอร์ตนี้และ
พอร์ตเหนือมันทันที ( พอร์ต + 1) ควรเป็นอย่างอื่นที่ไม่ได้ใช้
อัตโนมัติ จะส่งข้อมูลทดสอบบนพอร์ตการตรวจสอบฐาน และรับกลับบน
พอร์ตด้านบน ตัวอย่างเช่น หากคุณระบุ “-M 20000" อัตโนมัติ จะตั้งค่าไปข้างหน้าดังนั้น
ว่าสามารถส่งข้อมูลบนพอร์ต 20000 และรับกลับได้ในปี 20001
อีกทางหนึ่ง อาจมีการระบุพอร์ตสำหรับบริการ echo ระยะไกล นี้ควรจะ
พอร์ต 7 หากคุณต้องการใช้บริการ inetd echo มาตรฐาน เมื่อพอร์ตเสียงสะท้อนเป็น
ระบุ เฉพาะพอร์ตจอภาพที่ระบุเท่านั้นที่ใช้และมีจอภาพ
ข้อความทั้งสองทิศทาง
หลายคนปิดการใช้งานบริการ echo หรือแม้แต่ปิดการใช้งาน inetd ดังนั้นโปรดตรวจสอบว่า
มีบริการบนเครื่องระยะไกล ระบบปฏิบัติการบางระบบยอมให้
ระบุว่าบริการฟังเฉพาะบน localhost (อินเทอร์เฟซแบบวนซ้ำ) ซึ่ง
จะเพียงพอสำหรับการใช้งานนี้
บริการสะท้อนอาจเป็นสิ่งที่ซับซ้อนกว่า: บางทีภูตที่
ตรวจสอบกลุ่มของอุโมงค์ ssh
การตั้งค่าพอร์ตจอภาพเป็น 0 จะปิดฟังก์ชันการตรวจสอบ และ autossh จะ
รีสตาร์ท ssh เมื่อออกจาก ssh เท่านั้น ตัวอย่างเช่น หากคุณกำลังใช้เวอร์ชันล่าสุดของ
OpenSSH คุณอาจต้องการสำรวจโดยใช้ ServerAliveInterval และ
ServerAliveCountสูงสุด ตัวเลือกเพื่อให้ไคลเอ็นต์ SSH ออกหากไม่พบตัวเองอีกต่อไป
เชื่อมต่อกับเซิร์ฟเวอร์ ในหลาย ๆ ด้าน นี่อาจเป็นทางออกที่ดีกว่าการ
พอร์ตการตรวจสอบ
-f ทำให้ autossh ตกไปที่พื้นหลังก่อนเรียกใช้ ssh NS -f ธงถูกถอดออก
จากอาร์กิวเมนต์ที่ส่งผ่านไปยัง ssh โปรดทราบว่ามีความแตกต่างที่สำคัญระหว่าง -f
ด้วย autossh และ -f กับ ssh: เมื่อใช้กับ อัตโนมัติ ssh จะไม่สามารถขอได้
รหัสผ่านหรือข้อความรหัสผ่าน เมื่อไหร่ -f ใช้ เวลา "ประตูเริ่มต้น" (ดู
AUTOSSH_GATETIME) ถูกตั้งค่าเป็น 0
-V สาเหตุที่ อัตโนมัติ เพื่อแสดงหมายเลขเวอร์ชันและออก
และพวกเรา
นอกเหนือจากการตั้งค่าสถานะพอร์ตการตรวจสอบการเชื่อมต่อ อัตโนมัติ ใช้สิ่งแวดล้อม
ตัวแปรเพื่อควบคุมคุณสมบัติ ssh ดูเหมือนว่าจะยังคงรวบรวมจดหมายสำหรับตัวเลือกและ
ดูเหมือนว่าจะเป็นวิธีที่ง่ายที่สุดในการหลีกเลี่ยงการชนกัน
AUTOSSH_DEBUG
หากมีการตั้งค่าตัวแปรนี้ ระดับการบันทึกจะถูกตั้งค่าเป็น LOG_DEBUG และถ้า
ระบบปฏิบัติการรองรับ syslog ถูกตั้งค่าให้ทำซ้ำรายการบันทึกเป็น stderr
AUTOSSH_FIRST_POLL
ระบุเวลาที่ต้องรอก่อนการทดสอบการเชื่อมต่อครั้งแรก หลังจากนั้น พล.อ
ใช้เวลาในการสำรวจความคิดเห็น (ดู AUTOSSH_POLL ด้านล่าง)
AUTOSSH_GATETIME
ระบุว่าจะต้องใช้ ssh นานเท่าใดก่อนที่เราจะพิจารณาว่าเป็นการเชื่อมต่อที่สำเร็จ NS
ค่าเริ่มต้นคือ 30 วินาที โปรดทราบว่าหากตั้งค่า AUTOSSH_GATETIME เป็น 0 ไม่เพียงแต่ is
พฤติกรรมเกตไทม์ถูกปิด แต่ autossh ยังละเว้นความล้มเหลวในการรันครั้งแรกของ
ssh นี้อาจมีประโยชน์เมื่อเรียกใช้ autossh เมื่อบูต
AUTOSSH_LOGLEVEL
ระบุระดับบันทึก ซึ่งสอดคล้องกับระดับที่ใช้โดย syslog ดังนั้น 0-7 กับ 7
เป็นคนคุยเก่งที่สุด
AUTOSSH_LOGFILE
ระบุว่า อัตโนมัติ ควรใช้ล็อกไฟล์ที่มีชื่อ แทนที่จะเป็น syslog
AUTOSSH_MAXLIFETIME
ตั้งค่าจำนวนวินาทีสูงสุดที่โปรแกรมควรรัน เมื่อจำนวน
วินาทีผ่านไป ลูก ssh จะถูกฆ่าและโปรแกรมจะออก
AUTOSSH_MAXSTART
ระบุจำนวนครั้งที่ควรเริ่มต้น ssh ตัวเลขติดลบหมายถึงไม่มีขีดจำกัดบน
จำนวนครั้งที่เริ่มต้น ssh ค่าเริ่มต้นคือ -1
AUTOSSH_MESSAGE
ต่อท้ายข้อความเพื่อสะท้อนข้อความที่ส่งเมื่อทดสอบการเชื่อมต่อ
AUTOSSH_NTSERVICE
(Cygwin เท่านั้น) เมื่อตั้งค่าเป็น "yes" autossh จะตั้งค่าให้ทำงานเป็นบริการ NT ภายใต้
cygrunsrv. สิ่งนี้จะเพิ่ม -N ตั้งค่าสถานะสำหรับ ssh หากยังไม่ได้ตั้งค่า ให้ตั้งค่าเอาต์พุตบันทึกเป็น
stdout และเปลี่ยนพฤติกรรมเมื่อออก ssh เพื่อให้รีสตาร์ทแม้ในa
ทางออกปกติ
AUTOSSH_PATH
ระบุพาธไปยัง ssh executable ในกรณีที่แตกต่างจาก path
เรียบเรียงใน
AUTOSSH_PIDFILE
เขียน autossh pid ไปยังไฟล์ที่ระบุ
AUTOSSH_POLL
ระบุเวลาโพลการเชื่อมต่อในหน่วยวินาที ค่าเริ่มต้นคือ 600 วินาที เว้นแต่
ใช้ AUTOSSH_FIRST_POLL เวลาสำรวจครั้งแรกจะตั้งค่าให้ตรงกับเวลาสำรวจความคิดเห็น ถ้า
เวลาโพลน้อยกว่าสองเท่าของไทม์เอาต์ของเครือข่าย (ค่าเริ่มต้น 15 วินาที) the
ระยะหมดเวลาของเครือข่ายจะถูกปรับลดลงเหลือ 1/2 ของเวลาโพลล์
AUTOSSH_PORT
ตั้งค่าพอร์ตการตรวจสอบการเชื่อมต่อ ส่วนใหญ่ในกรณีที่ ssh เหมาะสม -M ที่บาง
เวลา. แต่เนื่องจากการใช้งานที่เป็นไปได้นี้ AUTOSSH_PORT จึงแทนที่ -M ธง. ค่า
จาก 0 จะปิดฟังก์ชันการตรวจสอบ
เฉพาะเดเบียน พฤติกรรม
autossh เวอร์ชันเดเบียนใช้ wrapper เพื่อเลือกพอร์ตการตรวจสอบฟรีโดยอัตโนมัติ
และ -M แทนที่ AUTOSSH_PORT ดู /usr/share/doc/autossh/README.Debian สำหรับข้อมูลเพิ่มเติม
ข้อมูล
ใช้ autossh ออนไลน์โดยใช้บริการ onworks.net