วิธีการคัดลอกไฟล์จากระยะไกลผ่าน SSH โดยไม่ต้องป้อนรหัสผ่านของคุณ
SSH เป็นผู้ช่วยชีวิตเมื่อคุณต้องการจัดการคอมพิวเตอร์จากระยะไกล แต่คุณรู้หรือไม่ว่าคุณสามารถอัพโหลดและดาวน์โหลดไฟล์ได้เช่นกัน ใช้คีย์ SSH คุณสามารถข้ามได้โดยไม่ต้องป้อนรหัสผ่านและใช้สำหรับสคริปต์!
กระบวนการนี้ทำงานบน Linux และ Mac OS โดยมีเงื่อนไขว่าพวกเขาได้รับการกำหนดค่าอย่างเหมาะสมสำหรับการเข้าถึง SSH หากคุณใช้ Windows คุณสามารถใช้ Cygwin เพื่อรับฟังก์ชั่นคล้ายกับ Linux และด้วยการปรับแต่งเล็กน้อย SSH ก็จะทำงานได้เช่นกัน.
คัดลอกไฟล์ผ่าน SSH
Secure copy เป็นคำสั่งที่มีประโยชน์มากและใช้งานง่ายมาก รูปแบบพื้นฐานของคำสั่งมีดังนี้:
scp [ตัวเลือก] original_file destination_file
นักเตะที่ใหญ่ที่สุดคือวิธีการฟอร์แมตชิ้นส่วนระยะไกล เมื่อคุณกำหนดแอดเดรสไฟล์รีโมตคุณต้องทำดังต่อไปนี้:
ผู้ใช้ @ เซิร์ฟเวอร์: เส้นทาง / เพื่อ / ไฟล์
เซิร์ฟเวอร์สามารถเป็น URL หรือที่อยู่ IP ตามด้วยโคลอนจากนั้นพา ธ ไปยังไฟล์หรือโฟลเดอร์ที่เป็นปัญหา ลองดูตัวอย่าง.
scp -P 40050 Desktop / url.txt [email protected]: ~ / Desktop / url.txt
คำสั่งนี้มีการตั้งค่าสถานะ [-P] (โปรดทราบว่ามันเป็นตัวพิมพ์ใหญ่ P) สิ่งนี้ทำให้ฉันสามารถระบุหมายเลขพอร์ตแทนค่าเริ่มต้น 22 สิ่งนี้เป็นสิ่งจำเป็นสำหรับฉันเนื่องจากวิธีการกำหนดค่าระบบของฉัน.
จากนั้นไฟล์ต้นฉบับของฉันคือ“ url.txt” ซึ่งอยู่ในไดเรกทอรีที่ชื่อว่า“ เดสก์ท็อป” ไฟล์ปลายทางอยู่ใน“ ~ / Desktop / url.txt” ซึ่งเหมือนกับ“ /user/yatri/Desktop/url.txt” คำสั่งนี้ถูกเรียกใช้โดยผู้ใช้“ yatri” บนคอมพิวเตอร์ระยะไกล“ 192.168.1.50”.
เกิดอะไรขึ้นถ้าคุณต้องทำตรงกันข้าม คุณสามารถคัดลอกไฟล์จากเซิร์ฟเวอร์ระยะไกลในทำนองเดียวกัน.
ที่นี่ฉันได้คัดลอกไฟล์จากโฟลเดอร์“ ~ / Desktop /” ของคอมพิวเตอร์ระยะไกลไปยังโฟลเดอร์“ Desktop” ของคอมพิวเตอร์.
ในการคัดลอกไดเรกทอรีทั้งหมดคุณจะต้องใช้แฟล็ก [-r] (โปรดทราบว่าเป็นตัวพิมพ์เล็ก r).
คุณยังสามารถรวมธง แทน
scp -P -r ...
คุณสามารถทำได้
scp -Pr ...
ส่วนที่ยากที่สุดที่นี่คือความสมบูรณ์ของแท็บอาจไม่ได้ผลเสมอไปดังนั้นการมีเทอร์มินัลอื่นที่มีเซสชัน SSH ทำงานอยู่จึงเป็นประโยชน์.
SSH และ SCP ที่ไม่มีรหัสผ่าน
สำเนาที่ปลอดภัยดีมาก คุณสามารถใส่มันลงในสคริปต์และทำการสำรองข้อมูลไปยังคอมพิวเตอร์ระยะไกล ปัญหาคือคุณอาจไม่ได้ใส่รหัสผ่านเสมอไป และขอบอกตามตรงว่ามันเป็นความเจ็บปวดอย่างยิ่งใหญ่ที่คุณต้องใส่รหัสผ่านของคุณในคอมพิวเตอร์ระยะไกลซึ่งคุณสามารถเข้าถึงได้ตลอดเวลา.
เราสามารถใช้รหัสผ่านโดยใช้ไฟล์คีย์ เราสามารถให้คอมพิวเตอร์สร้างไฟล์สำคัญสองไฟล์ - หนึ่งสาธารณะที่เป็นของเซิร์ฟเวอร์ระยะไกลและหนึ่งส่วนตัวที่อยู่ในคอมพิวเตอร์ของคุณและต้องการความปลอดภัย - และเหล่านี้จะถูกใช้แทนรหัสผ่าน สะดวกสวยใช่มั้ย?
บนคอมพิวเตอร์ของคุณป้อนคำสั่งต่อไปนี้:
ssh-keygen -t rsa
สิ่งนี้จะสร้างสองปุ่มและวางไว้ใน:
~ / .ssh /
ด้วยชื่อ“ id_rsa” สำหรับคีย์ส่วนตัวของคุณและ“ id_rsa.pub” สำหรับกุญแจสาธารณะของคุณ.
หลังจากป้อนคำสั่งคุณจะถูกขอให้บันทึกตำแหน่ง คุณสามารถกด Enter เพื่อใช้ค่าเริ่มต้นที่กล่าวถึงข้างต้น.
ถัดไปคุณจะถูกขอให้ป้อนข้อความรหัสผ่าน กด Enter เพื่อเว้นว่างนี้จากนั้นทำอีกครั้งเมื่อขอการยืนยัน ขั้นตอนต่อไปคือการคัดลอกไฟล์กุญแจสาธารณะไปยังคอมพิวเตอร์ระยะไกลของคุณ คุณสามารถใช้ scp เพื่อทำสิ่งนี้:
ปลายทางสำหรับกุญแจสาธารณะของคุณอยู่บนเซิร์ฟเวอร์ระยะไกลในไฟล์ต่อไปนี้:
~ / .ssh / authorized_keys2
พับลิกคีย์ที่ตามมาสามารถผนวกเข้ากับไฟล์นี้ได้เหมือนกับไฟล์ ~ / .ssh / known_hosts ซึ่งหมายความว่าหากคุณต้องการเพิ่มกุญแจสาธารณะอีกอันสำหรับบัญชีของคุณบนเซิร์ฟเวอร์นี้คุณจะคัดลอกเนื้อหาของไฟล์ id_rsa.pub ที่สองลงในบรรทัดใหม่ในไฟล์ authorized_keys2 ที่มีอยู่.
ข้อควรพิจารณาด้านความปลอดภัย
นี่ไม่ใช่ความปลอดภัยน้อยกว่ารหัสผ่าน?
ในความเป็นจริงไม่ได้จริงๆ รหัสส่วนตัวที่สร้างขึ้นจะถูกเก็บไว้ในคอมพิวเตอร์ที่คุณใช้และจะไม่ถูกถ่ายโอนแม้จะถูกตรวจสอบ คีย์ส่วนตัวนี้จะจับคู่กับคีย์สาธารณะนั้นเท่านั้นและการเชื่อมต่อจะต้องเริ่มจากคอมพิวเตอร์ที่มีคีย์ส่วนตัว RSA นั้นค่อนข้างปลอดภัยและใช้ความยาวบิต 2048 ตามค่าเริ่มต้น.
ในทางทฤษฎีแล้วมันค่อนข้างคล้ายกันกับการใช้รหัสผ่านของคุณ หากมีใครรู้รหัสผ่านของคุณความปลอดภัยของคุณจะออกไปนอกหน้าต่าง หากใครบางคนมีไฟล์กุญแจส่วนตัวของคุณการรักษาความปลอดภัยจะหายไปกับคอมพิวเตอร์ที่มีรหัส pubic ที่ตรงกัน แต่พวกเขาต้องการการเข้าถึงคอมพิวเตอร์ของคุณเพื่อรับมัน.
ปลอดภัยกว่านี้ไหม?
คุณสามารถรวมรหัสผ่านกับไฟล์คีย์ได้ ทำตามขั้นตอนข้างต้น แต่ป้อนข้อความรหัสผ่านที่คาดเดายาก ตอนนี้เมื่อคุณเชื่อมต่อผ่าน SSH หรือใช้ SCP คุณจะต้องใช้ไฟล์กุญแจส่วนตัวที่เหมาะสม เช่นเดียวกับ วลีรหัสผ่านที่เหมาะสม.
เมื่อคุณป้อนข้อความรหัสผ่านของคุณหนึ่งครั้งคุณจะไม่ถูกถามอีกจนกว่าจะปิดเซสชัน นั่นหมายความว่าครั้งแรกที่คุณ SSH / SCP คุณจะต้องป้อนรหัสผ่านของคุณ แต่การกระทำที่ตามมาทั้งหมดไม่จำเป็นต้องใช้ เมื่อคุณออกจากระบบคอมพิวเตอร์ (ไม่ใช่รีโมท) หรือปิดหน้าต่างเทอร์มินัลคุณจะต้องป้อนอีกครั้ง ด้วยวิธีนี้คุณไม่ได้เสียสละความปลอดภัยอย่างแท้จริง แต่คุณไม่ได้ล่วงเกินรหัสผ่านอยู่ตลอดเวลา.
ฉันสามารถนำคู่กุญแจสาธารณะ / ส่วนตัวมาใช้ซ้ำได้หรือไม่?
นี่เป็นความคิดที่แย่จริงๆ หากมีคนพบรหัสผ่านของคุณและคุณใช้รหัสผ่านเดียวกันสำหรับบัญชีทั้งหมดของคุณตอนนี้พวกเขาสามารถเข้าถึงบัญชีเหล่านั้นทั้งหมดได้แล้ว เช่นเดียวกันไฟล์กุญแจส่วนตัวของคุณก็เป็นความลับและสำคัญยิ่ง (สำหรับข้อมูลเพิ่มเติมดูที่วิธีการกู้คืนหลังจากรหัสผ่านอีเมลของคุณถูกบุกรุก)
เป็นการดีที่สุดที่จะสร้างคู่คีย์ใหม่สำหรับคอมพิวเตอร์ทุกเครื่องและบัญชีที่คุณต้องการเชื่อมโยง ด้วยวิธีนี้หากคีย์ส่วนตัวของคุณถูกดักจับอย่างใดอย่างหนึ่งคุณจะประนีประนอมเพียงหนึ่งบัญชีในคอมพิวเตอร์ระยะไกลเครื่องเดียว.
นอกจากนี้ยังเป็นสิ่งสำคัญที่จะต้องทราบว่าคีย์ส่วนตัวทั้งหมดของคุณจะถูกเก็บไว้ในที่เดียวกัน: ใน ~ / .ssh / บนคอมพิวเตอร์ของคุณคุณสามารถใช้ TrueCrypt เพื่อสร้างคอนเทนเนอร์ที่ปลอดภัยเข้ารหัสจากนั้นสร้าง symlink ใน ~ / .ssh ไดเรกทอรี / ขึ้นอยู่กับสิ่งที่ฉันทำฉันใช้วิธี super-paranoid super-safe นี้เพื่อทำให้ใจของฉันสบายใจ.
คุณใช้ SCP ในสคริปต์ใด ๆ บ้างไหม? คุณใช้ไฟล์กุญแจแทนรหัสผ่านหรือไม่? แบ่งปันความเชี่ยวชาญของคุณเองกับผู้อ่านคนอื่น ๆ ในความคิดเห็น!