sshfs มักจะถามรหัสผ่านใน fstab หรือไม่


20

ฉันพยายามใส่เมานท์ sshfs ใน / etc / fstab ด้วยบรรทัดต่อไปนี้:

sshfs#oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

เพื่อให้ไดรฟ์ข้อมูลนี้ถูกเมาท์เมื่อบู๊ต หลังจากบูทเครื่องแล้วไม่มีอะไรเกิดขึ้น แต่เมื่อฉันใช้คำสั่ง sudo mount -a ฉันจะขอรหัสผ่านเสมอ ฉันได้ตั้งค่า SSH Keys และโอนไปยังคอมพิวเตอร์ที่ 192.168.0.2 และสามารถเข้าสู่ระบบ ssh ปกติโดยไม่มีรหัสผ่าน ฉันจะหยุดการฟิวส์จากการขอรหัสผ่านของฉันเพื่อให้สามารถติดตั้งไดรฟ์ข้อมูลโดยอัตโนมัติในเวลาบูตได้อย่างไร

ถ้าช่วยได้ฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ภายในบ้านที่ใช้ Debian จากแล็ปท็อปที่ใช้งาน Arch Linux ขอบคุณ

คำตอบ:


13

การพิสูจน์ตัวตนแบบใช้คีย์สามารถทำงานได้หากsshกระบวนการสามารถค้นหาคีย์ของคุณได้ คุณมีคีย์ของคุณในไดเรกทอรีบ้านของคุณ แต่คุณไม่เคยบอกว่าsshfsจะหากุญแจ ในเวลาบูตก็จะได้รับrootการติดตั้งระบบไฟล์ทั้งหมดจึงเป็นกุญแจสำคัญจะต้องเป็นทั้งในหรืออ้างถึงใน/root/.ssh/root/.ssh/config

ฉันแนะนำให้ติดตั้งระบบไฟล์หลังจากที่คุณเข้าสู่ระบบและในฐานะผู้ใช้ของคุณเอง ใส่สิ่งนี้ในสคริปต์ที่ดำเนินการเมื่อคุณเข้าสู่ระบบ:

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

ใส่ชื่อแทนhomeserverในชื่อของคุณ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli

อ่านั่นเป็นวิธีที่ดีกว่าในการทำมันฉันไม่คิดว่าจะใส่ไว้ในสคริปต์การเข้าสู่ระบบของฉัน ขอบคุณ!
Semiserious

ใช้ความระมัดระวัง~ในจุดเมานท์ หากคุณใช้ไอคอนตัวเรียกใช้งานบนพาเนลเพื่อเรียกใช้คำสั่งแทนเทอร์มินัล~อาจไม่ได้รับการประเมิน/home/และคำสั่งจะล้มเหลว
Nick

@Nick หากคุณใช้ GUI อาจเป็นเครื่องมือที่อุทิศให้กับการติดตั้งอัตโนมัติ หากคุณทำตามคำตอบของฉันคุณจะต้องวางทั้งสองคำสั่งไว้ในเชลล์สคริปต์ ไอคอนตัวเรียกใช้จะเรียกใช้สคริปต์นั้น
Gilles 'SO- หยุดความชั่วร้าย'

10

ฉันสามารถทำการติดตั้ง sshfs ผ่าน fstab กับ Ubuntu 14.04 โดยใช้ไวยากรณ์ต่อไปนี้เป็นผู้ใช้มาตรฐาน (หมายเหตุอะไรใน CAPS เป็นตัวแปรสำหรับคุณที่จะเติม):

USER@HOST:/REMOTE_DIR /LOCAL_DIR fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

นี่คือการรวมกันของข้อมูลที่พบที่นี่/superuser/669287/automount-sshfs-using-fstab-without-mount-aและเพิ่มdelay_connectจากที่นี่/ubuntu/ 326,977

ฉันใช้บทช่วยสอนนี้เพื่อรับ USER_ID และ USER_GID ของฉัน: https://kb.iu.edu/data/adwf.html

ในการค้นหา UID ของผู้ใช้หรือ GID ใน Unix ให้ใช้คำสั่ง id หากต้องการค้นหา UID ของผู้ใช้ที่พรอมต์ Unix ให้ป้อน:

id -u username

แทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้ที่เหมาะสม ในการค้นหา GID ของผู้ใช้ที่พรอมต์ Unix ให้ป้อน:

id -g username

นอกจากนี้หากคุณต้องการการสอนแบบเต็มรูปแบบมันจะถูกโพสต์ที่https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/


ลิงค์นั้น: variux.com/blog/?p=161ดูเหมือนว่าจะไม่ทำงานอีกต่อไป ...
Christian Casutt

@ChristianMuggli ขอบคุณสำหรับความคิดเห็นของคุณ ฉันได้อัปเดตที่อยู่การสอนเต็มรูปแบบแล้ว อย่างไรก็ตามฉันไม่ได้ทดสอบการสอนเป็นเวลานาน variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid

5

ผมมีปัญหาเดียวกัน.

ฉันเคยตั้งค่าคีย์ ssh ผ่านทางssh-keygenและจากนั้นssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.100

ssh ทำงานได้ดีโดยไม่ต้องขอรหัสผ่านฉันจึงสับสนว่าทำไม sshfs ยังต้องการรหัสผ่าน ...

กล่าวคือ,

ssh root@192.168.0.100 

ทำงานได้ดี แต่ sshfs ยังคงขอรหัสผ่านเมื่อฉันพิมพ์

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

ดังที่อธิบายไว้ข้างต้น Gilles sshfsกำลังค้นหาในไดเรกทอรีรากสำหรับคีย์ที่จำเป็น

