คุณจะทำหนึ่งซับด้วย sftp เพื่อเข้าสู่ระบบด้วยรหัสผ่านในบรรทัดเดียวกันได้อย่างไร


17

มีตัวเลือกในการใส่รหัสผ่านในบรรทัดด้วย sftp หรือไม่

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ 

แบบนี้

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ -p PASSWORD? 

คำตอบ:


13

โดยทั่วไปการใส่รหัสผ่านในบรรทัดคำสั่งนั้นถือว่าเสี่ยงต่อความปลอดภัยเพราะมันจะแสดงให้ทุกคนที่สามารถเรียกใช้ ps / top และอาจถูกบันทึกไว้ในประวัติเชลล์ของคุณ

จะเป็นการดีกว่าถ้าคุณตั้งค่าการพิสูจน์ตัวตนด้วยคีย์

นอกจากนี้ฉันไม่เชื่อว่ามันจะเป็นไปได้ด้วย sftp มันถูกใช้เพื่อการถ่ายโอนที่ปลอดภัย หากคุณจริงๆต้องทำอะไรเช่นนี้และคุณไม่มีทางเลือกอื่นแล้วคุณอาจจะต้องมีการมองหาที่ทำงานอัตโนมัติด้วยคาดหวังว่า


จุดที่น่าสนใจ!
Daniel

จะเป็นการดีกว่าถ้าคุณตั้งค่าการพิสูจน์ตัวตนด้วยคีย์ นั่นเป็นเหตุผล
นักวิ่งสุทธิ

URL นี้คาดว่าจะใช้งานไม่ได้
André Perazzi

4
ไม่สามารถเข้าใจได้ว่าทำไมผู้คนถึงตอบคำตอบที่ไม่มีวิธีแก้ปัญหา
itoctopus

34

ดังที่คนอื่นได้กล่าวถึงรหัสผ่านบรรทัดคำสั่งควรเป็นทางเลือกสุดท้าย

อย่างไรก็ตามหากไม่มีสิ่งใดเป็นไปได้ อย่างใดอย่างหนึ่งสามารถไป ssh ผ่าน

sshpass -p <password> sftp user@host

2
สิ่งนี้ควรถูก upvoted อย่างหนาแน่น มันมีประโยชน์จริงๆที่จะมี sshpass ผู้ให้บริการบางรายไม่อนุญาตให้คุณสร้างโฟลเดอร์. ssh และไม่อนุญาตให้ใช้ scp
NetSquirrel

2
ดีที่เครื่องมือบางอย่างมีหลังคุณ: brew search sshpass- "เราจะไม่เพิ่ม sshpass เพราะทำให้ผู้ใช้มือใหม่ SSH ง่ายเกินไปที่จะทำลายความปลอดภัยของ SSH"
โอลิเวอร์

4
นี่ควรเป็นทางออกที่ยอมรับได้ OP ถามถึงวิธีการทำสิ่งนี้โดยเฉพาะ - ไม่ใช่เพื่อการรักษาความปลอดภัย (แม้ว่าจะมีเจตนาดีและถูกต้อง)
ebr

6

อย่าทำอย่างนั้น - ตั้งค่าการรับรองความถูกต้องกุญแจสาธารณะ SSH สำหรับการเข้าสู่ระบบอัตโนมัติ


sftp ทำเช่นนี้ได้ไหม scp?
Daniel

1
@Daniel ทั้ง sftp และ scp สร้างขึ้นบน SSH ซึ่งอนุญาตให้ใช้การพิสูจน์ตัวตนแบบใช้คีย์
Zoredache

5

เพียงใช้ perl, ruby ​​หรือ python เพื่อเขียนสคริปต์สิ่งที่คุณพยายามทำ ในกรณีของทับทิมเป็นเพียง (นำมาจากเอกสาร net-sftp API):

require 'net/sftp'

Net::SFTP.start('host', 'username', :password => 'password') do |sftp|

  # upload a file or directory to the remote host

  sftp.upload!("/path/to/local", "/path/to/remote")

end

สำหรับข้อมูลเพิ่มเติมhttp://net-ssh.rubyforge.org/sftp/v2/api/index.html


paramiko เป็นงูหลามบริสุทธิ์ (ไม่มี libs พิเศษ) และใช้งานได้ดีจริงๆ
qwertzguy

3

ตามที่ระบุไว้คำตอบอื่น ๆ ให้ใช้การตรวจสอบกุญแจสาธารณะ มีชุดที่ยอดเยี่ยมถึงแม้จะเก่าไปหน่อยชุด IBM developerWorksที่ควรอธิบายทุกสิ่งที่คุณอยากรู้เกี่ยวกับมันรวมถึงเครื่องมือเสริมที่มีประโยชน์เช่นพวงกุญแจ


2

สำหรับผู้ค้นหาที่ไม่สนใจว่ารหัสผ่านสามารถเห็นได้ในคำสั่งบรรทัดคำสั่ง:

sftp userid:password@remoteHostคือวิธีรวมรหัสผ่านในsftpคำสั่งเชื่อมต่อ

อัปเดต: สิ่งนี้กลายเป็นไม่ถูกต้อง ... ดูความคิดเห็น


OpenSSH v5.3p1 และ v4.3p2 ทั้งบน Red Hat Enterprise ...
ashnazg

1
นี่กลับกลายเป็นว่าไม่ถูกต้อง ... วิธีนี้ดูเหมือนจะใช้ได้กับฉันเพราะ PHP และส่วนขยายของ ssh2 นั้นถูกใช้ก่อนหน้านี้ในรหัสของฉันเพื่อทำการพิสูจน์ตัวตนแบบสแตนด์อโลนจริง ... และคำสั่ง sftp กำลังถูกเรียกใช้ในภายหลัง มันเป็นส่วนต่อมาที่ไวยากรณ์ดูเหมือนจะประสบความสำเร็จ
ashnazg

1
ไม่สามารถแก้ไขผู้ใช้ชื่อโฮสต์: ไม่รู้จักโฮสต์ดังกล่าว กำลังพิจารณา ":" ในชื่อผู้ใช้ซึ่งไม่ใช่ใน FileZilla CLI
P Satish Patro

1

ฉันสงสัยว่ามีคำตอบมากเท่ากับไคลเอนต์ FTP เซิร์ฟเวอร์ SFTP ไม่ควรยอมรับข้อมูลการตรวจสอบสิทธิ์จนกว่าจะมีการสร้างการเข้ารหัสเพื่อให้ผู้ใช้และรหัสผ่านได้รับการป้องกัน

ผมเชื่อว่าFileZillaลูกค้าจะช่วยให้บรรทัดคำสั่งผ่านของผู้ใช้และรหัสผ่าน .. ดูเอกสารประกอบที่นี่ ด้วยชื่อเสียงของโครงการ FileZilla ฉันคาดหวังว่ามันจะทำงานได้อย่างปลอดภัย

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