निर्दिष्ट पोर्ट संख्या के साथ एससीपी


793

मैं एक दूरस्थ सर्वर से अपनी स्थानीय मशीन में एक फ़ाइल को स्कैन करने की कोशिश कर रहा हूं। केवल पोर्ट 80 ही सुलभ है।

मैंने कोशिश की:

scp -p 80 username@www.myserver.com:/root/file.txt .

लेकिन यह त्रुटि मिली: cp: 80: No such file or directory

मैं एक scp कमांड में पोर्ट नंबर कैसे निर्दिष्ट करूं?


33
पोर्ट राजधानी में होना चाहिए 80
एलीटेसैयन

जवाबों:


1406

Ssh के विपरीत, scp अपरकेस पी के बजाय पोर्ट सेट करने के लिए अपरकेस पी स्विच का उपयोग करता है:

scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default

लोअरकेस पी स्विच का उपयोग कई बार और मोड के संरक्षण के लिए scp के साथ किया जाता है।

यहाँ दो स्विच से संबंधित सभी विवरणों के साथ scp के मैन पेज का एक अंश है, साथ ही अपरकेस पी को scp के लिए क्यों चुना गया:

-पोर्ट रिमोट होस्ट पर कनेक्ट करने के लिए पोर्ट को निर्दिष्ट करता है। ध्यान दें कि यह विकल्प एक राजधानी 'पी' के साथ लिखा गया है, क्योंकि -p पहले से ही आरसीपी (1) में फ़ाइल के समय और मोड के संरक्षण के लिए आरक्षित है।

-p मूल फ़ाइल से संशोधन समय, पहुंच समय और मोड को संरक्षित करता है।

अपडेट करें और एक तरफ (भारी उठे हुए) टिप्पणियों को संबोधित करने के लिए :

scpविकल्प आदेश के बारे में अब्दुल की टिप्पणी के संबंध में , वह क्या सुझाव देता है:

scp -P80 -r some_directory -P 80 ...

..., चौराहों विकल्प और मापदंडों। getopt(1)स्पष्ट रूप से परिभाषित करता है कि मापदंडों को विकल्पों के बाद आना चाहिए और उनके साथ प्रतिच्छेद नहीं किया जाना चाहिए:

जिन मापदंडों को अपनाया जाता है, उन्हें दो भागों में विभाजित किया जा सकता है: विकल्प, जो प्राप्त करने के तरीके को संशोधित करते हैं, पार्सिंग करेंगे (विकल्प और SYNOPSIS में ऑप्टस्ट्रिंग), और वे पैरामीटर जिन्हें पार्स किया जाना है (SYNOPSIS में पैरामीटर)। दूसरा भाग पहले गैर-विकल्प पैरामीटर पर शुरू होगा जो विकल्प तर्क नहीं है, या '-' की पहली घटना के बाद है। यदि पहले भाग में कोई '-o' या'-options 'विकल्प नहीं मिलता है, तो दूसरे भाग के पहले पैरामीटर को लघु विकल्प स्ट्रिंग के रूप में उपयोग किया जाता है।

चूंकि -rकमांड लाइन विकल्प आगे कोई तर्क नहीं लेता है, some_directoryइसलिए "पहला गैर-विकल्प पैरामीटर है जो विकल्प तर्क नहीं है।" इसलिए, जैसा कि getopt(1)मैन पेज में स्पष्ट रूप से लिखा गया है , सभी सफल कमांड लाइन तर्क जो इसका पालन करते हैं (यानी, -P 80 ...) को गैर-विकल्प (और गैर-विकल्प तर्क) माना जाता है।

तो, वास्तव में, यह है कि getopt(1)विकल्पों के अंत के साथ प्रस्तुत उदाहरण को कैसे देखता है और ग्रे में टेक्स्ट बिंग को सफल करके सीमांकित किए गए मापदंडों की शुरुआत:

scp -80- आर some_directory -P 80 ...

यह scpव्यवहार और सब कुछ करने के लिए कुछ भी नहीं है कि कैसे POSIX मानक आवेदन getopt(3)सी कार्यों के सेट का उपयोग कर कमांड लाइन विकल्प पार्स करते हैं।

कमांड लाइन ऑर्डरिंग और प्रोसेसिंग के संबंध में अधिक जानकारी के लिए, कृपया getopt(1)उपयोग किए गए मैनपेज को पढ़ें :

man 1 getopt

88
btw, scpसही विकल्प आदेश की मांग scp -r some_directory -P 80 ...करता है : काम नहीं करता ----- लेकिन scp -P 80 -r some_directory ...काम करता है।
अब्दुल 15

9
आम तौर पर linux में कमांड के विकल्प और उसके बाद निर्देश / मान होते हैं
Gary

2
@Abdull ध्यान दें कि scp -r -p 50193 / path / to / directory काम करता है। फ़ाइल पथ पैरामीटर -r पुनरावृत्ति विकल्प से बंधा नहीं है।
बेंजामिन

6
@ बेंजामिन जब तक आप पोर्ट 50193 का उपयोग करने के लिए नहीं होते हैं, उस स्थिति में आपके 'पी' को पूंजीकृत किया जाना चाहिए।
कोई भी

