Abaikan pemeriksaan izin file kunci ssh

29

Saya memiliki volume FAT terenkripsi (untuk kompatibilitas) yang berisi file kunci pribadi dan data sensitif lainnya.

Saya ingin terhubung ke server saya melalui SSH menggunakan kunci pribadi saya, tetapi tentu saja, karena FAT tidak mendukung izin file, itu mengabaikan kunci saya mengatakan izinnya terlalu terbuka.

Jadi saat ini saya menyalinnya di tempat lain di hard drive saya dengan izin 0600, menggunakannya dan kemudian menghapusnya dengan aman, tapi itu menyebalkan.

Apakah ada cara untuk melewati pemeriksaan izin pada baris perintah sangat ssh / scp ini?

Sunting : Presisi: itu adalah volume TrueCrypt pada OS X.

Pada solusinya: Jawaban yang diterima di bawah memecahkan masalah saya (menggunakan file kunci SSH yang terletak pada volume TrueCrypt dengan Mac OS X), tetapi ini merupakan solusi. Sepertinya tidak ada cara untuk "memintas pemeriksaan izin file kunci".

contoh dari saya
sumber

Jawaban:

18

AFAIK, tidak ada cara untuk mem-bypass pemeriksaan izin keyfile dengan ssh atau ssh-add (dan Anda tidak bisa mengelabui dengan pipa bernama atau semacamnya). Selain itu, Anda sebenarnya tidak ingin menipu ssh, tetapi hanya untuk dapat menggunakan file kunci Anda.

Memang, volume TrueCrypt seharusnya menjaga data Anda tetap pribadi, jadi memasang volume sebagai terbaca dunia (perilaku default TrueCrypt) tidak benar-benar optimal. Jika Anda menggunakan volume yang diformat FAT, Anda harus benar-benar menyesuaikan opsi pemasangan, seperti yang disarankan Dan Carley.

Meskipun opsi pemasangan belum didukung dengan benar oleh TrueCrypt untuk OS X (bahkan jika Anda meluncurkan TC menggunakan antarmuka baris perintah dan opsi pemasangan dari halaman manual - sudah dicoba), OS X tidak mendukung default opsi pemasangan berdasarkan nama volume .

Anda perlu mengetahui id pengguna Anda (biasanya 501 jika Anda adalah pengguna komputer pertama / satu-satunya). Anda bisa mendapatkannya dengan "id -u".

Katakanlah nama volume Anda adalah "PRIVATE" (nama volume dalam huruf kapital), dan uid Anda adalah 501, yang harus Anda lakukan adalah menambahkan baris ini ke / etc / fstab:

LABEL=PRIVATE none msdos -u=501,-m=700

Anda harus melakukan root untuk membuat / mengedit file ini (ini tidak ada pada instalasi OSX default):

sudo vim /etc/fstab

Lain kali Anda memasang volume, itu akan memiliki izin 700 dan id pemilik 501.

Ini juga berfungsi dengan drive USB (yang biasanya diformat dalam FAT juga).

pengguna9437
sumber
berfungsi dengan baik
instanceof saya
Saya tidak bisa mendapatkan volume yang diformat FAT untuk mendapatkan izin yang tepat dengan metode ini. Namun, memilih "Mac OS Extended" dan memilih opsi untuk memasang pada sistem operasi lain memungkinkan saya untuk mengatur izin dengan chmod.
emptyset
Ini bekerja dengan sangat baik. Ketika saya memasang volume aman saya memasang ke titik tertentu di direktori home saya. Saya menemukan bahwa saya harus mengganti nilai 'tidak ada' dengan nama eksplisit titik mount.
Alec the Geek
1
Ini berfungsi bahkan ketika tidak ada /etc/fstabfile di OS X yang lebih baru. Buat saja etc/fstabfile baru dengan yang di atas
iggie
33

Menambahkan kunci dari stdin bekerja untuk saya:

cat /path/to/id_rsa | ssh-add -k -
R_Beagrie
sumber
1
mengapa ini tidak memiliki satu suara positif? itu bekerja di luar kotak tanpa pemasangan dan Anda tetap menggunakan ssh-agent, bukan?
pscheit
4
berfungsi seperti jimat - haruskah jawaban yang diterima
hdave
1
Ini membuat saya masuk. Menggunakan WSL Ubuntu. Terima kasih!
mydoglixu
7

Sebagai solusi gila, Anda bisa membuat disk image volume ext2 yang berisi kunci pribadi Anda dan memasangnya sebagai perangkat loop, kemudian gunakan kunci ssh Anda dari sana.

Buat file kosong 1MB:

dd if=/dev/zero of=diskimg bs=1024 count=1024

Memformatnya ext2 (Tekan Y ketika dikatakan bukan perangkat):

mke2fs diskimg

Pasang di suatu tempat (sebagai root):

mount -t ext2 -o loop diskimg /my/path/to/diskimg

Sekarang Anda memiliki filesystem ext2 kecil yang dapat Anda atur izinnya. Anda dapat menulis skrip untuk memasangnya dan memastikan izin tersebut memiliki UID / GID yang tepat berdasarkan sistem apa pun yang Anda gunakan (karena UID mungkin tidak cocok). Ini juga membutuhkan akses sudo / root untuk bekerja.

Kyle Smith
sumber
Sepertinya tidak ada pilihan sederhana
instanceof
1
yang begitu salah - tapi sangat dingin :)
warren
1
@warren: Saya melakukan kata pengantar dengan 'gila'. :-D
Kyle Smith
2

Bagaimana dengan menambahkan StrictModes noke /etc/ssh/sshd_config(dan memuat ulang sshd) Anda?

edit: oops, opsi ini hanya untuk sisi-server: /

Benoît
sumber
1

Jika saya ingat dengan benar, ssh-agenttidak memeriksa izin kunci. Jadi ini mungkin berhasil:

[-S "$ SSH_AUTH_SOCK"] || eval $ (ssh-agent)
ssh-tambahkan path / ke / id_rsa
grawity
sumber
FYI, Ini tidak berhasil. ssh-addtidak memeriksa izin file.
Kyle Smith
0

Anda dapat memodifikasi Anda opsi untuk mount ( umask, uiddan gid) untuk jas?

Dan Carley
sumber
AFAIK Tidak, ini adalah volume TrueCrypt, satu-satunya pilihan saya adalah me-mount-nya sebagai read-only dan ssh masih mengeluh itu 0777
instanceof