วิธีการ SCP จากเซิร์ฟเวอร์ linux ไปยังไคลเอนต์ Windows


23

ฉัน SSHing เป็นเครื่อง Linux ที่ใช้ PuTTY และพยายามคัดลอกไฟล์ลงที่ใดที่หนึ่ง (ทุกที่) ไปยังเครื่องของฉัน ฉันคิดว่า SCP เป็นตัวเลือกที่ดีที่สุดสำหรับงาน แต่ไม่สนใจจริงๆตราบใดที่วิธีการแก้ปัญหาใช้งานได้!

ฉันcdไปยังไดเรกทอรีที่มีไฟล์ที่ฉันต้องการ ( app.war) และพิมพ์ต่อไปนี้:

scp app.war ./

ฉันได้ลองทั้งสองอย่างแล้วไม่มีประโยชน์:

scp app.war ./C:/Users/myUser/
scp app.war ./Users/myUser/

ฉันคิดว่าบางที SCP เป็นเครื่องมือไคลเอนต์ / เซิร์ฟเวอร์และต้องการไคลเอนต์ในเครื่อง Windows ของฉันซึ่งไม่ได้อยู่ที่นั่น

ฉันแค่ใช้ไวยากรณ์ผิดหรือเปล่า? หรือฉันจะออกนอกฐาน? ถ้าเป็นเช่นนั้นฉันมีทางเลือกอะไรบ้าง? ขอบคุณล่วงหน้า!


คำตอบที่แท้จริงสำหรับคำถามนี้อยู่ที่นี่: stackoverflow.com/a/23412501/1579667 ไวยากรณ์คือscp some_file user@host:/c/temp
Benj

ดูที่Bitvise SSH ไคลเอ็นต์และเซิร์ฟเวอร์ มันเป็นหนึ่งในซอฟต์แวร์ SSH ที่เก่าแก่ที่สุดสำหรับ Windows ลูกค้าดาวน์โหลดได้ฟรีและใช้งานได้ฟรี
jww

คำตอบ:


25

เพื่อให้คุณคัดลอกไฟล์กลับไปที่ Windows ของคุณคุณต้องใช้ SSH daemon / service เพื่อให้ทำงานบน Windows ของคุณได้ง่ายกว่ามากที่จะใช้เครื่องมือนี้แทนมันมีความสามารถในการนำเข้าเซสชันจาก Putty ซึ่งเป็นไคลเอนต์แบบธรรมดามาก ๆ รักมัน!

WinSCP :: ไคลเอนต์ SFTP และ FTP ฟรีสำหรับ Windows


เป็นเครื่องมือที่ยอดเยี่ยม :) รัก \ m /
Chaitanya

มันไม่ได้ตอบคำถามเดิมซึ่งอาศัยอยู่ในบรรทัดคำสั่ง ดูความคิดเห็นของฉันด้านล่างคำถามเดิม
Benj

@Benj OP ถามหาวิธีแก้ปัญหาWinSCPเป็นทางออกที่ดีสำหรับงานนั้น
alexus

12

คุณถูก. SSHD เป็นบริการเซิร์ฟเวอร์ SSH ที่ทำงานบนโฮสต์ ยอมรับการเชื่อมต่อจากไคลเอนต์ SSH (เช่น PuTTy), ไคลเอนต์ SCP และไคลเอนต์ SFTP

คุณสามารถดาวน์โหลดได้pscpจากเว็บไซต์เดียวกับที่โฮสต์PuTTY

จากเครื่อง windows คุณจะรันคำสั่งที่คล้ายกับ

pscp.exe someuser@somehost.com:/path/to/app.war c:\tmp


2

หากต้องการไฟล์ SCP ไปยังเครื่อง Windows คุณต้องมีเซิร์ฟเวอร์ SSH / SCP บน Windows

ไม่มีการสนับสนุน SSH / SCP ใน Windows เป็นค่าเริ่มต้น คุณสามารถติดตั้ง Microsoft buildsของOpenSSH สำหรับ Windows (รีลีสและดาวน์โหลด ) มันเป็นคุณสมบัติเสริมใน Windows 10 เวอร์ชัน 1803 และใหม่กว่า นอกจากนี้ยังสามารถติดตั้งได้ด้วยตนเองใน Windows รุ่นเก่า

