จะดาวน์โหลดไฟล์จากเซิร์ฟเวอร์โดยใช้ SSH ได้อย่างไร [ปิด]


749

ฉันต้องการดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ไปยังเดสก์ท็อปของฉัน (UBUNTU 10.04) ฉันไม่มีเว็บที่เข้าถึงเซิร์ฟเวอร์เพียงแค่ ssh

หากช่วยได้ระบบปฏิบัติการของฉันคือ Mac OS X และ iTerm 2 เป็นเทอร์มินัล


ลองใช้ sftp นี้: winscp.net/eng/download.php
Nishchit Dhanani

51
ทำไมหัวข้อนี้ถึงปิด?
jsmedmar

4
เพราะไม่ใช่คำถามการเขียนโปรแกรม
Black

26
@EdwardBlack อาจถูกย้ายไปยัง unix.stackexchange แทน
gldraphael

3
สิ่งนี้ใช้ได้สำหรับฉันsudo scp -i ~/.ssh/id_rsa username@remotehost.io:Downloads/filename.sql ~/Desktop
kaxi1993

คำตอบ:


1166

ในเทอร์มินัลของคุณพิมพ์:

scp your_username@remotehost.edu:foobar.txt /local/dir

แทนที่ชื่อผู้ใช้โฮสต์ชื่อไฟล์ระยะไกลและไดเรกทอรีท้องถิ่นตามความเหมาะสม

หากคุณต้องการเข้าถึง EC2 (หรือบริการอื่น ๆ ที่ต้องการการตรวจสอบสิทธิ์ด้วยรหัสส่วนตัว) ให้ใช้-iตัวเลือก:

scp -i key_file.pem your_username@remotehost.edu:/remote/dir/foobar.txt /local/dir

จาก: http://www.hypexr.org/linux_scp_help.php


3
ฉันไม่คุ้นเคยกับ Amazon EC2 แต่ถ้าคุณมี SSH เข้าถึงเซิร์ฟเวอร์ของคุณมันควรจะทำงานได้
Josh1billion

3
ฉันคิดว่ามีการขาดหายไป/ระหว่างyour_username@remotehost.edu:และfoobar.txtในตัวอย่างข้างต้น
Eugene S

13
@NiLL scp -i xxx.pem your_username@remotehost.edu: foobar.txt / some / local / directory
Helin Wang

3
@Alex เพิ่มตัวเลือก -r
SgtPooki

10
ข้อมูลที่เป็นประโยชน์ - ฉันไม่ทราบว่าคุณเรียกใช้งานจากเครื่องท้องถิ่นของคุณและไม่ได้มาจากสถานที่ที่คุณต้องการดาวน์โหลด ดังนั้นตามที่ Horak ถาม, ~ / จะทิ้งมันไว้ในไดเรกทอรีผู้ใช้ของคุณเช่น / Users / admin / - ฉันเข้าสู่ระบบจากระยะไกลและสงสัยว่าทำไมมันไม่ทำงาน
Kai Qing

322

คุณสามารถทำได้ด้วยscpคำสั่ง scpใช้โปรโตคอล SSH cpเพื่อคัดลอกไฟล์ผ่านระบบโดยการขยายไวยากรณ์ของ

คัดลอกบางสิ่งจากระบบอื่นไปยังระบบนี้:

scp username@hostname:/path/to/remote/file /path/to/local/file

คัดลอกบางสิ่งจากระบบนี้ไปยังระบบอื่น:

scp /path/to/local/file username@hostname:/path/to/remote/file          

คัดลอกบางสิ่งจากบางระบบไปยังระบบอื่น:

scp username1@hostname1:/path/to/file username2@hostname2:/path/to/other/file   

5
ฉันชอบว่าถ้าใครต้องการที่จะบรรลุคำถาม OPs และไม่ได้อ่านคำตอบของคุณอย่างเต็มที่พวกเขาอาจตั้งใจและไม่คิดว่าเพียงแค่เรียกใช้คำสั่งแรกของคุณและอาจเขียนทับไฟล์ระยะไกลที่พวกเขาพยายามดาวน์โหลดด้วยไฟล์ภายในเครื่อง อุ่ย
Mr Purple

ทำไมถึงมีการเข้าถึง? ใครบางคนสามารถทำ "rm -rf /" โดยไม่คิด แต่มันไม่ลดยูทิลิตี้ของคำสั่ง rm?
raj_gt1

1
คุณคิดว่าการเริ่มคำตอบกับ "ฉันจะอัพเกรด linux อย่างไร" ด้วยคำสั่ง "rm -rf /" จะเป็นความคิดที่ดีเช่นกัน?
Mr Purple

2
@MrPurple - ขอบคุณสำหรับคำเตือนฉันเกือบจะทำตรงนั้น ฉันได้แก้ไขคำถามเพื่อแสดงคำสั่งที่เกี่ยวข้องมากที่สุดก่อน
Sphinxxx

96

scp เป็นหนทางไปอย่างแน่นอน แต่เพื่อความสมบูรณ์คุณสามารถทำได้:

$ ssh host 'cat /path/on/remote' > /path/on/local

หรือ

$ cat /path/on/local | ssh host 'cat > /path/on/remote'

หมายเหตุนี่คือ UUOC แต่< /path/on/local ssh host 'cat > /path'อาจทำให้เกิดความสับสนที่ไม่จำเป็น

และถึงพร็อกซีระหว่างโฮสต์สองแห่ง:

$ ssh host1 'cat /path/on/host1' | ssh host2 'cat > /path/on/host2'


5
มีใครทำการทดสอบความเร็วในวิธีการต่าง ๆ หรือไม่ ฉันอยากรู้ว่าใครเร็วที่สุด ใช้กรณี: ฉันมีไฟล์ขนาดใหญ่ให้ดาวน์โหลด
starbeamrainbowlabs

ใช้งานได้จริงกับ. ssh / config ในขณะที่ scp ดูเหมือนจะไม่เป็นไปตามการกำหนดค่า ssh

13

หากเซิร์ฟเวอร์ SSH สนับสนุนระบบย่อย SFTP (นี่เป็นส่วนหนึ่งของ SSH และไม่เกี่ยวข้องกับ FTP) ให้ใช้ sftp ถ้าไม่ลอง scp

CyberDuckสนับสนุนพวกเขาทั้งหมด


2
ดาวน์โหลดจากเว็บไซต์cyberduck.ch/Cyberduck-4.2.1.zip
J-16 SDiZ

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

12
นี่ไม่ได้ตอบคำถาม
edwinj

1
มันทำได้ง่ายพอที่จะดาวน์โหลดโดยใช้ Cyberduck's SFTP
Miguel Stevens

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