Apa cara terbaik untuk menyimpan kata sandi svn terenkripsi di Server Ubuntu?

8

Halo,

Saya memiliki Server Ubuntu yang menjalankan server subversi. Saya menjalankan klien pada mesin yang sama melalui SSH, dan saya ingin klien svn mengingat kata sandi saya, tetapi tidak menyimpannya sebagai plaintext. Mencari di sini saya melihat dua metode: gnome-keyring dan kwallet. Karena saya tidak menggunakan manajer desktop, saya agak khawatir mencoba menggunakan salah satu dari ini. Ada saran? Apakah boleh (atau bahkan berfungsi) menggunakan salah satu dari dua aplikasi yang saya sebutkan?

TIA

Andy
sumber

Jawaban:

9
  1. Anda dapat menjalankan Gnome-keyring atau Kwallet pada mesin jarak jauh. Masing-masing terdiri dari dua komponen, daemon dan GUI.

    • Anda dapat menjalankan aplikasi GUI pada mesin jarak jauh jika Anda menjalankan ssh dengan penerusan X. Hanya karena itu adalah mesin "server" tidak berarti Anda tidak dapat menginstal aplikasi GUI di atasnya. Tidak masalah apakah Anda menjalankan lingkungan desktop yang sesuai atau tidak, aplikasi tidak perlu lingkungan desktop tertentu untuk dijalankan.

    • Anda dapat mengontrol Kwallet pada baris perintah melalui qdbus, meskipun itu bukan ide yang baik dalam kasus khusus ini karena Anda harus menulis kata sandi Anda dalam teks yang jelas pada baris perintah, dan ini dapat diintip oleh pengguna lain. Lihat juga jawaban SU ini .

    • Ada pengikat python untuk Gnome-keyring dan Kwallet (paket python-keyring-gnomedan python-keyring-kwallet); Anda bisa menulis skrip python kecil untuk mengontrolnya. Sebenarnya sudah ada satu untuk Gnome-keyring: gkeyring .

    • Jika kata sandi keyring Anda sama dengan kata sandi login Anda, Anda dapat menginstal libpam-keyringdan kata kunci Anda akan secara otomatis dibuka ketika Anda login. Namun ini membutuhkan login dengan kata sandi daripada pasangan kunci.

  2. Jika Anda menjalankan Gnome-keyring atau Kwallet secara lokal, Anda dapat meneruskannya melalui ssh, dengan sedikit pekerjaan. Mereka menggunakan soket Unix, yang ssh tidak bisa meneruskan. Tetapi Anda dapat menggunakan socatrelai soket Unix ke soket TCP secara lokal dan sebaliknya di mesin jarak jauh:

    while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
    ssh -R22007:localhost:22007 remote.example.com
    export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
    while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
    

    Ini dapat diotomatisasi dengan skrip shell kecil di setiap sisi dan satu RemoteForwardbaris masuk ~/.ssh/config. Secara teori, Anda harus dapat mengakses keyring gnome dari mesin jarak jauh. Namun, saya mencoba mengaksesnya dengan kuda laut, dan bahkan tidak mencoba untuk terhubung $GNOME_KEYRING_SOCKET; Saya tidak tahu mengapa, dan saya tidak tahu apakah svn akan dapat mengakses keyring.

  3. Anda dapat menyimpan kata sandi svn di sistem file terenkripsi. Ada beberapa opsi ; Saya pikir cara paling sederhana untuk memulai adalah encfs. Pengaturan awal:

    sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.subversion/auth
    

    Alur kerja normal:

    encfs ~/.passwords.encrypted ~/.passwords
    ... work ...
    fusermount -u ~/.passwords
    

    Metode ini memiliki preferensi saya karena beberapa alasan:

    • Pengaturan awal dan alur kerja normal sangat sederhana.
    • Tidak masalah dari mana Anda masuk, khususnya Anda tidak perlu memiliki server X lokal dan menggunakan penerusan X melalui ssh.
    • Sistem file terenkripsi lebih fleksibel daripada keyring (meskipun kurang nyaman untuk penggunaan keyring, tetapi dalam kasus svn itu tidak masalah).
    • Satu-satunya alat non-ubiquitous yang Anda butuhkan adalah encfs (yang memerlukan FUSE), dan itu dikemas untuk Ubuntu.
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Lebih dari yang bisa kuharapkan dalam jawaban, terima kasih! Saya akan mencoba pendekatan ke-3 dan melaporkan kembali.
Andy
Jawabannya sangat lengkap.
this.josh
Apakah mungkin membuat bail out subversi jika ~ / .subversion / auth kosong / tidak ada? Jika tidak, pendekatan ke-3 agak berbahaya jika Anda lupa untuk menjalankan encfs terlebih dahulu.
unhammer
@unhammer Dengan pendekatan ini, jika sistem file encfs tidak di-mount, maka itu ~/.subversion/authadalah tautan simbolik yang menjuntai. Dalam hal ini, subversi memberitahu Anda bahwa itu akan menyimpan kata sandi Anda (jika Anda belum mematikan notifikasi itu) tetapi sebenarnya tidak menyimpannya di mana saja (diuji dengan svn 1.6.6). Jadi tidak ada risiko dengan pendekatan ketiga.
Gilles 'SO- stop being evil'
aha, saya pertama kali mencoba tanpa symlink, tetapi sekarang saya melihat symlink ke folder di dalam folder terenkripsi tidak berfungsi, terima kasih telah menghapusnya :-)
unhammer
0

gpg mengenkripsi file dengan kata sandi di, - tetapi kemudian Anda akan memerlukan kata sandi untuk itu (dan jangan kehilangan kunci pribadi!).

Saya kira Anda bisa memeriksa ke svn kunci pribadi dan Anda masih perlu kata sandi untuk menggunakannya, tetapi seluruh pengaturan ini tampaknya agak aneh.

mengapa kamu perlu melakukan ini?

Sirex
sumber
Saya tidak mencari cara tujuan umum untuk mengenkripsi, tetapi cara yang terhubung dengan baik dengan SVN. Ketika saya sudah menggunakan SVN pada dekstop Ubuntu tidak ada masalah, jadi saya kira itu sudah menggunakan gnome-keyring. Saya kira lagi bahwa gnome-keyring tidak diinstal pada server Ubuntu, dan itulah sebabnya ada masalah. Saat ini saya dapat memeriksa barang-barang, tetapi saya mendapat peringatan bahwa saya hanya dapat menyimpan kata sandi yang tidak dienkripsi. Lihat tautan yang saya berikan untuk detail lebih lanjut. Terima kasih.
Andy
Saya sudah menjelaskan penjelasan di atas, hth.
Andy
Aku akan senang untuk penggunaan ~ / .authinfo.gpg dengan format Netrc standar untuk SVN, dan memiliki gpg menangani enkripsi, tapi sayangnya yang tampaknya seperti itu akan membutuhkan sedikit lebih pengaturan dari solusi EncFS. Tampaknya tidak seperti svn memungkinkan penyimpanan kata sandi yang ditentukan pengguna secara sewenang-wenang.
unhammer