คำสั่ง sftp รองรับตัวเลือกระบบย่อย (-s) ซึ่งอนุญาตให้ผู้ใช้รีโมตสามารถเลือกเรียกทำงานรีโมต sftp-server และเลือกที่จะอัพเกรดเป็น sudo ในกระบวนการเช่นนั้น
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
คำสั่งนี้เทียบกับตัวเลือกไคลเอ็นต์ ssh ใน ~ / .ssh / config อนุญาตให้ใช้ pubkey และพอร์ตที่กำหนดเองและการตั้งค่าผู้ใช้อย่างโปร่งใส
อย่างไรก็ตามsubsystem
ดูเหมือนจะเฉพาะ sftp และด้วยเหตุนี้มันไม่ได้ตั้งค่าในไฟล์กำหนดค่าและจะต้องตั้งค่าเป็นตัวเลือกบรรทัดคำสั่งสำหรับ sftp
อย่างไรก็ตามเครื่องมือบางอย่างห่อหุ้มการร้องขอ sftp ดังนั้นจึงเป็นไปไม่ได้ที่จะตั้งค่าตัวเลือกระบบย่อยและติดอยู่กับการเข้าถึงของผู้ใช้
มีไฟล์ตัวเลือกการกำหนดค่าบางอย่างที่ฉันสามารถใช้เพื่อตั้งค่านี้สำหรับ openssh sftp โดยทั่วไป?
มีไฟล์กำหนดค่าบางอย่างที่มีผลต่อวิธีที่ gnome nautilus เรียกใช้ sftp สำหรับการรวมตัวจัดการไฟล์หรือไม่
อัปเดตวิธีแก้ปัญหาแฮ็ก แต่ทำงานได้ที่เป็นไปได้คือ ...
ดังนั้นปรากฎว่าไม่มีไฟล์กำหนดค่าที่ชัดเจนที่ sftp จะใช้สำหรับตัวเลือกดังนั้นฉันจึงสิ้นสุดการแก้ไขสคริปต์ wrapper ทั่วไปเพื่อเพิ่มตัวเลือกอย่างชัดเจนสำหรับโฮสต์ที่ฉันเลือกโดยใส่สิ่งนี้ในเส้นทางของฉัน
#!/bin/bash
# Generic shell wrapper that performs an operation
OPERATION=/usr/bin/sftp
args=("$@")
#the final arg should contain a hostname of the form [user@]host[:path]
case "${args[@]: -1}" in
myserver.com)
exec $OPERATION -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" "$args"
;;
*)
exec $OPERATION "$args"
;;
esac
อย่างไรก็ตามขึ้นอยู่กับไฟล์ sudoers ของคุณโดยทั่วไปแล้วการเรียกใช้ sudo ต้องใช้ tty ดังนั้นคุณต้องผ่านตัวเลือก "-t" ไปยัง ssh แล้วเดาว่าอะไร ไม่มีตัวเลือกการกำหนดค่าสำหรับคำสั่งไคลเอ็นต์ ssh ที่มีการบันทึกไว้ซึ่งทำงานในไฟล์ ssh_config หรือ ~ / .ssh / config ฮ่าฮ่า
ดังนั้นฉันจึงเขียนสคริปต์ตัวตัดคำอื่นเพื่อให้สิ่งนั้น ....
#!/bin/bash
# Generic shell wrapper that performs an operation
OPERATION=/usr/bin/ssh
args=("$@")
#locating the hostname is not so simple with ssh
exec $OPERATION -tt "$args"
แม้ว่าตอนนี้ฉันมีปัญหาในการรับ sftp เพื่อใช้ไฟล์ wrapper ~ / bin / ssh ของฉันเนื่องจากดูเหมือนว่าฮาร์ดโค้ดลงใน sftp และควบคุมโดยตัวเลือก "-S"