लिनक्स एफ़टीपी यूज़रनेम और पासवर्ड के साथ लॉगिन करें


23

एफ़टीपी के साथ एक लाइन के साथ लॉग इन करने के लिए कमांड क्या है?

ftp username:password@my.domain.com

कहते हैं:

पासवर्ड उपयोगकर्ता नाम के लिए आवश्यक: पासवर्ड


2
man ftpपता लगाने के लिए उपयोग करें , या हो सकता है ftp --help। मत भूलो कि ftpअलग-अलग उपयोगिताओं का मतलब हो सकता है ....
बेसिल स्टारीनेविच

2
ftp ftp://username:password@my.domain.com

1
आपको यह भी याद रखना चाहिए कि किसी दिए गए प्रोसेस की कमांडलाइन सिस्टम के अन्य सभी उपयोगकर्ताओं को दिखाई देती है। इसलिए, अपने पासवर्ड को कमांडलाइन के एक भाग के रूप में देना एक गंभीर सुरक्षा मुद्दा हो सकता है।

संबंधित - superuser.com/questions/937124/…
SLM

जवाबों:


8
ftp -nv yourftpserver.com

तब user your_username याuser anonymous


मैंने इस जवाब को पोस्ट ftp ftp://username:password@my.domain.comकिया क्योंकि मेरे लिए काम नहीं किया।

Usage: { ftp | pftp } [-46pinegvtd] [hostname]
   -4: use IPv4 addresses only
   -6: use IPv6, nothing else
   -p: enable passive mode (default for pftp)
   -i: turn off prompting during mget
   -n: inhibit auto-login
   -e: disable readline support, if present
   -g: disable filename globbing
   -v: verbose mode
   -t: enable packet tracing [nonfunctional]
   -d: enable debugging

2
यह उपयोगी नहीं है क्योंकि इसके लिए इंटरैक्टिव उपयोग की आवश्यकता है। मैं केवल 'ftp user @ yourserver' टाइप कर सकता हूं।
smaudet

3
यह इस सवाल का जवाब नहीं देता है
phil294

7
ftp ftp://username:password@my.domain.com

आप ftp --helpहालांकि आसानी से उपयोग कर सकते हैं ।


25
दिखाया गया कमांड उत्पादन करता है: "नाम या सेवा ज्ञात नहीं है"। ftp -help ftp :, // और न ही उपयोगकर्ता नाम: पासवर्ड @ के साथ ऐसा कुछ भी नहीं बनाता है।
CW Holeman II

4
आप लिनक्स के किस संस्करण का उपयोग कर रहे हैं? उपरोक्त सिंटैक्स को आज़माने पर मुझे "नाम या सेवा ज्ञात नहीं" भी मिलती है। मैं सेंटोस 6. का उपयोग कर रहा हूं
टिम लुड्विंस्की

7
मुझे नाम या सेवा भी नहीं मिल रही है
केविन जॉनसन

6
मेरे लिए काम नहीं करता है, एक ubuntu दूरदराज के सर्वर पर
फी

6
मैंने यह भी पाया ftp -help बेकार और प्रारूप सुझाव ubuntu पर मेरे लिए काम नहीं करता है 16.
हेनरी

3

सबसे अच्छा विकल्प सुरक्षा उद्देश्यों के लिए gpg जैसी किसी चीज़ के साथ .netrc का उपयोग करना है।

मैंने इसके लिए एक सामान्य उद्देश्य की पटकथा लिखी है, जिसे मैं बाद में अपलोड कर सकता हूं, लेकिन यह निम्नलिखित है:

gpg -c .netrc

या वैकल्पिक रूप से कमांडलाइन और आउटपुट गंतव्य पर पासफ़्रेज़ के साथ:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc

यहां नहीं दिखाया गया है, लेकिन आप इसे अधिक सुरक्षित बनाने के लिए gpg के साथ असममित कुंजी (यदि आपके पास उन्हें सेटअप है) का उपयोग कर सकते हैं।

फिर जब आप लॉगिन करने के लिए तैयार हों

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc

एक उदाहरण .netrc:

machine google.com
login <username>
password <secretpassword>

मैं वास्तव में एक स्थानीय हैश और इन फ़ाइलों की मूल प्रति एक अलग कंप्यूटर पर रखता हूं, जिस पर मैं .netrc फ़ाइलों का उपयोग करता हूं, और .netrc और मेरे द्वारा चलाए जाने वाले स्क्रिप्ट के हैश को सत्यापित करता है, लेकिन वह ऊपर है। ओपी के मूल प्रश्न से परे।


यह सबसे अच्छा उत्तर है, हालांकि इसमें सुधार किया जा सकता है: (1) एकल कमांड लाइन के भीतर उपयोगकर्ता क्रेडेंशियल्स को शेल इतिहास => सुरक्षा समस्याओं में संग्रहीत किया जाएगा। (2) .netrc बिना gpg => सुरक्षा समस्याओं के भी काम करता है। यह भी जांचें कि .netrc फ़ाइल की सही अनुमति है: chmod 600 .netrc(3) डिक्रिप्ट, एफ़टीपी कॉल के आसपास आवरण के रूप में एक शेल फ़ंक्शन, और डिक्रिप्ट किए गए .netrc को हटाने में मदद मिलेगी। आपके शानदार जवाब के लिए धन्यवाद!
गणित

तो एफ़टीपी पासवर्ड के बजाय उपयोगकर्ता को GPG पासफ़्रेज़ लिखना होगा? इसके अलावा, यदि किसी हमलावर ने आपकी व्यक्तिगत फ़ाइलों तक पहुंच लिख दी है तो जैसे ही आप उनका उपयोग कर रहे हैं, वैसे ही आपकी साख प्रकट करने के कई तरीके हैं। उस परिदृश्य में, GPG वास्तव में केवल-पढ़ने के लिए पहुँच के साथ एक हमलावर के खिलाफ मदद करता है। जो वास्तव में दुर्लभ है, मुझे लगता है?
कोनराड

1

Netrc का उपयोग करें । यह कमांड लाइन पर पासवर्ड को दूर देने से बेहतर है।


यह उत्तर नकारात्मक अंक के लायक नहीं है (हालांकि यह कैसे करना है इसका एक उदाहरण की कमी है)।
पीटर मोर्टेंसन

मैं सहमत हूँ - हालाँकि किसी ने भी इसे कभी नहीं बदला (और मैंने इसे कम नहीं किया)।
smaudet

0

तुम कोशिश कर सकते हो

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}

जिसे आप तब कॉल कर सकते हैं my_ftp $'ls subfolder\nanothercommand'

यह समाधान इंटरएक्टिव नहीं है लेकिन सबसे अच्छा मैं समझ सकता हूं

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