คุณสามารถไพพ์เข้าสู่ ssh และรันคำสั่งรีโมต ในกรณีนี้คำสั่งระยะไกลcat > big.txt
จะทำการคัดลอก stdin ไปยังbig.txt
ไฟล์
echo "Lots of data" | ssh user@example.com 'cat > big.txt'
มันง่ายและตรงไปตรงมาตราบใดที่คุณสามารถใช้ ssh เพื่อเชื่อมต่อกับปลายระยะไกล
คุณยังสามารถใช้nc
(NetCat) เพื่อถ่ายโอนข้อมูล บนเครื่องรับ (เช่น host.example.com):
nc -l 1234 > big.txt
สิ่งนี้จะตั้งค่าnc
ให้ฟังพอร์ต 1234 และคัดลอกสิ่งที่ส่งไปยังพอร์ตนั้นไปยังbig.txt
ไฟล์ จากนั้นบนเครื่องส่ง:
echo "Lots of data" | nc host.example.com 1234
คำสั่งนี้จะบอกnc
ด้านการส่งเพื่อเชื่อมต่อกับพอร์ต 1234 บนเครื่องรับและคัดลอกข้อมูลจาก stdin ผ่านเครือข่าย
อย่างไรก็ตามnc
วิธีแก้ปัญหามีข้อเสียเล็กน้อย:
- ไม่มีการรับรองความถูกต้อง; ทุกคนสามารถเชื่อมต่อกับพอร์ต 1234 และส่งข้อมูลไปยังไฟล์
ssh
ข้อมูลที่ไม่ได้เข้ารหัสตามที่มันจะมี
- หากทั้งสองเครื่องอยู่หลังไฟร์วอลล์พอร์ตที่เลือกจะต้องเปิดเพื่อให้สามารถเชื่อมต่อและกำหนดเส้นทางได้อย่างถูกต้องโดยเฉพาะที่ปลายรับ
- ปลายทั้งสองจะต้องตั้งค่าอย่างอิสระและพร้อมกัน ด้วย
ssh
วิธีแก้ปัญหาคุณสามารถเริ่มต้นการถ่ายโอนจากหนึ่งในปลายทาง