เข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่าน Linux FTP


23

คำสั่งสำหรับการเข้าสู่ระบบด้วย FTP ทั้งหมดมีหนึ่งบรรทัดคืออะไร?

ftp username:password@my.domain.com

พูดว่า:

รหัสผ่านที่จำเป็นสำหรับชื่อผู้ใช้: รหัสผ่าน


2
ใช้เพื่อหาข้อมูลหรืออาจจะman ftp ftp --helpอย่าลืมว่าftpอาจหมายถึงระบบสาธารณูปโภคที่แตกต่างกัน ....
Basile Starynkevitch

2
ftp ftp://username:password@my.domain.com

1
คุณควรจำไว้ว่าบรรทัดคำสั่งของกระบวนการที่กำหนดจะปรากฏแก่ผู้ใช้รายอื่นทั้งหมดในระบบ ดังนั้นการให้รหัสผ่านของคุณเป็นส่วนหนึ่งของ commandline อาจเป็นปัญหาด้านความปลอดภัยที่ร้ายแรง

ที่เกี่ยวข้อง - superuser.com/questions/937124/...
slm

คำตอบ:


8
ftp -nv yourftpserver.com

จากนั้นuser your_username หรือuser anonymous


ฉันโพสต์คำตอบนี้เนื่องจากftp ftp://username:password@my.domain.comไม่ได้ผลสำหรับฉัน

Usage: { ftp | pftp } [-46pinegvtd] [hostname]
   -4: use IPv4 addresses only
   -6: use IPv6, nothing else
   -p: enable passive mode (default for pftp)
   -i: turn off prompting during mget
   -n: inhibit auto-login
   -e: disable readline support, if present
   -g: disable filename globbing
   -v: verbose mode
   -t: enable packet tracing [nonfunctional]
   -d: enable debugging

2
สิ่งนี้ไม่มีประโยชน์เพราะต้องมีการใช้แบบโต้ตอบ ฉันก็อาจพิมพ์ 'ftp user @ yourserver'
smaudet

3
สิ่งนี้ไม่ตอบคำถาม
phil294

7
ftp ftp://username:password@my.domain.com

คุณสามารถค่อนข้างง่ายได้ใช้ftp --helpแต่


25
คำสั่งที่แสดงก่อให้เกิด: "ไม่ทราบชื่อหรือบริการ" ftp - ช่วยสร้างอะไรไม่เหมือนกับ ftp:, // หรือชื่อผู้ใช้: รหัสผ่าน @
CW Holeman II

4
คุณใช้ Linux รุ่นใด ฉันยังได้รับ "ชื่อหรือบริการที่ไม่รู้จัก" เมื่อฉันลองใช้ไวยากรณ์ด้านบน ฉันใช้ CentOS 6
Tim Ludwinski

7
ฉันยังได้รับชื่อหรือบริการที่ไม่รู้จัก
เควินจอห์นสัน

6
ไม่ทำงานสำหรับฉัน fyi บนเซิร์ฟเวอร์ระยะไกลของ Ubuntu
user391339

6
ฉันยังพบว่าftp -help ไม่ช่วยเหลือและรูปแบบที่คุณแนะนำไม่เหมาะกับฉันใน Ubuntu 16
Henry

3

ตัวเลือกที่ดีที่สุดคือการใช้. netrcพร้อมกับ gpg เพื่อความปลอดภัย

ฉันได้เขียนสคริปต์วัตถุประสงค์ทั่วไปสำหรับสิ่งนี้ซึ่งฉันสามารถอัปโหลดในภายหลัง แต่มันจะลดลงไปที่:

gpg -c .netrc

หรือเลือกที่มีวลีรหัสผ่านบน commandline และปลายทางผลลัพธ์:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc

ไม่แสดงที่นี่ แต่คุณสามารถใช้คีย์แบบอสมมาตรเพิ่มเติมได้ (หากคุณตั้งค่าไว้) ด้วย gpg เพื่อทำให้สิ่งนี้ปลอดภัยยิ่งขึ้น

จากนั้นเมื่อคุณพร้อมที่จะเข้าสู่ระบบ

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc

ตัวอย่าง. netrc:

machine google.com
login <username>
password <secretpassword>

จริง ๆ แล้วฉันเก็บแฮชภายในเครื่องและสำเนาดั้งเดิมของไฟล์เหล่านี้ไว้ในคอมพิวเตอร์เครื่องอื่นนอกเหนือจากที่ฉันใช้ในไฟล์. netrc และตรวจสอบการแฮชของ. netrc และสคริปต์ที่ฉันเรียกใช้ แต่นั่นคือด้านบนและ เกินคำถามเดิมของ OP


นี่เป็นคำตอบที่ดีที่สุดแม้ว่าจะสามารถปรับปรุงได้: (1) ข้อมูลรับรองผู้ใช้ภายในบรรทัดคำสั่งเดียวจะถูกเก็บไว้ในประวัติเชลล์ => ปัญหาด้านความปลอดภัย (2) .netrc ทำงานได้โดยไม่มี gpg => ปัญหาด้านความปลอดภัย ตรวจสอบด้วยว่าไฟล์. netrc นั้นมีสิทธิ์ที่ถูกต้อง: chmod 600 .netrc(3) ฟังก์ชั่นของเชลล์ในรูปแบบ wrapper รอบ ๆ decrypt, ftp call และการลบ decrypted .netrc นั้นจะมีประโยชน์ ขอบคุณสำหรับคำตอบที่ยอดเยี่ยมของคุณ!
คณิตศาสตร์

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

1

ใช้Netrc มันเป็นการดีกว่าให้รหัสผ่านไปที่บรรทัดคำสั่ง


คำตอบนี้ไม่สมควรได้รับคะแนนลบ (แม้ว่ามันจะเป็นตัวอย่างของวิธีการทำ)
Peter Mortensen

ฉันเห็นด้วย - อย่างไรก็ตามไม่มีใครเปลี่ยนแปลงสิ่งนี้ (และฉันไม่ได้ลงคะแนนเลย)
smaudet

0

คุณสามารถลอง

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}

ซึ่งคุณสามารถโทรด้วย my_ftp $'ls subfolder\nanothercommand'

วิธีนี้ไม่ได้เป็นแบบโต้ตอบ แต่สิ่งที่ดีที่สุดที่ฉันสามารถหาได้

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