2010-12-16 10 views
12

मैं एक स्क्रिप्ट जो एक से दूसरे सर्वर से फ़ाइल स्थानांतरण करना होगा है, लेकिन यह एक त्रुटि देता है:Net :: SCP :: त्रुटि (SCP सफलतापूर्वक समाप्त नहीं किया()):

Net::SCP::Error (SCP did not finish successfully()): 

कर सकते हैं किसी भी शरीर मेरी मदद करो? मेरा कोड यहाँ है।

Net::SCP.start('s.com', 'username', :password => 'password') do|scp| 
    scp.upload!(source, destination) 
end 
+0

मुझे पता है कि यह पुराना है और उत्तर दिया गया है, लेकिन जब मैं नेट :: एससीपी के साथ डाउनलोड करने की कोशिश कर रहा था तो मुझे यह त्रुटि मिली। मेरे लिए समस्या यह थी कि रिमोट एसएसएच होस्ट में 'openssh-clients' स्थापित नहीं था। – ZombieDev

उत्तर

10

मुझे आज यह समस्या थी। एक गैर-मौजूद फ़ाइल पर मेरी स्थानीय फ़ाइल (आपके उदाहरण में, स्रोत) को इंगित करता है। सौभाग्य।

9

यह त्रुटि तब भी होती है जब आप उस फ़ोल्डर में फ़ाइल अपलोड कर रहे हैं जो दूरस्थ सर्वर पर अभी तक मौजूद नहीं है। एससीपी

3

में फ़ोल्डर निर्माण अंतर्निहित नहीं है मेरे पास यह समस्या है और बस इसे ठीक किया गया है। कारण स्थानीय और दूरस्थ दोनों पथ, '/ home/root/folder' जैसे पूर्ण पथ होना चाहिए, और '~/फ़ोल्डर' नहीं होना चाहिए।

+0

