sshfs พร้อม fstab: การเชื่อมต่อรีเซ็ตโดยเพียร์


10

ฉันพยายามอนุญาตให้แล็ปท็อปของฉัน (Ubuntu 13.04) เข้าถึงพีซีของฉัน (Lubuntu 13.04) ฮาร์ดไดรฟ์ผ่าน SSHFS ฉันใช้คีย์ RSA เพื่อเชื่อมต่อ

มันทำงานได้อย่างสมบูรณ์แบบถ้าฉันพิมพ์สิ่งนี้ในเทอร์มินัล:

sshfs my-PC:/a_folder /media/a_folder

แต่ฉันต้องการให้มันติดตั้งโดยอัตโนมัติเมื่อฉันบูตแล็ปท็อป ดังนั้นฉันจึงเพิ่มตัวเองลงในกลุ่มฟิวส์:

sudo adduser mynickname fuse

และฉันเพิ่มบรรทัดต่อไปนี้ไปยังไฟล์ fstab ของฉัน:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev 0 0

เมื่อฉันบูตแล็ปท็อป a_folder จะปรากฏในรายการอุปกรณ์ แต่ไม่ได้เมานต์ เมื่อฉันพยายามเข้าถึงผ่าน Nautilus จะแสดงข้อผิดพลาดต่อไปนี้:

mount: only root can mount sshfs#mynickname@my-PC:/a_folder on /media/a_folder

ฉันได้รับข้อผิดพลาดเดียวกันถ้าฉันลอง

mount /media/a_folder

ในอาคารผู้โดยสาร

ถ้าฉันลอง

sudo mount /media/a_folder

ฉันเข้าใจ

read: Connection reset by peer

ฉันพยายามเพิ่ม "allow_other" เป็นตัวเลือกในรายการ fstab และยกเลิกหมายเหตุบรรทัดที่เกี่ยวข้องใน /etc/fuse.conf แต่ไม่เปลี่ยนแปลงอะไรเลย

ผู้ใช้ "mynickname" เป็นเจ้าของโฟลเดอร์ / media / a_folder และมีสิทธิ์ rwx

ฉันดูหัวข้อต่างๆบนอินเทอร์เน็ตเกี่ยวกับผู้ที่มีปัญหาคล้ายกัน แต่ไม่มีอะไรได้ผล โดยปกติแล้วคนไม่สามารถทำได้

sshfs my-PC:/a_folder /media/a_folder

โดยไม่ได้รับข้อผิดพลาดในขณะที่ทำงานได้ดีบนแล็ปท็อปของฉัน

ข้อมูลเชิงลึกและเคล็ดลับใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ขอบคุณ

แก้ไข: ฉันแก้ไขปัญหานี้เมื่อไม่นานมานี้ แต่ฉันลืมปรับปรุงโพสต์นี้ ดังนั้นนี่คือสิ่งที่อยู่ใน fstab ของฉัน:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse noauto,_netdev,idmap=user,user,default_permissions 0 0

ตัวเลือกที่สำคัญในการเพิ่มคือ default_permissions ถ้าฉันจำได้ ฉันต้องเพิ่ม mynickname ไปยังกลุ่มที่เป็น / a_folder / บน my-PC

fstab  sshfs 

คำตอบ:


8

ปัญหาที่คุณประสบคือผู้ใช้ปกติของคุณมีการตั้งค่าที่ถูกต้องสำหรับไฟล์ข้อมูลประจำตัวของคุณในขณะที่ผู้ใช้รูทไม่ทราบว่าจะใช้คีย์ ssh ใด

คุณสามารถแก้ไขได้โดยบอก fstab ว่าไฟล์ identity / ssh สำคัญที่จะใช้ในขณะที่พยายามเชื่อมต่อ:

sshfs#user@host:/mnt/whatever/ /mnt/whatever/        fuse    user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/USER/.ssh/KEYFILE,idmap=user,allow_other  0   2

ขอบคุณสำหรับคำตอบ. ฉันได้ลองใช้ตัวเลือก IdentityFile แล้ว แต่ฉันไม่ได้ระบุตัวเลือก uid และ gid ดังนั้นฉันจะลองดู!

ในทางเทคนิคคุณไม่จำเป็นต้องใช้sudoถ้าทุกอย่างถูกตั้งค่าอย่างถูกต้องสำหรับการเมานต์ FUSE นอกจากนี้การตั้งค่า uid / gid ควรมีผลกับผู้ใช้คนใดที่มีสิทธิ์ในไฟล์ในระบบของคุณ
earthmeLon

ดังนั้นฉันจึงลองกับ uid, gid, IdentityFile, allow_other, ตัวเลือกเหล่านั้นทั้งหมดในเวลาเดียวกันและน่าเสียดายที่มันยังใช้งานไม่ได้ ยังคงเป็นข้อผิดพลาดเดียวกัน

คุณจะช่วยโพสต์ตัวอย่างที่คุณเขียนมาได้ไหม? คุณควรชี้ไปที่รหัสส่วนตัวไม่ใช่รหัสสาธารณะของคุณ
earthmeLon

1
ดังนั้นทั้งสองวิธีจึงไม่ทำงาน ยังคงเป็นข้อผิดพลาดเดียวกัน สำหรับไฟล์ปรับแต่งฉันลองโดยระบุโฮสต์ที่เหมาะสม: ผู้ใช้ชื่อโฮสต์ (ลองทั้ง IP และชื่อ), ไฟล์ประจำตัว แต่มันก็ใช้งานไม่ได้เช่นกัน ดังนั้นสิ่งที่ฉันทำตอนนี้คือฉันเพิ่มคำสั่ง sshfs my-PC: / a_folder / media / a_folder ในแอปพลิเคชันเริ่มต้น มันไม่สะอาดเท่าการใช้ fstab แต่มันใช้ได้ดีพอสำหรับตอนนี้ ขอบคุณสำหรับความช่วยเหลือและคำแนะนำของคุณ! หากคุณคิดว่าอย่างอื่นรู้สึกฟรีเพื่อแบ่งปันฉันจะขอบคุณมัน!

