SCP "ขาดการเชื่อมต่อ" แต่ ssh ทำงานได้ดี


10

เซิร์ฟเวอร์ที่ฉันสามารถปรับให้ถูกต้องได้เริ่มปฏิเสธที่จะ scp

$ scp ~/tmp/foo user@some.example.com:~/tmp/
lost connection

เมื่อscp -v -vฉันเห็นการเชื่อมต่อสำเร็จและการถ่ายโอนดูเหมือนว่าจะสำเร็จ แต่ไม่มีไฟล์ปรากฏขึ้นที่อีกด้านหนึ่ง

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/schwern/.ssh/config
debug1: /Users/schwern/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to testcurrent01.dev.liquidweb.com [10.30.152.254] port 22.
debug1: Connection established.
debug1: identity file /Users/schwern/.ssh/id_rsa type -1
debug1: identity file /Users/schwern/.ssh/id_rsa-cert type -1
debug1: identity file /Users/schwern/.ssh/id_dsa type -1
debug1: identity file /Users/schwern/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
...lots of authentication details...
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (publickey).
Authenticated to user@some.example.com ([1.2.3.4]:22).
debug2: fd 5 setting O_NONBLOCK
debug2: fd 6 setting O_NONBLOCK
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: fd 3 setting TCP_NODELAY
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending command: scp -v -t -- ~/tmp/
debug2: channel 0: request exec confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 4576, received 2520 bytes, in 0.0 seconds
Bytes per second: sent 167737.0, received 92372.6
debug1: Exit status 0
debug1: compress outgoing: raw data 135, compressed 121, factor 0.90
debug1: compress incoming: raw data 66, compressed 52, factor 0.79
lost connection

เป็นเครื่อง CentOS 5.9

สิ่งที่ฉันได้ตรวจสอบ ...

  • ฉันได้รับอนุญาตให้เขียนไปยังไดเรกทอรีนั้น
  • ผู้ใช้มีเชลล์ที่สมเหตุสมผล (/ bin / bash)
  • ฉันพยายามขยับตัว~/.ssh/configออกนอกเส้นทาง
  • การ scp'ing ไปยังเครื่องนั้นจากคนอื่น ๆ ด้วยระบบปฏิบัติการที่แตกต่างกันอย่างสิ้นเชิงก็ล้มเหลว
  • ดิสก์ไม่เต็ม
  • รีสตาร์ท sshd

/ var / log / secure ประกอบด้วย ...

Apr  4 14:23:22 some sshd[12576]: Postponed publickey for user from 1.2.3.4 port 33581 ssh2
Apr  4 14:23:22 some sshd[12575]: Accepted publickey for user from 1.2.3.4 port 33581 ssh2
Apr  4 14:23:22 some sshd[12575]: pam_unix(sshd:session): session opened for user user by (uid=0)
Apr  4 14:23:22 some sshd[12575]: pam_unix(sshd:session): session closed for user user

ฉันจะตรวจสอบอะไรต่อไป


2
ไม่ได้ข้อผิดพลาดที่ผมจะคาดหวัง แต่เพียงในกรณีที่ทำคุณ~/.bashrcหรือ~/.profileหรือ/etc/bash.bashrcหรือ/etc/profileพิมพ์อะไรที่จะ STDOUT? bugzilla.redhat.com/show_bug.cgi?id=20527 และฉันคิดว่าคุณใช้ลีนุกซ์?
terdon

Nope Last login: Thu Apr 4 10:15:28 2013 from 1.2.3.4ฉันเพิ่งได้รับตามปกติ
Schwern

มีอะไรในระบบบันทึกบนโฮสต์เป้าหมาย
Flup

@Flup ดูเหมือนปกติ ฉันโพสต์สิ่งที่ปรากฏในบันทึกเมื่อฉันเชื่อมต่อ
Schwern

คุณสามารถเริ่มstrace -f -o /tmp/sshd.strace -p [pid of sshd]บนเซิร์ฟเวอร์ลองอีกครั้งแล้วโพสต์อะไรก็ได้จากไฟล์นั้นที่มีความเกี่ยวข้อง
Flup

คำตอบ:


1

มีปัญหาเดียวกัน

หากคุณไม่น้อยติดตั้ง Centos ก็เพียงติดตั้งopensshและopenssh-serverแพคเกจ openssh-clientsแต่ไม่ sudo yum install openssh-clientsจะแก้ไขปัญหาของคุณ


ฉันไม่สามารถเข้าถึงเครื่องนั้นได้อีก แต่ดูเหมือนจะเป็นคำตอบที่น่าจะเป็น
Schwern

4

scpทำงานโดยทำการsshเชื่อมต่อกับโฮสต์ระยะไกลจากนั้นเรียกใช้สำเนาอื่นของscpโปรแกรมบนโฮสต์นั้น อินสแตนซ์ของ scp สองตัวสื่อสารผ่านการเชื่อมต่อ ssh เพื่อทำการถ่ายโอนไฟล์

"การเชื่อมต่อที่หายไป" ถูกพิมพ์โดยscpโปรแกรมท้องถิ่นเมื่อการเชื่อมต่อ ssh ลดลงก่อนเวลาอันควร สาเหตุปกติที่เป็นscpโปรแกรมบนรีโมตโฮสต์อาจล้มเหลวในการเริ่มต้นมิฉะนั้นจะออกจากโปรแกรมก่อนกำหนด สิ่งนี้อาจเกิดขึ้นเนื่องจากโปรแกรม scp ไม่มีอยู่บนรีโมตโฮสต์หรือไม่ได้อยู่ในคำสั่ง PATH ของคุณหรือไม่ได้ทำเครื่องหมายว่าสามารถใช้งานได้หรือเกิดข้อผิดพลาดหลังจากเริ่มทำงาน


0

เราเพิ่งมีปัญหานี้ในหนึ่งในระบบของเรา

เราสามารถ ssh ไปยังเซิร์ฟเวอร์โฮสต์ได้อย่างเหมาะสม แต่พบว่าเราไม่สามารถ ssh จากเซิร์ฟเวอร์กลับสู่เครื่อง นี่เป็นสถานที่ที่ดีในการตรวจสอบหากคุณไม่สามารถทำสิ่งนี้ได้คุณจะไม่สามารถใช้ SCP ได้

ในกรณีของเราอย่างใด (อาจติดตั้งเรียบร้อย) ได้แทนที่ไฟล์ไบนารี ssh ของเราด้วยไฟล์ว่าง 0 ไบต์ เมื่อใดก็ตามที่ "ssh" ถูกประหารชีวิตไม่มีอะไรเกิดขึ้น

โดยการติดตั้ง openssh-clients ใหม่เราได้แก้ไขไบนารีและ scp ที่เริ่มทำงาน

yum reinstall openssh-clients

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.