ฉันเริ่มถามและตอบสิ่งนี้บน สแต็คโอเวอร์โฟลว์ แต่ฉันบอกว่ามันไม่ตรงประเด็นและควรโพสต์ที่นี่ เป็นเครื่องมือที่มีประโยชน์มาก ฉันต้องการแน่ใจว่าได้เก็บบันทึกไว้เป็นเอกสาร เพื่อที่ฉันจะได้พบมันในครั้งต่อไปที่ต้องการ
SFTP นั้นถูกใช้โดยเซิร์ฟเวอร์ SSH แต่เป็นโปรโตคอลที่พัฒนามาอย่างดีซึ่งทำงานได้ดีด้วยตัวมันเอง เซิร์ฟเวอร์ sftp ที่พัฒนาโดย OpenSSH ไม่มีการพึ่งพาเซิร์ฟเวอร์ SSH เซิร์ฟเวอร์ SFTP ใช้อินพุต/เอาต์พุตมาตรฐาน (เซิร์ฟเวอร์ SFTP อื่นๆ ก็คล้ายกัน)
การแบ่งปันระบบไฟล์ผ่าน SFTP เป็นเรื่องเล็กน้อย คล้ายกับสิ่งที่คุณอาจทำกับ NFS แต่ไม่จำเป็นต้องเข้าถึงรูท ฉันจะใช้ socat เป็น daemon สำหรับตัวอย่างเฉพาะกิจนี้ แต่ xinetd จะสร้างโซลูชันที่ถาวรกว่านี้ ตำแหน่งของ sftp-server มาจากการติดตั้ง Ubuntu ของแพ็คเกจ opensh-sftp-server
บนเซิร์ฟเวอร์:
$ mkdir แบ่งปัน_to_the_world
$ cd shared_to_the_world
$ socat tcp-listen:1234,reuseaddr,fork exec:/usr/lib/openssh/sftp-server
บนไคลเอนต์:
$mkdir /tmp/sftp_test
$ sshfs -o reconnect,ssh_command="nc my_sftp_server_address 1234 --" : /tmp/sftp_test
$ cd /tmp/sftp_test
ตอนนี้ไคลเอนต์ของคุณ (และของใครก็ตาม!) สามารถทำงานกับไฟล์ในไดเร็กทอรีที่ใช้ร่วมกันบนเซิร์ฟเวอร์ได้อย่างราบรื่น เปิดใช้งานทั้งการอ่านและเขียน ดังนั้นโปรดใช้ความระมัดระวัง
พิจารณาใช้ตัวเลือก "ผูก" และ "ช่วง" ของ socat listen เพื่อจำกัดการเข้าถึงเซิร์ฟเวอร์ของคุณ