4

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

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev,debug,sshfs_debug 0 0

ด้วยวิธีนี้คุณจะได้รับข้อมูลการแก้ปัญหาจำนวนมากเพื่อช่วยให้คุณ:

$ sudo mount -a
SSHFS version 2.5
FUSE library version: 2.9.2
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-2> <user@box> <-s> <sftp>
user@box's password: 
Server version: 3
Extension: posix-rename@openssh.com <1>
Extension: statvfs@openssh.com <2>
Extension: fstatvfs@openssh.com <2>
Extension: hardlink@openssh.com <1>
Extension: fsync@openssh.com <1>
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.22
flags=0x0000f7fb
max_readahead=0x00020000
remote_uid = 1001
   INIT: 7.19
   flags=0x00000011
   max_readahead=0x00020000
   max_write=0x00020000
   max_background=0
   congestion_threshold=0
   unique: 1, success, outsize: 40
unique: 2, opcode: STATFS (17), nodeid: 1, insize: 40, pid: 2771
unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 3371

ในกรณีของฉันฉันค้นพบว่าเครื่องของฉันอยู่ในรายการเท่านั้น.ssh/configจึงไม่สามารถแก้ไขได้สำหรับรูท

และ BTW คุณต้องตั้งค่า uid และ gid เนื่องจากidmap=userดูเหมือนว่าจะใช้ได้กับผู้ใช้ปัจจุบันเท่านั้นซึ่งเป็นรากในกรณีนี้


3

ปัญหานี้อาจเกิดขึ้นได้เมื่อคีย์โฮสต์ของ ssh เปลี่ยนแปลง

ลองเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน ssh (เช่นssh username@hostIP) หากข้อผิดพลาดต่อไปนี้ปรากฏขึ้น:

 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!    @
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ทำตามคำแนะนำในข้อความแสดงข้อผิดพลาดเพื่อลบคีย์เก่าและลองเชื่อมต่ออีกครั้งผ่าน ssh หากข้อผิดพลาดไม่ปรากฏขึ้นอีกการเชื่อมต่อ sshfs ควรทำงาน


"ลองเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน ssh" ตรวจสอบให้แน่ใจว่าทำเช่นนี้เป็นรูทหากคุณติดตั้งไดเรกทอรีเป็นรูท (ซึ่งจะเกิดขึ้นเมื่อทำการเมาท์อัตโนมัติ) known_hostsไฟล์ของผู้ใช้อาจแตกต่างจากknown_hostsไฟล์ของรูท
Shelvacu

0

การเปิดเผยแบบเต็มรูปแบบ: โรงเรียนเก่า แต่แบรนด์ใหม่ที่เข้าสู่โลกลินุกซ์ / โอเพนซอร์ส

ก่อนอื่นฉันยังคงใช้การตรวจสอบรหัสผ่านเพราะฉันยังไม่เข้าใจพอกับปุ่ม RSA ที่ใกล้ด้านบนของรายการแม้ว่า

ข้อมูลการตั้งค่าที่เกี่ยวข้อง: การใช้ MacBook Pro กับ VMWare Fusion ที่ติดตั้งซึ่งฉันมีเซิร์ฟเวอร์ Ubuntu 10.04 LTS อาศัยเทอร์มินัลของ Mac และ SSH สำหรับการโต้ตอบกับเซิร์ฟเวอร์เกือบทั้งหมดของฉัน

หลังจากติดตั้ง Drupal เสร็จแล้วฉันย้อนกลับไปที่สแนปชอตก่อนหน้าและไม่สามารถดำเนินการคำสั่งที่ฉันเพิ่งใช้ไปก่อนหน้านี้: sshfs -o idmap=user -o allow_other user@mac.home:/Users/<username>/Documents ~/mountpoint

ปัญหาคือว่าคีย์ไม่ซิงค์กัน ฉันไม่รู้ว่าจริง ๆ แล้วฉันจำเป็นต้องทำสิ่งนี้ทั้งบนโฮสต์และเซิร์ฟเวอร์หรือไม่ แต่ฉันลบคีย์ท้องถิ่นทั้งหมดในแต่ละอันด้วยการสร้างแบ็กอัพไฟล์ known_hosts จากนั้นแก้ไขไฟล์ known_hosts เพื่อลบรายการ .
สำหรับ Mac ไฟล์นี้อยู่ที่: /Users/<username>/.ssh/known_hosts
บน Ubuntu ไฟล์นี้อยู่ที่:/home/<username>/.ssh/known_hosts

ดังนั้นเพื่อสรุปทั้งหมดดำเนินการจาก terminal Mac ของฉันหลังจากเริ่มต้นเซิร์ฟเวอร์ Ubuntu:

cp /Users/<username>/.ssh/known_hosts /Users/<username>/.ssh/known_hosts.old
nano  /Users/<username>/.ssh/known_hosts
  # remove extra entries, save file
ssh <username>@ubuntu_server
cp /home/<username>/.ssh/known_hosts, /home/<username>/.ssh/known_hosts.old
nano /home/<username>/.ssh/known_hosts
  # remove extra entries, save file

เมื่อ SSH แรกในแต่ละระบบ SSH พร้อมท์ให้ฉันอนุญาตให้เพิ่มคีย์ RSA และทำงานได้หลังจากนั้นทั้งหมด

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