मैं कमांड लाइन पर एसवीएन को एसएसएच पासवर्ड कैसे प्रदान कर सकता हूं?


8

मेरे मामले में, मैं एक SVN चेकआउट करना चाहता हूँ:

svn co svn+ssh://10.106.191.164/home/svn/shproject

हालाँकि, मैं उस एक लाइन में पासवर्ड रखना चाहता हूं, ताकि वह पॉप अप न हो।


1
बस एक त्वरित चेतावनी - आपका उपयोगकर्ता नाम और पासवर्ड उस मशीन तक पहुंच के साथ किसी को भी उजागर किया जाएगा। बस एक साधारण "ps -elf" कमांड पूरी कमांड लाइन दिखाएगा। सामान्य तौर पर यह एक अच्छा विचार सुरक्षा-वार नहीं है, और क्यों svn और उपकरण जैसे पासवर्ड के लिए संकेत देते हैं। ऐसा नहीं है कि आप ऐसा नहीं कर सकते हैं यदि आप नियंत्रित करते हैं कि किसके पास सिस्टम तक पहुंच है, बस लोगों को यह नहीं सोचना चाहिए कि उन्हें सामान्य रूप से ऐसा करना चाहिए।
जारेड

जवाबों:


12

svn co svn + ssh: // उपयोगकर्ता नाम: password@10.106.191.164/home/svn/shproject


+1 प्रश्न का उत्तर देने के लिए और केवल विकल्प उपलब्ध कराने के लिए (हालांकि वे हो सकते हैं)।
ब्रिअलीडा 3

@briealeida - मैं बस यह काम करना चाहता हूं: नीचे मेरी पोस्ट में परीक्षण के अनुसार , ऐसा लगता है कि यह काम नहीं करता है, क्योंकि पासवर्ड प्रॉम्प्ट वैसे भी प्रकट होता है; उसी पोस्ट में एक समाधान है sshpass(जो मेरे लिए काम करता है)।
सादाउ

जैसा कि ऊपर कहा गया है, यह वास्तव में काम नहीं करता है।
जॉनी

विस्तारित: यह तब तक काम करेगा जब तक ssh पासवर्ड नहीं मांगता, जो कि ज्यादातर मामलों में होता है।
जॉनी

16

यह देखते हुए कि आप SSH का उपयोग कर रहे हैं, पसंदीदा तरीका प्राधिकरण के लिए एक सार्वजनिक कुंजी का उपयोग करना है, जो पासवर्ड की आवश्यकता को पूरी तरह से बचाता है।

चाबियाँ बनाने और स्थापित करने के लिए एक गाइड यहां पाया जा सकता है


बेशक, यदि आप चाहते हैं कि आपकी कुंजी वास्तव में सुरक्षित हो, तो आपको इसे एक वाक्यांश देना चाहिए। : /
रोब

7

वास्तव में बेहतर एक कीपर उत्पन्न करना है। आपके स्थानीय उपयोगकर्ता के रूप में:

$ ssh-keygen -t rsa

(सभी चूक स्वीकार करें)

फिर .ssh / id_rsa.pub की सामग्री लें और इसे दूरस्थ सर्वर पर .ssh / प्राधिकृत_के साथ जोड़ें। सुनिश्चित करें कि यह सब एक ही पंक्ति में चिपकाया गया है। यह भी सुनिश्चित करें कि .ssh निर्देशिका की अनुमतियाँ 600 हैं।

फिर आपको पासवर्ड के लिए संकेत दिए बिना ssh करने में सक्षम होना चाहिए।


"सर्वर पर ~ /। Ssh की अनुमतियाँ 700 होनी चाहिए। फ़ाइल ~ / .ssh / अधिकृत_की (सर्वर पर) 600 की एक मोड होनी चाहिए। क्लाइंट-साइड पर (निजी) कुंजी की अनुमतियाँ 600 होना चाहिए। " askubuntu.com/a/46425
जॉनी

6

एक पासवर्ड का उपयोग करने के बजाय आप एक निजी / सार्वजनिक कुंजी जोड़ी पर एक नज़र रखना चाहते हैं और ssh का उपयोग कर सकते हैं। इस तरह की जोड़ी बनाने के लिए अधिकांश लिनक्स वितरण आदेशों का उपयोग करने में आसान होते हैं। हालाँकि इसे आपके उपयोगकर्ता की ~ / .shsh / अधिकृत_की फ़ाइल में सार्वजनिक कुंजी फ़ाइल को जमा करने के लिए सर्वर साइड (एक बार) तक पहुँचने की आवश्यकता होगी।


3

