
vault-conductor v0.3.1
एक SSH Agent जो Bitwarden Secrets Manager में संग्रहीत SSH कुंजियाँ प्रदान करता है
एक SSH एजेंट जो Bitwarden Secret Manager में सीक्रेट के रूप में संग्रहीत SSH कुंजियाँ प्रदान करता है।
SSH प्रमाणीकरण और Git कमिट हस्ताक्षर का समर्थन करता है।
डेमो

विशेषताएँ
यह SSH Agent Protocol को एक Unix domain socket सर्वर के रूप में लागू करता है, जो आपके SSH क्लाइंट्स और Bitwarden Secrets Manager के बीच एक सुरक्षित सेतु के रूप में कार्य करता है।
इसमें निम्नलिखित विशेषताएँ हैं:
- एजेंट जीवनचक्र: डेमॉन (बैकग्राउंड) या फोरग्राउंड प्रक्रिया के रूप में चलता है, जो Unix socket
/tmp/vc-$(whoami)-ssh-agent.sockपर सुनता है - कुंजियों का लेज़ी लोडिंग: SSH कुंजियाँ Bitwarden से उनके आधिकारिक Rust SDK के माध्यम से केवल अनुरोध करने पर प्राप्त की जाती हैं, फिर मेमोरी में कैश की जाती हैं
- सुरक्षित SSH संचालन: जब SSH क्लाइंट पहचान पूछते हैं या हस्ताक्षर का अनुरोध करते हैं, तो एजेंट
ssh-agent-libक्रेट का उपयोग करके अनुरोधों को संभालता है, बिना निजी कुंजियों को कभी डिस्क पर उजागर किए - प्रक्रिया प्रबंधन: बैकग्राउंड मोड एक अलग चाइल्ड प्रक्रिया उत्पन्न करता है, PID ट्रैक करता है, और SIGTERM/SIGINT के माध्यम से सुचारू शटडाउन का समर्थन करता है
- सुरक्षा: Socket अनुमतियाँ
0600(केवल स्वामी) तक सीमित हैं, कुंजियाँ केवल प्रक्रिया मेमोरी में रहती हैं, और Bitwarden APIs को एक स्कोप्ड मशीन टोकन का उपयोग करके कॉल किया जाता है, जिसे आप ग्रैन्युलर सीक्रेट एक्सेस के साथ कॉन्फ़िगर कर सकते हैं।
अंदर से, यह async I/O के लिए Tokio के साथ बनाया गया है, क्रिप्टोग्राफ़िक संचालन के लिए ssh-key क्रेट का उपयोग करता है, और OpenSSH प्रारूप में Ed25519 और RSA दोनों कुंजियों का समर्थन करता है।
क्यों
यह मेरी आवश्यकता से जन्मा था। Bitwarden GUI क्लाइंट में Bitwarden SSH Agent सुविधा काम की है, लेकिन यदि आप केवल अपना devbox CLI चला रहे हैं तो क्या उपयोग करें? गिट कमिट पर हस्ताक्षर करने के लिए अपनी SSH कुंजी को CI/CD पाइपलाइन में सुरक्षित रूप से कैसे लाएँ? यदि आपको बिना कोई निजी कुंजी कॉपी किए किसी अस्थायी कंटेनर या VM से SSH कनेक्शन खोलना हो तो क्या करें? कीचेन में संग्रहीत और लॉगिन सत्रों से जुड़े पासफ़्रेज़ से निपटने से कैसे बचें?
इसलिए मैंने SSH कुंजियाँ प्राप्त करने और उन्हें बिना उनके निजी हिस्से को उजागर किए उपलब्ध कराने के लिए एक छोटा CLI टूल लिखा।
और अपने पूरे Bitwarden वॉल्ट को पर्यावरण में लाने से बचने के लिए, यह Bitwarden Secrets Manager का उपयोग करता है, ताकि आप चुन सकें कि कौन सी मशीन किस सीक्रेट तक पहुँच सकती है और ग्रैन्युलर टोकन अनुमतियाँ सेट कर सकें।
आवश्यकताएँ
- कॉन्फ़िगर किए गए Bitwarden Secret Manager के साथ एक Bitwarden खाता (जिसे आप मुफ्त में बना और सेटअप कर सकते हैं) (self-hosted Bitwarden के लिए समर्थन की योजना है)
- OpenSSH नए प्रारूप में एक Ed25519 या RSA SSH कुंजी, BWS में सीक्रेट मान के रूप में सहेजी गई
- इसे
-----BEGIN OPENSSH PRIVATE KEY-----और-----END OPENSSH PRIVATE KEY-----स्ट्रिंग्स सहित सहेजा जाना आवश्यक है। - नोट: नया OpenSSH निजी कुंजी प्रारूप 2018 में OpenSSH 7.8 के साथ पेश किया गया था।
- इसे
- पिछले 5 वर्षों में जारी macOS या Linux
इंस्टॉलेशन
नीचे दिए गए तरीकों में से किसी एक का उपयोग करके।
poof
poof का उपयोग करके:
poof install pirafrank/vault-conductor
वन-लाइनर स्क्रिप्ट
curl -fsSL https://raw.githubusercontent.com/pirafrank/vault-conductor/main/install.sh | sh
Homebrew
brew tap pirafrank/tap
brew install vault-conductor
मैन्युअली
या नवीनतम स्थिर रिलीज़ को मैन्युअली डाउनलोड करके $PATH में रखें।
सोर्स से
cargo install --locked --git https://github.com/pirafrank/poof --tag VERSION
कॉन्फ़िगरेशन
आपको निम्नलिखित प्रदान करना होगा:
BWS_ACCESS_TOKEN, वह मशीन टोकन जो आपने ऊपर सेटअप किया है। पर्यावरण चर का नाम Bitwarden द्वाराbwsCLI टूल के समान हैBW_SECRET_IDS, सीक्रेट्स के UUID की कॉमा-सेपरेटेड सूची जहाँ प्रत्येक निजी कुंजी संग्रहीत है। आप BWS वेब ऐप में प्रत्येक सीक्रेट का UUID पढ़ सकते हैं (सीक्रेट नाम के नीचे देखें)।BW_SERVER_ENDPOINT(वैकल्पिक), कस्टम Bitwarden सर्वर एंडपॉइंट (केवल होस्ट, प्रोटोकॉल के बिना)। यदि प्रदान नहीं किया गया है, तो डिफ़ॉल्टbitwarden.comहोता है। मान्य उदाहरण हैंbitwarden.eu(क्लाउड) औरmyvault.example.com,192.168.1.100,vault.internal(self-hosted)।
आप उन्हें ऊपर दिए गए पर्यावरण चर के रूप में (CI और DevOps सेटअप के लिए अच्छा) या कॉन्फ़िग फ़ाइल के माध्यम से पास कर सकते हैं:
# download the example config file at the default path, then customize to your needs
mkdir ~/.config/vault-conductor
curl -sSL https://github.com/pirafrank/vault-conductor/raw/refs/heads/main/config.yaml.example > ~/.config/vault-conductor/config.yaml
chmod 0600 ~/.config/vault-conductor/config.yaml
उपयोग
# set SSH Agent env var to vault-conductor socket
export SSH_AUTH_SOCK="/tmp/vc-$(whoami)-ssh-agent.sock"
# Start in foreground
# (recommended for first time users to verify config is ok)
vault-conductor start --fg
# Start the agent in background
vault-conductor start
# Stop the background agent
vault-conductor stop
start कमांड कस्टम कॉन्फ़िगरेशन पथ प्रदान करने के लिए --config विकल्प का भी समर्थन करता है। पर्यावरण चर हमेशा कॉन्फ़िग फ़ाइल पर प्राथमिकता लेते हैं।
डीबग
कभी-कभी आपको किसी अजीब स्थिति को डीबग करने और अधिक से अधिक लॉग की आवश्यकता हो सकती है। फोरग्राउंड में चलाने और विस्तृत sysout लॉग प्राप्त करने के लिए निम्नलिखित निष्पादित करें:
vault-conductor start --fg -vv
सेवा के रूप में इंस्टॉल करें
आप इसे उपयोगकर्ता स्थान में Systemd सेवा के रूप में इंस्टॉल कर सकते हैं। यहाँ और पढ़ें।
दस्तावेज़ीकरण
docs निर्देशिका देखें, जहाँ कोड कैसे काम करता है और कैसे व्यवस्थित है, इसके चित्र मिलेंगे। RSA कुंजियों का उपयोग करने या एजेंट को फॉरवर्ड करने से पहले सुरक्षा नीति देखें।
आगे क्या
- एकाधिक SSH कुंजियों का समर्थन
- self-hosted Bitwarden सेटअप का समर्थन
- बेहतर परीक्षण
- इंस्टॉल करने के और तरीके प्रदान करें (Homebrew, AUR, nix, .deb, .rpm)
- Bitwarden के अलावा अन्य प्रदाताओं का समर्थन?
नाम के बारे में
vault, /voːlt/ - एक भूमिगत कमरा, विशेष रूप से कीमती सामान रखने के लिए
conductor, /kənˈdʌk·tər/ - एक निर्देशक, एक चीज़ जो ऊष्मा या बिजली का संचालन करती है
विस्तार से, एक चीज़ जो आपकी मूल्यवान SSH कुंजी को Bitwarden वॉल्ट से आपके dev पर्यावरण तक पहुँचाती है।
लाइसेंस
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
विवरण के लिए LICENSE फ़ाइल देखें।