sshfs selalu meminta kata sandi di fstab?

20

Saya mencoba memasukkan sshfs mount di / etc / fstab dengan baris berikut:

sshfs#[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

Sehingga volume ini sudah terpasang saat boot. Setelah boot, tidak ada yang terjadi, tetapi ketika saya menggunakan perintah sudo mount -a, saya selalu dimintai kata sandi. Saya telah mengatur Kunci SSH dan memindahkannya ke komputer pada 192.168.0.2, dan dapat masuk ke ssh biasa tanpa pasword. Bagaimana saya bisa berhenti sekering meminta kata sandi saya sehingga volume dapat secara otomatis dipasang pada saat boot?

Jika itu membantu sama sekali, saya mencoba untuk terhubung ke server rumah yang menjalankan Debian dari laptop yang menjalankan Arch Linux. Terima kasih

setengah hati
sumber

Jawaban:

13

Otentikasi berbasis kunci hanya dapat berfungsi jika sshproses dapat menemukan kunci Anda. Anda mungkin memiliki kunci di direktori home Anda; tetapi Anda tidak pernah mengatakan di sshfsmana mencari kunci. Pada saat boot, itu akan rootme - mount semua sistem file, oleh karena itu kuncinya harus masuk /root/.sshatau dirujuk /root/.ssh/config.

Saya sarankan untuk menginstal sistem file setelah Anda masuk, dan sebagai pengguna Anda sendiri. Masukkan ini ke dalam skrip yang dieksekusi ketika Anda login:

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

Masukkan alias yang disebut homeserverdi ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Ahh, itu cara yang lebih baik untuk melakukannya, saya tidak berpikir untuk memasukkannya ke dalam skrip login saya. Terima kasih!
semantik
Hati-hati menggunakan ~di titik pemasangan. Jika Anda menggunakan ikon peluncur di panel untuk menjalankan perintah alih-alih terminal, ~mungkin tidak dievaluasi sebagai /home/dan perintah akan gagal.
Nick
@Nick Jika Anda menggunakan GUI, mungkin ada alat yang didedikasikan untuk penghitungan otomatis. Jika Anda mengikuti jawaban saya, Anda harus meletakkan kedua perintah dalam skrip shell; ikon peluncur akan menjalankan skrip itu.
Gilles 'SO- stop being evil'
10

Saya dapat membuat sshfs mount via fstab dengan Ubuntu 14.04 dengan melakukan menggunakan sintaks berikut sebagai pengguna standar (perhatikan apa pun di CAPS adalah variabel untuk Anda isi):

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

Ini adalah kombinasi dari informasi yang ditemukan di sini /superuser/669287/automount-sshfs-using-fstab-without-mount-a dan menambahkan delay_connect dari sini /ubuntu/ 326977 / sshfs-is-not-mounting-otomatis-saat-boot-meskipun-etc-fstab-konfigurasi .

Saya menggunakan tutorial ini untuk mendapatkan USER_ID dan USER_GID saya: https://kb.iu.edu/data/adwf.html

Untuk menemukan UID atau GID pengguna di Unix, gunakan perintah id. Untuk menemukan UID pengguna tertentu, di prompt Unix, masukkan:

id -u username

Ganti nama pengguna dengan nama pengguna pengguna yang sesuai. Untuk menemukan GID pengguna, pada prompt Unix, masukkan:

id -g username

Juga, jika Anda ingin tutorial lengkap, itu akan diposting di https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/

variuxDavid
sumber
Tautan itu: variux.com/blog/?p=161 tampaknya tidak lagi berfungsi ...
Christian Casutt
@ChristianMuggli terima kasih atas komentar Anda. Saya telah memperbarui alamat tutorial lengkap. Saya belum menguji tutorial dalam waktu yang lama. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid
5

Saya memiliki masalah yang sama.

Saya sebelumnya telah mengatur kunci ssh melalui ssh-keygendan kemudianssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh bekerja dengan baik tanpa meminta saya kata sandi, jadi saya bingung mengapa sshfs masih menginginkan kata sandi ...

Artinya,

ssh [email protected] 

berfungsi dengan baik, namun sshfs masih meminta kata sandi ketika saya mengetik

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Seperti dijelaskan Gilles di atas, sshfssedang mencari di direktori root untuk kunci yang diperlukan.