यह मेरा मुद्दा था, इसे [कैपिस्ट्रानो मणि] (https://github.com/sgruhier/capistrano-db-tasks/blob/master/lib/capistrano-db-tasks/database.rb) के साथ सामना करना पड़ रहा था यह है एक दोष? –

0

मेरे पास एक rakefile.rb है जो नेट/एसपीपी और मूल पासवर्ड प्रमाणीकरण का उपयोग कर रिमोट सर्वर पर फ़ाइल अपलोड करने के लिए एक कार्य को परिभाषित करता है, और मुझे "नेट :: एसएसएच :: प्रमाणीकरणफेल" अपवाद मिल रहा था, भले ही मैंने चेक किया मेजबान, उपयोगकर्ता, पासवर्ड, और फ़ाइल तार। मैं

LogLevel INFO 

सक्षम

LogLevel DEBUG 

तो सर्वर लॉग में (जैसे, /var/log/auth.log) निम्न उत्पादन देखा और पाया कि ग्राहक किसी कारण के लिए सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करने की कोशिश कर रहा था!

Nov 13 22:38:26 linux sshd[12514]: debug1: Forked child 12532. 
Nov 13 22:38:26 linux sshd[12532]: Set /proc/self/oom_score_adj to 0 
Nov 13 22:38:26 linux sshd[12532]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8 
Nov 13 22:38:26 linux sshd[12532]: debug1: inetd sockets after dupping: 3, 3 
Nov 13 22:38:26 linux sshd[12532]: Connection from 192.168.112.1 port 38391 
Nov 13 22:38:26 linux sshd[12532]: debug1: Client protocol version 2.0; client software version Ruby/Net::SSH_2.6.1 i386-mingw32 
Nov 13 22:38:26 linux sshd[12532]: debug1: no match: Ruby/Net::SSH_2.6.1 i386-mingw32 
Nov 13 22:38:26 linux sshd[12532]: debug1: Enabling compatibility mode for protocol 2.0 
Nov 13 22:38:26 linux sshd[12532]: debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1 
Nov 13 22:38:26 linux sshd[12532]: debug1: permanently_set_uid: 102/65534 [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: list_hostkey_types: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: SSH2_MSG_KEXINIT sent [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: SSH2_MSG_KEXINIT received [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: kex: client->server aes128-cbc hmac-sha1 none [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: kex: server->client aes128-cbc hmac-sha1 none [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent [preauth] 
Nov 13 22:38:26 linux sshd[12532]: debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: SSH2_MSG_NEWKEYS sent [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: expecting SSH2_MSG_NEWKEYS [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: SSH2_MSG_NEWKEYS received [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: KEX done [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: userauth-request for user root service ssh-connection method publickey [preauth] 
Nov 13 22:38:27 linux sshd[12532]: debug1: attempt 0 failures 0 [preauth] 

    (pause in time) 

Nov 13 22:38:38 linux sshd[12532]: debug1: test whether pkalg/pkblob are acceptable [preauth] 
Nov 13 22:38:38 linux sshd[12532]: debug1: PAM: initializing for "root" 
Nov 13 22:38:38 linux sshd[12532]: debug1: PAM: setting PAM_RHOST to "np-complete.local" 
Nov 13 22:38:38 linux sshd[12532]: debug1: PAM: setting PAM_TTY to "ssh" 
Nov 13 22:38:38 linux sshd[12532]: debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 
Nov 13 22:38:38 linux sshd[12532]: debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 
Nov 13 22:38:38 linux sshd[12532]: debug1: temporarily_use_uid: 0/0 (e=0/0) 
Nov 13 22:38:38 linux sshd[12532]: debug1: trying public key file /root/.ssh/authorized_keys 
Nov 13 22:38:38 linux sshd[12532]: debug1: Could not open authorized keys '/root/.ssh/authorized_keys': No such file or directory 
Nov 13 22:38:38 linux sshd[12532]: debug1: restore_uid: 0/0 
Nov 13 22:38:38 linux sshd[12532]: debug1: temporarily_use_uid: 0/0 (e=0/0) 
Nov 13 22:38:38 linux sshd[12532]: debug1: trying public key file /root/.ssh/authorized_keys2 
Nov 13 22:38:38 linux sshd[12532]: debug1: Could not open authorized keys '/root/.ssh/authorized_keys2': No such file or directory 
Nov 13 22:38:38 linux sshd[12532]: debug1: restore_uid: 0/0 
Nov 13 22:38:38 linux sshd[12532]: Failed publickey for root from 192.168.112.1 port 38391 ssh2 
Nov 13 22:38:38 linux sshd[12532]: Connection closed by 192.168.112.1 [preauth] 
Nov 13 22:38:38 linux sshd[12532]: debug1: do_cleanup [preauth] 
Nov 13 22:38:38 linux sshd[12532]: debug1: monitor_read_log: child log fd closed 
Nov 13 22:38:38 linux sshd[12532]: debug1: do_cleanup 
Nov 13 22:38:38 linux sshd[12532]: debug1: PAM: cleanup 

तो देखने के लिए पर मैं एक शामिल करने के लिए मेरे कोड बदल जा रहा था: कि मैं केवल पासवर्ड प्रमाणीकरण का समर्थन निर्दिष्ट करने के लिए SCP के लिए विकल्पों में ssh कुंजी:

Net::SCP.upload!(:remote_server, :remote_user, local_file, remote_file, 
       { 
        :password => "(my password)", 
        :ssh => {:auth_methods => ["password"]} 
       } 
      ) 

और इस के परिणामस्वरूप सर्वर पर संदेश निम्नलिखित:

Nov 13 23:00:36 linux sshd[12514]: debug1: Forked child 13376. 
Nov 13 23:00:36 linux sshd[13376]: Set /proc/self/oom_score_adj to 0 
Nov 13 23:00:36 linux sshd[13376]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8 
Nov 13 23:00:36 linux sshd[13376]: debug1: inetd sockets after dupping: 3, 3 
Nov 13 23:00:36 linux sshd[13376]: Connection from 192.168.112.1 port 38631 
Nov 13 23:00:36 linux sshd[13376]: debug1: Client protocol version 2.0; client software version Ruby/Net::SSH_2.6.1 i386-mingw32 
Nov 13 23:00:36 linux sshd[13376]: debug1: no match: Ruby/Net::SSH_2.6.1 i386-mingw32 
Nov 13 23:00:36 linux sshd[13376]: debug1: Enabling compatibility mode for protocol 2.0 
Nov 13 23:00:36 linux sshd[13376]: debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1 
Nov 13 23:00:36 linux sshd[13376]: debug1: permanently_set_uid: 102/65534 [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: list_hostkey_types: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: SSH2_MSG_KEXINIT sent [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: SSH2_MSG_KEXINIT received [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: kex: client->server aes128-cbc hmac-sha1 none [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: kex: server->client aes128-cbc hmac-sha1 none [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent [preauth] 
Nov 13 23:00:36 linux sshd[13376]: debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: SSH2_MSG_NEWKEYS sent [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: expecting SSH2_MSG_NEWKEYS [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: SSH2_MSG_NEWKEYS received [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: KEX done [preauth] 
Nov 13 23:00:37 linux sshd[13376]: Connection closed by 192.168.112.1 [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: do_cleanup [preauth] 
Nov 13 23:00:37 linux sshd[13376]: debug1: monitor_read_log: child log fd closed 
Nov 13 23:00:37 linux sshd[13376]: debug1: do_cleanup 

जाहिर है कि वे किस तरह प्रमाणीकरण करने के लिए पर सहमत नहीं हो सकता है .... उम्मीद है कि इस यह भर में आने वाले लोगों के लिए उपयोगी है। अगर/जब मुझे पता चलता है कि यह क्यों हो रहा है तो मैं इसे अपडेट कर दूंगा।

Net::SCP::Error Exception: SCP did not finish successfully (1) 

मैं पहली बार इस स्रोत फ़ाइल मौजूदा नहीं या गंतव्य dir मौजूदा नहीं के रूप में दूसरों का उल्लेख किया है की वजह से किया गया होगा पर लगा:

5

मैं एक अलग त्रुटि है कि कोष्ठक में बाहर निकलने के कोड शामिल था , लेकिन ऐसा इसलिए हुआ क्योंकि मैं स्ट्रिंग के बजाय स्रोत फ़ाइल के लिए पथनाम ऑब्जेक्ट पास कर रहा था।

my_file = Rails.root.join('config/my_file') # my_file.class => Pathname 
scp.upload!(my_file, "/var/tmp/dev.pub") 

<Net::SCP::Error: SCP did not finish successfully (1)> 
"gems/net-scp-1.0.4/lib/net/scp.rb:352:in `start_command'",                                                 "gems/net-ssh-2.6.7/lib/net/ssh/connection/channel.rb:590:in `call'", 
"gems/net-ssh-2.6.7/lib/net/ssh/connection/channel.rb:590:in `do_close'",                                              "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:580:in `channel_close'",                                            "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:459:in `send'", 
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:459:in `dispatch_incoming_packets'", 
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:216:in `preprocess'",                                             "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:200:in `process'", 
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:164:in `loop'",                                               "gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:164:in `loop_forever'", 
"gems/net-ssh-2.6.7/lib/net/ssh/connection/session.rb:164:in `loop'",                                               "gems/net-ssh-2.6.7/lib/net/ssh/connection/channel.rb:269:in `wait'", 
"gems/net-scp-1.0.4/lib/net/scp.rb:279:in `upload!'", 

फ़ाइल सही दूरस्थ स्थान में कॉपी किया जा रहा था, लेकिन नेट ssh में कुछ 0 के बजाय 1 बाहर निकलने किया गया था, मुझे लगता है, जहां कि कॉल स्टैक ट्रेस में है जाने के लिए परेशान नहीं है

# gems/net-scp-1.0.4/lib/net/scp:352 
channel.on_close { |ch| raise Net::SCP::Error, "SCP did not finish successfully (#{ch[:exit]})" if ch[:exit] != 0 } 

बस बदलते पथ नाम एक स्ट्रिंग बना सब कुछ काम

my_file = Rails.root.join('config/my_file').to_s 
scp.upload!(my_file, "/var/tmp/dev.pub") 
+1

शानदार। मेरे साथ भी ठीक वैसा ही हुआ था। यह वास्तव में जेम में तय किया जाना चाहिए। – slhck

4

बस पूर्णता 'खातिर, यह भी आप उचित अनुमतियाँ गंतव्य के लिए लिखने के लिए नहीं है, तो हो सकता है आपत्ति है।

+0

हाँ, यह मेरे लिए हुआ। एक सुपर बेकार त्रुटि संदेश के बारे में बात करो। – racl101

संबंधित मुद्दे