ฉันได้เตรียมคำแนะนำสำหรับการตั้งค่าเซิร์ฟเวอร์ SSH / SFTP บน Windows ใช้นี้สร้างไมโครซอฟท์ OpenSSH

ดูเพิ่มเติมWindows SFTP รองรับ IIS หรือไม่


แม้ว่าในขณะที่คุณ SSH ลงในเซิร์ฟเวอร์ Linux จากเครื่อง Windows คุณสามารถดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ Linux ไปยังเซิร์ฟเวอร์ Windows แทนที่จะพยายามอัปโหลดไฟล์จากเซิร์ฟเวอร์ Linux ไปยังเซิร์ฟเวอร์ Windows

ในคุณมีการเข้าถึง SSH จาก Windows ถึง Linux คุณมีการเข้าถึง SCP ด้วย (หรือดีกว่าการเข้าถึง SFTP)

ใช้ไคลเอนต์ SCP / SFTP ที่มีอยู่

คุณสามารถใช้ลูกค้า WinSCP SFTP / SCPซึ่งมีทั้งGUIและบรรทัดคำสั่งอินเตอร์เฟซ

อีกทางเลือกหนึ่งคือชุดเครื่องมือ PuTTY ซึ่งรวมถึงpscpเครื่องมือบรรทัดคำสั่งที่มีไวยากรณ์คล้ายกับscpคำสั่งOpenSSH นอกจากนี้ Windows 10 เวอร์ชันล่าสุดยังมาพร้อมกับ OpenSSH scpในตัวและสามารถติดตั้งในเวอร์ชั่นที่เก่ากว่าได้อีกด้วย

(ฉันเป็นผู้เขียน WinSCP)


มีรุ่นของ pscp สำหรับ OSX / Linux หรือไม่?
codingknob

@ การเข้ารหัส knob แน่นอนมีแพคเกจ "สีโป๊ว" สำหรับการกระจายจำนวนมาก แม้ว่าจะpscpเป็นหน้าที่เหมือน OpenSSH scpซึ่งพร้อมใช้งานในการกระจายทั้งหมด / มากที่สุดแล้ว
Martin Prikryl

1

Windows 10 มี OpenSSH ในตัวแล้วในตอนนี้ https://docs.microsoft.com/en-us/windows-server/administrator/openssh/openssh_install_firstuse

รับพรอมต์คำสั่งของผู้ดูแลระบบ

Open PowerShell as an Administrator.

ตรวจสอบเวอร์ชั่นที่มี

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

ติดตั้งไคลเอนต์

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

ติดตั้งเซิร์ฟเวอร์

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

เริ่มเซิร์ฟเวอร์และเปิดใช้งานเมื่อบูต

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

ค้นหาที่อยู่ IP Windows ของคุณ

ipconfig

บนเครื่องรีโมต (Linux) ของคุณค้นหาที่อยู่ IP ของคุณ

ifconfig

สร้างคีย์ SSH สาธารณะ

ssh-keygen.exe

คัดลอกพับลิกคีย์จากโลคัล (Windows) ไปยังเครื่องรีโมต (Linux) เพื่อให้คุณไม่ต้องพิมพ์รหัสผ่านตลอดเวลา

โปรดทราบว่า ssh-copy-id ไม่สามารถใช้งานได้บน Windows ในขณะนี้

cat C:\Users\YOU/.ssh/id_rsa.pub | ssh USER@REMOTE_IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

ทำเช่นเดียวกันกับเครื่อง Linux ของคุณ (หมายเหตุ ssh-copy-id ไม่ทำงาน)

ssh-keygen # if needed
cat ~/.ssh/id_rsa.pub | ssh USER@WINDOWS_IP 'mkdir -p ~/.ssh && type con >> C:/Users/YOU/.ssh/authorized_keys'
  • วิธีการข้างต้นไม่ได้ผลสำหรับฉันดังนั้นฉันจึงลงเอยด้วยตนเอง SCPing กุญแจสาธารณะแล้ววางลงในไฟล์ C: /Users/YOU/.ssh/authorized_keys

  • ยังไม่ได้ผลดังนั้นฉันต้องแก้ไขไฟล์ sshd_config

    • เปิด Notepad ในฐานะผู้ดูแลระบบ

    • เปิด% programdata% \ ssh \ sshd_config

    • เพิ่มบรรทัดต่อไปนี้:

        Match User YOU
             AuthorizedKeysFile C:/Users/YOU/.ssh/authorized_keys
  • Reboot