ดังนั้นฉันจึงแก้ไขได้โดยเพียงแค่คัดลอกไฟล์ id_rsa และ id_rsa.pub จากโฟลเดอร์. ssh ของโฟลเดอร์บ้านของฉันไปยังโฟลเดอร์. ssh ของรูทเช่น

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

จากนั้นให้พิมพ์งานต่อไปนี้โดยไม่รบกวนรหัสผ่านของฉัน:

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

นี่มันแย่จริงๆจากมุมมองด้านความปลอดภัย สร้างชุดคีย์แยกต่างหากสำหรับรูทและเพิ่มคีย์นี้ไปยัง authorized_keys คุณไม่ควรคัดลอกกุญแจส่วนตัว
Christian Wolf

3

หากคุณต้องการให้บูตโดยไม่มีรหัสผ่านคุณจะต้องสร้างคีย์ ssh สาธารณะ / ส่วนตัวโดยไม่ใช้รหัสผ่าน ไม่แนะนำให้ใช้ แต่อย่างน้อยคุณสามารถป้องกันไฟล์เหล่านั้นด้วยchmod 400ผู้ใช้รูท

หลังจากนั้นตามปกติคุณจะต้องคัดลอกกุญแจสาธารณะบนจุดเชื่อมต่อ:

ssh-copy-id -i my_new_key.pub oli@192.168.0.2

และคุณจะต้องบอก sshfs ให้ใช้คีย์นี้

oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0

2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Tom Hale

1
@ TomHale แทนที่จะ,SSHOPT='IdentityFile /path/to/private/key'เป็นเพียง,IdentityFile /path/to/private/key
pulkitsinghal

2

ทำงานให้ฉันอย่างสมบูรณ์บน Debian 8.2 โดยเพิ่มบรรทัดต่อไปนี้fstab:

user@hostname:/path/to/localmountpoint /path/to/remotemountpoint fuse.sshfs _netdev,user,port=(if_not_22),idmap=user,transform_symlinks,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions,uid=user_id,gid=group_id 0 0

ชื่อโฮสต์บ่งชี้ว่าเซิร์ฟเวอร์ระยะไกล (โฟลเดอร์ที่จะเมาต์) ผู้ใช้นั้นเหมือนกันทั้งในเครื่องและจากระยะไกล (ง่าย)

ตรวจสอบให้แน่ใจว่าคุณได้สร้างคีย์ ssh สำหรับผู้ใช้ที่ใช้ssh-keygenและใช้ssh-copy-idเพื่อคัดลอกคีย์ไปยังเซิร์ฟเวอร์ระยะไกล (ชื่อโฮสต์)

คุณสามารถค้นหาuser_idและสำหรับผู้ใช้ในเซิร์ฟเวอร์ท้องถิ่นgroup_id/etc/passwd

ยังให้แน่ใจว่าผู้ใช้มีการอ่าน / path/to/localmountpointเขียนสิทธิ์ในโฟลเดอร์


2

คุณสามารถเมานต์ SSHFS ได้โดยไม่ต้องใช้รหัสสาธารณะในการเริ่มต้นโดยใช้ตัวเลือก password_stdin แต่ไม่ใช่กับ fstab

สิ่งที่คุณต้องการคือไฟล์สคริปต์และ cron เล็กน้อย

โปรดระวังรหัสสาธารณะเป็นตัวเลือกที่ดีกว่าเสมอ แต่บางครั้งกุญแจสาธารณะไม่ทำงาน (ฉันมีปัญหานั้นสองสามครั้งด้วยตัวเอง) โปรดทราบว่าไฟล์สคริปต์จะมีรหัสผ่านแบบธรรมดา ดังนั้นคุณควรตรวจสอบให้แน่ใจว่ามีเพียง root เท่านั้นที่ได้รับอนุญาตให้ใช้ไฟล์นี้!

ไฟล์สคริปต์สามารถมีลักษณะเช่นนี้ (/root/automount.sh):

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

หากต้องการรันสิ่งนี้เมื่อเริ่มต้นคุณสามารถใช้ crontab เป็น root และป้อนบรรทัดนี้:

@reboot /root/automount.sh

ตามที่ระบุไว้ข้างต้นคุณควรตรวจสอบให้แน่ใจว่าไม่มีใครสามารถอ่านไฟล์ได้เนื่องจากมีรหัสผ่านข้อความธรรมดา!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

ในตอนนี้หลังจากรีบูตระบบของคุณทุกครั้งจะเมานต์ SSHFS โดยอัตโนมัติโดยใช้ข้อมูลประจำตัว


0

มีปัญหาเดียวกัน ในที่สุดมันช่วยให้การตั้งค่าประเภทเป็นฟิวส์อย่างง่ายหรือ (ซึ่งน่าจะเป็นมากกว่า) ตัวเลือกการตัดทอนไปที่:

fuse reconnect,idmap=user,allow_other,default_permissions

ซึ่งทำงานให้ฉันในที่สุด


0

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

ตัวอย่างเช่นหากคุณใส่สิ่งที่คล้ายกับสิ่งนี้ลงใน/etc/fstab:

sshfs#username@host:/  /mnt/here   fuse   auto,ssh_command=sshpass\040-f\040/root/.ssh/host.password\040ssh  0  0

จากนั้นใส่รหัสผ่านในชื่อไฟล์ที่ระบุใน/etc/fstab:

echo 'secret' > /root/.ssh/host.password

ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งsshpass:

pacman -S sshpass  # if you're using Arch Linux

จากนั้นควรทำงาน:

mount /mnt/here

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

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