วิธีการถ่ายโอนไฟล์ผ่าน ssh ในขณะที่ ssh'd ไปยังเซิร์ฟเวอร์แล้ว


13

ฉันถ่ายโอนไฟล์โดยใช้คำสั่งนี้

scp <localfile> user@host:<destination>

คำสั่งดังกล่าวใช้งานได้เฉพาะเมื่อฉันไม่ได้เข้าสู่เซิร์ฟเวอร์

ฉันจะถ่ายโอนไฟล์โลคัลไปยังเครื่องโฮสต์ได้อย่างไรเมื่อฉัน ssh'd แล้ว?

ฉันใช้มัน ssh user@hostname


2
ระบบปฏิบัติการอะไร เปิดเทอร์มินัลอื่นและใช้คำสั่ง scp
Impulss

1
มันเป็น centOS นั่นคือสิ่งที่ฉันได้ทำไปแล้ว ฉันแค่หวังสิ่งที่สะดวกกว่า
อยู่ทั่วไปทุกหนทุกแห่ง

คำตอบ:


5

เป็นคำถามที่ดี scpอีกครั้ง แต่ทางตรงข้าม ฉันทำมันและนี่มันคือ:

chris@local ~$ ls hos*
hosts
chris@local ~$ ssh remote
Last login: Fri Mar  8 15:52:25 2013 from local
chris@remote ~$ scp chris@local:hos* .
chris@local's password: 
hosts                                              100% 1850     1.8KB/s   00:00    
chris@remote ~$ ls hos*
hosts
chris@remote ~$ 

แก้ไขเพื่อเพิ่ม:ตามที่ระบุไว้ในความคิดเห็นสิ่งนี้ต้องการให้คอมพิวเตอร์ระยะไกลสามารถเข้าถึงเครื่องคอมพิวเตอร์ได้ และต้องติดตั้งและเรียกใช้ sshd หรือ (openssh-server) บนเครื่องโลคัล


3
สิ่งนี้สมมติว่าเครื่องโลคัลสามารถเข้าถึงได้จากรีโมตและสิ่งนี้ไม่เป็นจริงเสมอไป
เรน

อย่างไรก็ตามถ้ามันเป็นจริงมันจะทำงานได้ดี
daviewales

3

มันจะช่วยให้รู้ว่าสิ่งที่คุณกำลังทำงานบนเครื่องโฮสต์ หากคุณใช้ Linux

scp user@host:/path/myfile .

ควรทำงาน.


user @ host เป็นเครื่องระยะไกลจากสิ่งที่ฉันเข้าใจในคำถามดังนั้นคำสั่งนี้จะไม่คัดลอกไฟล์จากเครื่องท้องถิ่นไปยังเครื่องหนึ่ง แต่จากระยะไกลไปยังเครื่องท้องถิ่นหากไม่ได้ SSHed ในโฮสต์และจะคัดลอกจากระยะไกลไปยังตัวเองถ้า sshed
เรน

ฉันคิดว่ามีความคลุมเครือในคำถาม สำหรับฉันuser@hostดูเหมือนจะอ้างถึงคอมพิวเตอร์เครื่องใดที่คุณไม่ได้ควบคุมอยู่ในปัจจุบัน ดังนั้นเมื่อ OP ไม่ได้เข้าสู่คอมพิวเตอร์ระยะไกลแสดงว่าuser@hostเป็นคอมพิวเตอร์ระยะไกล เมื่อ OP ถูกล็อกอินเข้าสู่คอมพิวเตอร์ระยะไกลแสดงว่าuser@hostเป็นคอมพิวเตอร์ในระบบ หากสมมติฐานของฉันถูกต้องแล้วคำตอบนี้เหมาะสม
daviewales

นั่นคือวิธีที่ฉันตีความคำถามเช่นกัน daviewales นอกจากนี้คุณถูกต้อง user @ host จะแสดงสิ่งที่เวิร์กสเตชันของคุณไม่ทำงานในความคิดของฉัน ฉันถกเถียงกันว่าจะทำให้ชัดเจนในการตอบสนองของฉันหรือไม่
Josh

อย่างไรก็ตามแม้ว่า user @ host จะเป็นตัวแทนของเครื่องเมื่อผู้ใช้เข้าสู่ระบบในเครื่องระยะไกล (ไม่น่าจะเป็นเพราะ OP บอกว่าเขาต้องการถ่ายโอนไฟล์ในเครื่องไปยังเครื่องโฮสต์) สิ่งนี้จะทำงานเฉพาะเมื่อเข้าถึงเครื่องจากระยะไกล เปิด (โดยปกติหากอยู่ใน LAN เดียวกัน) และไม่ได้อยู่ในสถานการณ์ที่เครื่องระยะไกลอยู่บนอินเทอร์เน็ตและเครื่องท้องถิ่นไม่มี IP คงที่
เรน

0

หากคุณมีทางกลับไปที่เครื่องท้องถิ่นของคุณ (เครื่องท้องถิ่นของคุณสามารถเข้าถึงได้จากระยะไกล - โดยปกติเมื่อทั้งสองเครื่องอยู่ใน LAN เดียวกัน) การใช้ scp จากเครื่องระยะไกลควรทำงาน ( scp local:/path-to-file .)

หากเครื่องท้องถิ่นของคุณไม่สามารถเข้าถึงได้จากระยะไกล (มักจะเป็นจริงถ้าระยะไกลของคุณเป็น VPS บนอินเทอร์เน็ตและเครื่องท้องถิ่นของคุณมี IP แบบไดนามิก) วิธีที่ดีที่สุดของคุณคือการเปิด terminal ใหม่บนเครื่องท้องถิ่นและคัดลอกไฟล์

อีกวิธีหนึ่งที่ซับซ้อนกว่าและไม่จำเป็นต้องคัดลอกไฟล์เพียงอย่างเดียวคือการทำ VPN ระหว่างเครื่อง (หรือเครือข่าย) ดังนั้นทั้งสองเครื่องจะสามารถเข้าถึงได้จากอีกเครื่องหนึ่งและคุณสามารถใช้ scp จากเครื่องหนึ่งหรืออีกเครื่องหนึ่ง


-1

ในขณะที่เข้าสู่ระบบจากระยะไกล (ง่ายกว่าเพียงแค่ cd ลงในตำแหน่งไฟล์) sudo scp file_location / file_name user @ host: file_location

ในขณะที่ออกจากระบบระยะไกล sudo scp authoried_user @ hostname: file_location / file_name new_location_on_local_machine

FOOTNOTE: จำไว้ว่าในขณะที่ออกจากระบบระยะไกลหากเป็นอาคารใหม่รหัสผ่านแรกจะเป็นรหัสผ่าน sudo รหัสผ่านที่สองจะเป็นรหัสผ่านผู้ใช้ที่ได้รับอนุญาต หากคุณเคย sudo-ed ก่อนหน้านี้ในเทอร์มินัลนั้นแล้วมันเป็นเพียงรหัสผ่านผู้ใช้ที่ได้รับอนุญาตที่คุณต้องการ ดูสิ่งเหล่านี้มันทำให้ยุ่งยาก

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