สร้างรหัสผ่านบน Windows หากคุณยังไม่มี

System Settings...Sign-in options

- หมายเหตุคุณยังสามารถปิดการใช้งานหน้าจอเข้าสู่ระบบ Windows ได้โดยก) การตั้งค่าตัวเลือก 'ต้องลงชื่อเข้าใช้' เพื่อไม่และ b) การใช้คำสั่ง 'netplwiz' และยกเลิกการเลือกช่องทำเครื่องหมาย 'ผู้ใช้ต้องป้อนรหัสผ่าน ... '

ตอนนี้คุณควรจะสามารถ SSH หรือ SCP จากเครื่องลีนุกซ์ของคุณ

scp FILE WINDOWS_IP:C:/Users/YOU/Desktop

1

คุณสามารถทำได้โดยใช้ระบบย่อย Linux Ubuntu สำหรับ Windows (คุณต้องเปิดใช้งานคุณลักษณะนี้เป็น Windows) จากนั้นคุณสามารถใช้ไคลเอนต์ terminal Linux ที่ทำงานบน Windows ได้จาก Microsoft Store (เช่น Ubuntu 16.04 LTS) จากนั้นหากคุณตั้งค่าความปลอดภัย ssh เป็นรีโมตลงในเครื่อง Linux คุณสามารถทำได้scpจากเทอร์มินัล Windows Ubuntu ในพื้นที่ของคุณ (เมื่อลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ที่คุณตั้งค่าไว้สำหรับอินสแตนซ์ Linux):

scp -i ~/.ssh/my_rsa username@11.11.11.11:~/myfile ~/ ... ป้อนวลีรหัสผ่าน RSA

ไฟล์ระยะไกลจะถูกคัดลอกไปยังระบบไฟล์ Ubuntu ของคุณที่ Windows ใช้เช่น

C:\Users\my.username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\my_linux_username


1
ใน Windows 10 รุ่นล่าสุด (Win32-OpenSSH) scp(.exe)มีอยู่แล้วภายใน คุณไม่จำเป็นต้องติดตั้งอะไรเลย
Martin Prikryl

-1

ขั้นตอนที่ 1: ดาวน์โหลด pscp
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
(ตามเครื่องของคุณดาวน์โหลดรุ่นที่เกี่ยวข้อง)

ขั้นตอนที่ 2: ทำความคุ้นเคยกับคำสั่ง pscp
โดยเปิดพร้อมท์คำสั่งในเครื่อง windows ของคุณไปที่ไดเรกทอรีที่คุณดาวน์โหลด pscp.exe แล้วพิมพ์ "pscp"

ขั้นตอนที่ 3: ถ่ายโอนไฟล์จากเครื่อง Linux ของคุณไปยังเครื่อง Windows
เปิดพร้อมท์คำสั่งของคุณและเรียกใช้คำสั่งด้านล่างให้รายละเอียดของคุณ:

pscp usernameofyourlinuxmachine@10.40.000.000:/path/of/your/File/nameofyourfile.txt ./

และคำสั่งนี้จะถ่ายโอนไฟล์จากเครื่อง Linux ของคุณไปยังไดเรกทอรีปัจจุบันของเครื่อง windows ของคุณ

ขั้นตอนที่ 4: ถ่ายโอนไฟล์จากเครื่อง Windows ของคุณไปยังเครื่อง Linux
เปิดพร้อมรับคำสั่งของคุณและเรียกใช้คำสั่งด้านล่างให้รายละเอียดของคุณ:

pscp nameofyourfile.txt usernameofyourlinuxmachine@10.40.000.000:/path/where/youwantyourfile

ฉันหวังว่านี่ชัดเจนและเหมาะกับคุณทุกคน!


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