Oleh karena itu, saya menyelesaikan ini dengan hanya menyalin file id_rsa dan id_rsa.pub dari folder .ssh folder home saya yang tersembunyi ke folder .ssh root yaitu

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

Kemudian, mengetik berikut ini berfungsi tanpa mengganggu saya untuk kata sandi:

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other
CMP
sumber
Ini benar-benar buruk dari sudut pandang keamanan. Lebih baik buat satu set kunci terpisah untuk root dan tambahkan ini juga ke otor_keys. Anda tidak boleh menyalin kunci pribadi.
Christian Wolf
3

Jika Anda ingin boot tanpa kata sandi, Anda harus membuat kunci ssh publik / pribadi tanpa kata sandi. Itu tidak direkomendasikan, tetapi Anda setidaknya dapat melindungi file-file itu dengan chmod 400pengguna sebagai root.

Setelah itu, seperti biasa, Anda harus menyalin kunci publik pada mount point:

ssh-copy-id -i my_new_key.pub [email protected]

Dan Anda harus memberi tahu sshfs untuk menggunakan kunci ini.

[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0
Coren
sumber
2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Tom Hale
1
@ TomHale bukan ,SSHOPT='IdentityFile /path/to/private/key'hanya,IdentityFile /path/to/private/key
pulkitsinghal
2

Bekerja untuk saya dengan sempurna di Debian 8.2 menambahkan baris berikut ke 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

Hostname menunjukkan bahwa pengguna server jauh (folder untuk mount) adalah sama secara lokal dan jarak jauh. (lebih mudah)

Pastikan Anda telah membuat secara lokal kunci ssh untuk digunakan ssh-keygendan digunakan pengguna ssh-copy-iduntuk menyalin kunci ke server jauh (nama host).

Anda dapat menemukan user_iddan group_iduntuk pengguna di server lokal /etc/passwd.

Pastikan juga bahwa pengguna memiliki izin baca / tulis di folder path/to/localmountpoint.

LincolnP
sumber
2

Anda sebenarnya bisa memasang SSHFS tanpa kunci publik saat startup dengan menggunakan opsi password_stdin, tetapi tidak dengan fstab.

Yang Anda butuhkan adalah file skrip kecil dan cron.

Perlu diketahui bahwa kunci publik selalu merupakan pilihan yang lebih baik. Tetapi terkadang kunci publik tidak berfungsi (saya sendiri pernah mengalami masalah itu beberapa kali). Harap perhatikan bahwa file skrip akan berisi kata sandi dengan jelas. Untuk itu Anda harus memastikan bahwa hanya root yang memiliki izin untuk file ini!

File skrip dapat terlihat seperti ini (/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

Untuk menjalankan ini pada startup Anda dapat menggunakan crontab sebagai root dan masukkan baris ini:

@reboot /root/automount.sh

Seperti yang dinyatakan di atas, Anda harus memastikan bahwa tidak ada seorang pun yang dapat membaca file karena mengandung kata sandi teks biasa!

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

Sekarang, setelah setiap reboot sistem Anda akan secara otomatis me-mount SSHFS dengan menggunakan kredensial.

Nico
sumber
0

Punya masalah yang sama. Pada akhirnya itu membantu mengatur tipe ke sekering sederhana, atau (yang lebih mungkin) memotong pilihan untuk:

fuse reconnect,idmap=user,allow_other,default_permissions

yang pada akhirnya berhasil bagi saya

Kangur
sumber
0

Jika Anda mencoba menyambung ke server yang tidak mendukung kunci dan Anda tetap menginginkannya otomatis, Anda dapat menggunakannya sshpassuntuk mengetikkan kata sandi Anda bahkan dengan sshfsdan bahkan dengan fstab.

Misalnya, jika Anda memasukkan sesuatu yang mirip ini di /etc/fstab:

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

Kemudian masukkan kata sandi dalam nama file yang ditentukan dalam /etc/fstab:

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

Pastikan Anda telah menginstal sshpass:

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

Maka seharusnya bekerja:

mount /mnt/here

Anda mungkin perlu ke sshserver sekali dulu untuk mengonfirmasi kuncinya, tetapi setelah itu ini akan berfungsi tanpa interaksi manual, dan dengan autoflag di fstabdalamnya harus dipasang pada saat boot tanpa perlu memasukkan kata sandi secara manual.

Malvine
sumber