ฉันจะตั้งค่าผู้ใช้ sftp เพื่อเข้าสู่ระบบด้วยรหัสผ่านไปยังเซิร์ฟเวอร์ ubuntu EC2 ได้อย่างไร


14

ฉันมี Ubuntu Server ที่ทำงานบนอินสแตนซ์ EC2 ในการเข้าสู่เซิร์ฟเวอร์นั้นฉันจะใช้ไฟล์ใบรับรองโดยไม่มีรหัสผ่านใด ๆ

ฉันได้ติดตั้งและกำหนดค่า vsftpd และสร้างผู้ใช้ (ลองเรียกเขาว่า "testuser") ซึ่งฉันได้ตั้งเทอร์มินัล / bin / false ssh เพื่อให้สามารถเชื่อมต่อผ่าน sftp และอัพโหลด / เข้าถึงไฟล์ในบ้านของเขา ไดเรกทอรี

อย่างไรก็ตาม - เมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์จากคอมพิวเตอร์ของฉันทำงานอยู่

sftp testuser@my-ec2-server

ฉันเข้าใจ

ปฏิเสธการอนุญาต (publickey)
ปิดการเชื่อมต่อ

ข้อความดังนั้นฉันไม่สามารถเข้าสู่ระบบได้

ฉันจะลบข้อกำหนดใบรับรองสำหรับผู้ใช้นี้เท่านั้น (หมายถึงผู้ใช้ "อูบุนตู" จะยังคงต้องใช้ไฟล์ใบรับรองเพื่อเข้าสู่ระบบผ่าน ssh) ดังนั้นลูกค้า sftp ปกติจะสามารถเชื่อมต่อโดยใช้ชื่อผู้ใช้และรหัสผ่านได้อย่างไร

ขอขอบคุณ.

PS ใช้ Ubuntu Server 10.10 AMI อย่างเป็นทางการจาก canonical, 64 บิตบนอินสแตนซ์ขนาดเล็ก

คำตอบ:


10

ในการบรรลุสิ่งที่คุณต้องการคุณต้องทำสองสิ่งที่แตกต่างกัน

  1. เปลี่ยน sshd config เพื่อรับรหัสผ่าน

ฉันจะบอกก่อนอื่นเลยว่ามันเป็นความคิดที่ดีที่จะทำสิ่งนี้ฉันอยากจะสร้างใบรับรองให้กับผู้ใช้ของคุณมากกว่าการเปิดใช้งานรหัสผ่านอย่างไรก็ตามถ้าคุณต้องการทำเช่นนั้นเพียงแค่แก้ไข/etc/ssh/sshd_configและเปลี่ยนแปลงหรือยกเลิกการแสดงความPasswordAuthentication yesคิดเห็น หลังจากนั้นให้รีสตาร์ท sshdservice ssh restart

  1. ให้ผู้ใช้เพียงใช้ FTP โดยใช้ sftp และไม่มีเชลล์

เพื่อให้เข้าใจว่าคุณต้องติดตั้ง rsh (เชลล์ที่ถูก จำกัด ) และเปลี่ยนเชลล์ผู้ใช้ chsh username


ฉันต้องการเฉพาะผู้ใช้ (testuser) ที่จะมีการเข้าถึง sftp เท่านั้นเพื่อใช้รหัสผ่านแทนใบรับรอง ส่วนที่ไม่อนุญาตให้ผู้ใช้ที่เข้าถึงผ่านทาง SSH ผมแล้วได้ด้วยการกำหนดประเภทของมันทุบตี / bin / เท็จ
Doron

1
อย่างไรก็ตาม, คุณจะไม่สามารถอนุญาตให้ผู้ใช้หนึ่งคนผ่าน passwd, คุณอนุญาตให้ใช้รหัสผ่านสำหรับทุกคนหรือสำหรับใครก็ตาม นอกจากนี้ยัง/bin/falseจะไม่อนุญาตให้เชื่อมต่อ SFTP (SSH เชื่อมต่อใด ๆ ต้องมีเปลือกที่ถูกต้องว่าที่ rsh ไม่หลอกลวง)
lynxman

1
สิ่งนี้ไม่ได้ผลสำหรับฉันบน Ubuntu EC2 ไม่แน่ใจว่าขั้นตอนพิเศษที่ฉันขาดไปคือพอร์ต 22 เปิดอยู่
Doug Molineux

ดูserverfault.com/questions/154957/...การตั้งค่าเพียงแค่ผู้ใช้ SFTP ด้วยรหัสผ่าน ...
รามัน

0

นี่คือคำแนะนำทีละขั้นตอนในการอนุญาต:

  1. SFTP เข้าถึง / home / bob / อัพโหลดสำหรับผู้ใช้ bob
  2. ล็อค bob ออกจาก SSH
  3. ใช้ชื่อผู้ใช้ / รหัสผ่านมากกว่าคีย์:

ก่อนอื่นให้แก้ไขไฟล์ / etc / ssh / sshd_config ของคุณ:

sudo nano /etc/ssh/sshd

เลื่อนลงและแก้ไข:

PasswordAuthentication yes

และเพิ่มที่ด้านล่าง:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

กด Ctrl-X เพื่อออกและบันทึก

ตอนนี้เพิ่มผู้ใช้:

sudo useradd bob
sudo passwd bob

ตอนนี้เพิ่มกลุ่มและปิดการใช้งาน ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

ตอนนี้ตั้งค่าการอนุญาต:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

ทั้งหมดนี้อยู่ในขณะที่ล็อกอินในฐานะผู้ใช้รูท (ผู้ใช้ ec2 บน Amazon Linux AMIs)


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