1
@Abdull: वहाँ एक उत्तर पूछ रहा है askubuntu.com/a/307078/37574 जो -Pपैरामीटर ऑर्डर करने के बारे में बताता है । मूल रूप से, बंदरगाह को मेजबान से पहले जाना पड़ता है। यह दोनों अस्पष्टता को रोकता है और दो -Pमापदंडों के लिए अनुमति देता है यदि दोनों होस्ट दूरस्थ हैं।
mwfearnley

70

एक अतिरिक्त संकेत। Sc-कमांड के बाद '-P' विकल्प रखें, इससे कोई फर्क नहीं पड़ता कि आप जिस मशीन में ssh-ing कर रहे हैं वह दूसरा वाला (उर्फ गंतव्य) है। उदाहरण:

scp -P 2222 /absolute_path/source-folder/some-file user@example.com:/absolute_path/destination-folder

46

तुम्हें पता है कि क्या कूलर की तुलना में है -P? कुछ भी तो नहीं

यदि आप कुछ समय से अधिक समय से इस सर्वर का उपयोग करते हैं, तो ~/.ssh/configएक प्रविष्टि के साथ एक फ़ाइल सेटअप / बनाएं :

Host www.myserver.com
    Port 80

या

Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
    HostName www.myserver.com
    Port 80
    User username

तो आप का उपयोग कर सकते हैं:

scp username@www.myserver.com:/root/file.txt .

या

scp short:/root/file.txt .

आप ssh, scp, rsync, git और अधिक के साथ "होस्ट" लाइन पर कुछ भी उपयोग कर सकते हैं

MANY कॉन्फ़िगरेशन विकल्प हैं जिनका उपयोग आप कॉन्फ़िगर फ़ाइलों में कर सकते हैं, देखें:

man ssh_config


3
केवल समाधान जो scp -3विभिन्न बंदरगाहों पर ssh श्रोताओं के साथ और सर्वर के उपयोग की अनुमति देता है । scp -3 -P 123 server1:/file -P 456 server2:/fileया इसी तरह के विकल्प काम नहीं करेंगे, दोनों सर्वरों में एक ही पोर्ट को scp ने ग्रहण किया
user88595

28

मैं अलग-अलग पोर्ट का उपयोग कर रहा हूं और इस तरह फाइलों के बीच मानक और कॉपी फाइलें:

scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine

यह केवल सामयिक उपयोग के लिए है, अगर यह अपने आप को एक शेड्यूल के आधार पर दोहराता है तो आपको इसे करने के लिए rsync और cron जॉब का उपयोग करना चाहिए।


7

इस तरह से राजधानी पी का उपयोग करने के लिए एक और बंदरगाह का उपयोग करें

scp -P port-number source-file/directory user@domain:/destination

या अली


6

scp help हमें बताती है कि पोर्ट अपरकेस पी द्वारा निर्दिष्ट किया गया है।

~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

उम्मीद है की यह मदद करेगा।


2

होस्ट करने के लिए फ़ाइल की प्रतिलिपि बनाना: scp SourceFile remoteuser@remotehost:/directory/TargetFile

होस्ट से फाइल कॉपी करना: scp user@host:/directory/SourceFile TargetFile

होस्ट से पुनरावर्ती निर्देशिका की प्रतिलिपि बनाना: scp -r user@host:/directory/SourceFolder TargetFolder

नोट : यदि होस्ट पोर्ट 22 के अलावा किसी अन्य पोर्ट का उपयोग कर रहा है, तो आप इसे -P विकल्प के साथ निर्दिष्ट कर सकते हैं: scp -P 2222 user@host:/directory/SourceFile TargetFile


6
बस नोट
पर्याप्त

2

यह -Pस्विच के माध्यम से पोर्ट निर्दिष्ट करके प्राप्त किया जा सकता है :

scp -i ~/keys/yourkey -P2222 file ubuntu@host:/directory/

2

यदि आपको सर्वर पर स्थानीय फ़ाइल की प्रतिलिपि चाहिए (पोर्ट निर्दिष्ट करें)

scp -P 3838 /the/source/file username@server.com:/destination/file

0

आशा है कि यह किसी को सही उत्तर की तलाश में मदद करेगा

किसी सर्वर से किसी फ़ोल्डर या फ़ाइल को किसी अन्य सर्वर या स्थानीय मशीन में परिभाषित पोर्ट के साथ कॉपी करना

  1. एक निर्देशिका पर जाएं जहां आपके पास मशीन पर अधिमानतः आपके घर की निर्देशिका अधिकार है जहां आप फ़ाइलों को कॉपी करना चाहते हैं
  2. नीचे कमांड लिखिए

scp -r-port उपयोगकर्ता @ IP_address: / home / फ़ाइल / pathDirectory।

**Note:** The last . on the command directs it to copy everything in that folder to your directory of preference

0

कई उत्तर हैं, लेकिन आपको इसे सरल रखने में सक्षम होना चाहिए। सुनिश्चित करें कि आप जानते हैं कि एसएसएच किस पोर्ट पर सुन रहा है, और इसे परिभाषित करें। यहाँ मैं सिर्फ अपनी समस्या को दोहराने के लिए इस्तेमाल किया है।

scp -P 12222 file.7z user@193.168.XX: / घर / उपयोगकर्ता / डाउनलोड यह अच्छी तरह से काम किया।

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