खैर, मैं एक पासवर्ड दर्ज करना चाहता हूं - मुझे यह पसंद नहीं है कि मेरा पासवर्ड कहीं और सेव किया जाए; हालाँकि, मैं इसे svn + ssh कमांड के सेट के अनुसार एक बार दर्ज करना चाहता हूँ ; और अक्सर, आप बस एक करना चाहते हैं svn checkout- और किसी भी तरह से पासवर्ड दर्ज करना होगा। यह ऐसे मामले में है जब मैं केवल एक बार एक पासवर्ड टाइप करना चाहूंगा।

तो, केवल @Boinst और @Marius द्वारा उत्तर मेरे उपयोग के मामले के लिए प्रासंगिक थे; दुर्भाग्य से, उन्होंने मदद नहीं की, क्योंकि मैं उन्हें काम करने के लिए नहीं मिला। मुझे आश्चर्य है कि अगर पोस्ट लेखक खुद उन्हें पोस्ट करने से पहले आदेशों की कोशिश करते हैं, क्योंकि अब मैं कल्पना नहीं कर सकता कि वे कैसे काम कर सकते हैं - यहाँ एक परीक्षण मैंने अपने Ubuntu 10.04 पीसी पर स्थानीय रूप से किया है (और मैं Ctrl-C के साथ तोड़ता हूं, हर बार मैं देखता हूं पासवर्ड शीघ्र दिखाई):

$ svn --version | head -1
svn, version 1.6.6 (r40053)

$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh myself@127.0.0.1? ' PASS
ssh myself@127.0.0.1? [type _PASSWORD_, press ENTER]

## trying first with https://superuser.com/a/71479/39752 
# (specify in URL user:pass separated by colon)

## plain ssh - asks for password anyway:

$ ssh myself:$PASS@127.0.0.1
myself:_PASSWORD_@127.0.0.1's password: ^C

# svn - with just username, as expected:

$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly

# svn - with password added to URL, asks for password anyway:

$ svn co svn+ssh://myself:$PASS@127.0.0.1/tmp/myrepo myrepo-wc
myself:_PASSWORD_@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly

# trying then with https://superuser.com/a/380426/39752, https://superuser.com/a/327822/39752
# (--non-interactive and --username/--password on command line)

# svn - asks for password anyway:

$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly

जहां तक --username/--passwordपर svnकमांड लाइन का संबंध है - कि नहीं के साथ फर्क पड़ता है svn+ssh, क्योंकि यह है, ssh, नहीं कह svn:

svn - तोड़फोड़ की अनदेखी "--password" और "--username" विकल्प - ढेर अतिप्रवाह

आपको जो प्रांप्ट मिल रहा है, वह सबवर्सन की तरह आपको पासवर्ड के लिए नहीं कह रहा है, ऐसा लगता है जैसे आप पासवर्ड मांग रहे हैं।

इसके अतिरिक्त, जैसा कि लॉग दिखाता है, sshस्वयं username:password@...URL में " " स्वीकार नहीं करता है - और न ही ऐसा करता है svn। यह URL में केवल उपयोगकर्ता नाम का उपयोग करने के लिए क्यों स्वीकार्य है svn, शायद इसमें समझाया गया है ~/.subversion/config:

### (यदि URL में उपयोगकर्ता नाम शामिल है, तो होस्टनाम
### सुरंग एजेंट को @ के रूप में पारित किया जाएगा )।

नोटिस के बारे में कुछ नहीं कहा गया है <user>:<pass>@<hostname>

अब, डेबियन पर एसवीएन + एसएसएच पर पेज तोड़फोड़ के लिए धन्यवाद , मुझे अंत में एहसास हुआ कि एक SVN_SSHपर्यावरण चर है ~/.subversion/configजो (मुझे लगता है) ssh सुरंग के लिए उपयोग किया जाता है ; और अंत sshpassमें इस तरह से एक ही तरीके से पासवर्ड को संभालने के लिए प्रोग्राम का उपयोग करने की संभावना खुल जाती है:

$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.

खैर, कम से कम मुझे खुशी है कि मुझे आखिरकार एक समाधान मिला जो मेरे लिए काम करता है - आशा है कि यह किसी और को भी मदद करता है,
चीयर्स!


2
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache


1

मुझे लगता है कि sshpass (लिनक्स में) इसका उपयोग करने का सबसे अच्छा तरीका है।

Sshpass स्थापित करें

$ sudo apt-get install sshpass

अस्थायी पर्यावरण चर सेट करें

$ export SSHPASS=*yourpass*

Svn config फाइल को एडिट करें

$ nano ~/.subversion/config

अंत sshpass -eमें sshकमांड से पहले ssh लाइन में ऐड आउट कमेंट करें

ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.