วิธีการใช้ ssh จากเชลล์สคริปต์โดยไม่ต้องรอรหัสผ่าน?


1

ฉันไม่สามารถใช้วิธีการกุญแจสาธารณะ ฉันไม่ต้องการใช้สคริปต์คาดหวัง ฉันค้นหาไซต์นี้เพื่อหาวิธีแก้ปัญหา แต่ทุกคนกำลังพูดถึงโซลูชันเหล่านี้

มีวิธีอื่นเช่นพารามิเตอร์บรรทัดคำสั่งเพื่อคำสั่ง ssh (เช่น --password = 'asdf') หรือการเปลี่ยนเส้นทางอินพุต ("<")?

linux  bash  ssh  script 

3
ฉันคิดว่าไคลเอนต์ SSH ได้รับการออกแบบมาเพื่อป้องกันสิ่งที่คุณต้องการจะทำ แต่ฉันก็ไม่แน่ใจ

คุณอาจได้คำตอบที่ดีกว่าถ้าคุณถามคำถามนี้ใน serverfault.com
ชาคริต

@ Nicolas โปรดแจ้งให้เราทราบว่าตัวเลือกนั้นฉันไม่สามารถหาได้ในหน้า man ของ openssh client @ จักกฤตฉันคิดว่านี่เป็นคำถามการเขียนสคริปต์ที่ทำไมฉันถามมันที่นี่

คุณอาจดู: stackoverflow.com/questions/459182/…คำตอบสุดท้าย

@ Nicolas คำตอบที่กล่าวถึงการใช้งานของลูกค้ารายอื่นเช่น putty แต่ฉันต้องการใช้ openssh client

คำตอบ:


2

ผมจะได้พูดกับใช้คีย์ RSA หรือลองนี้: http://bash.cyberciti.biz/security/expect-ssh-login-script/ เปลือยในใจว่าคุณต้องติดตั้งexpectเครื่องมือ

แต่เนื่องจากคุณได้บอกว่าไม่มีการ RSA และexpectวิธีเดียวคือการเขียนสคริปต์ของคุณเองโดยใช้ Twisted conch( http://twistedmatrix.com/projects/conch/documentation/examples/ ) หรือแพลตฟอร์มอื่น ๆ ที่มีการใช้ SSH เช่น เป็นทับทิมหรือ Perl


ฉันไม่ต้องการสคริปต์ที่คาดหวัง โปรดอ่านคำถามของฉันอย่างรอบคอบ

แก้ไขคำตอบแล้ว; ~)
Tzury Bar Yochay

2

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

หน้าคนของ ssh sais:

การพิสูจน์ตัวตนแบบใช้โฮสต์ทำงานดังนี้: หากเครื่องที่ผู้ใช้ล็อกอินนั้นแสดงอยู่ใน /etc/hosts.equiv หรือ /etc/ssh/shosts.equiv บนเครื่องรีโมตและชื่อผู้ใช้เหมือนกันทั้งสองด้าน หรือหากไฟล์ ~ / .rhosts หรือ ~ / .shosts มีอยู่ในโฮมไดเร็กตอรี่ของผู้ใช้บนเครื่องรีโมตและมีบรรทัดที่มีชื่อของเครื่องไคลเอนต์และชื่อของผู้ใช้บนเครื่องนั้นผู้ใช้จะถูกพิจารณาเข้าสู่ระบบ . นอกจากนี้เซิร์ฟเวอร์จะต้องสามารถตรวจสอบคีย์โฮสต์ของลูกค้า (ดูคำอธิบายของ / etc / ssh / ssh_known_hosts และ ~ / .ssh / known_hosts ด้านล่าง) เพื่ออนุญาตให้เข้าสู่ระบบ วิธีการรับรองความถูกต้องนี้ปิดช่องโหว่ด้านความปลอดภัยเนื่องจากการปลอมแปลง IP การปลอมแปลง DNS และการแอบอ้างเส้นทาง [หมายเหตุถึงผู้ดูแลระบบ: /etc/hosts.equiv, ~ / .rhosts,





0

ดูControlMasterตัวเลือกใน ssh_config สิ่งนี้ช่วยให้คุณสามารถเปิดอุโมงค์ที่ผ่านการตรวจสอบด้วยมือซึ่งการเชื่อมต่อ ssh ต่อไปนี้ทั้งหมดใช้


-1

หากคุณมี X ที่ทำงานอยู่คุณสามารถเขียนรหัส X เล็กน้อย (เช่นใน Tcl / Tk หรือ Tkinter) ที่ส่งรหัสผ่านไปที่ stdout จากนั้นสิ่งที่คุณต้องทำคือตั้งค่าตัวแปรสภาพแวดล้อม SSH_ASKPASS ให้เป็นเส้นทางของรหัสนั้น

จากผู้ชาย ssh:

SSH_ASKPASS หาก ssh ต้องการวลีรหัสผ่านมันจะอ่านข้อความรหัสผ่านจากเทอร์มินัลปัจจุบันถ้ามันถูกเรียกใช้จากเทอร์มินัล หาก ssh ไม่มีเทอร์มินัลเชื่อมโยงกับมัน แต่ตั้งค่า DISPLAY และ SSH_ASKPASS มันจะดำเนินการโปรแกรมที่ระบุโดย SSH_ASKPASS และเปิดหน้าต่าง X11 เพื่ออ่านข้อความรหัสผ่าน สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อเรียก ssh จาก. xsession หรือสคริปต์ที่เกี่ยวข้อง (โปรดทราบว่าในบางเครื่องอาจจำเป็นต้องเปลี่ยนเส้นทางอินพุตจาก / dev / null เพื่อให้สามารถใช้งานได้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.