ฉันต้องการทราบวิธีการตั้งค่าบัญชีผู้ใช้ root, sudo, sftp-only ซึ่งไม่จำเป็นต้องมีการตรวจสอบสิทธิ์กุญแจสาธารณะเมื่อเข้าสู่ระบบฉันต้องการทราบวิธีตั้งค่าโฮมไดเรกทอรีผู้ใช้ sftp เท่านั้น ไม่สามารถเข้าถึงไดเรกทอรีอื่นระดับบน
ฉันต้องการทราบวิธีการตั้งค่าบัญชีผู้ใช้ root, sudo, sftp-only ซึ่งไม่จำเป็นต้องมีการตรวจสอบสิทธิ์กุญแจสาธารณะเมื่อเข้าสู่ระบบฉันต้องการทราบวิธีตั้งค่าโฮมไดเรกทอรีผู้ใช้ sftp เท่านั้น ไม่สามารถเข้าถึงไดเรกทอรีอื่นระดับบน
คำตอบ:
ทรัพยากรที่ดีที่สุดที่จะช่วยให้คุณเริ่มต้นการตั้งค่าบริการ SSH บนเครื่องโฮสต์โดยใช้อูบุนตูเป็นOpenSSH เซิร์ฟเวอร์ สิ่งนี้จะช่วยให้คุณใช้SSH File Transfer Protocol (เช่น Secure File Transfer Protocol หรือ SFTP) เพื่อเข้าถึงถ่ายโอนและจัดการไฟล์ผ่าน SSH จากเครื่องไคลเอนต์
OpenSSH server
บนเครื่องโฮสต์และผู้ใช้สามารถใช้ssh
เชื่อมต่อจากไคลเอนต์กับเซิร์ฟเวอร์ของโฮสต์โดยใช้ชื่อผู้ใช้และรหัสผ่านเท่านั้น อย่างไรก็ตามขอแนะนำให้ใช้การรับรองความถูกต้องของรหัสสาธารณะ"ตรวจสอบให้แน่ใจว่าคุณมีรหัสผ่านที่รัดกุมก่อนติดตั้งเซิร์ฟเวอร์ SSH (คุณอาจต้องการปิดการใช้งานรหัสผ่านทั้งหมด )"
ในการติดตั้งเซิร์ฟเวอร์ OpenSSH บนโฮสต์:
sudo apt-get install openssh-server
ให้ที่อยู่ IP แบบคงที่กับโฮสต์ของคุณเพื่อให้คุณสามารถเชื่อมต่อได้อย่างเชื่อถือได้:
nm-connection-editor
ในการกำหนดค่าเซิร์ฟเวอร์ OpenSSH ของคุณ "ก่อนอื่นให้ทำการสำรองไฟล์ sshd_config ของคุณโดยการคัดลอกไปยังโฮมไดเร็กตอรี่ของคุณหรือโดยการทำสำเนาแบบอ่านอย่างเดียวใน / etc / ssh โดยทำ:"
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults
"เมื่อคุณสำรองsshd_config
ไฟล์แล้วคุณสามารถทำการเปลี่ยนแปลงได้ด้วยโปรแกรมแก้ไขข้อความใด ๆ ตัวอย่างเช่น:"
sudo -H gedit /etc/ssh/sshd_config
คุณต้องรีสตาร์ทบริการ ssh บนโฮสต์เพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล
sudo service ssh restart
PermitRootLogin without-password
; เพิ่มPermitRootLogin no
ไปยังโฮสต์ของ/etc/ssh/sshd_config
Port 22
; เพิ่มPort <new-port-number>
ไปยังโฮสต์ของ/etc/ssh/sshd_config
ListenAddress 192.168.0.10
AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>
หรือAllowUsers <username>@111.222.333.*
ไปยังโฮสต์/etc/ssh/sshd_config
~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
จากนั้นเพิ่มPasswordAuthentication no
ไปยังโฮสต์ของ/etc/ssh/sshd_config
sudo apt-get install ufw && sudo ufw limit OpenSSH
PasswordAuthentication
ในsshd_config
ไฟล์ของคุณค้นหาบรรทัดที่มีวลีPasswordAuthentication
และทำให้อ่าน:
PasswordAuthentication yes
บันทึกsshd_config
ไฟล์ใหม่ของคุณแล้วเริ่มssh
บริการของโฮสต์ใหม่:
sudo service ssh restart
หมายเหตุssh
บริการของโฮสต์โฮสต์รับฟังในsshd_config
ไฟล์และตั้งค่าเราเตอร์ของคุณเพื่อส่งต่อการรับส่งข้อมูล TCP / UDP ที่มุ่งไปที่พอร์ตนี้ไปยังที่อยู่ IP ของเซิร์ฟเวอร์ OpenSSH ของคุณ
192.168.1.1
เพื่อลงชื่อเข้าใช้เราเตอร์ของคุณและตั้งค่าการส่งต่อพอร์ต ดูกำหนดค่าเซิร์ฟเวอร์ OpenSSH และเราเตอร์เพื่อยอมรับการเชื่อมต่อ SSH ผ่านอินเทอร์เน็ตในการเปิดเทอร์มินัลเชลล์ SFTP เหมือนกับ<username>
โฮสต์ให้เปิดเทอร์มินัลบนไคลเอ็นต์และป้อนคำสั่งต่อไปนี้แทนที่123.123.1.23
ด้วยที่อยู่ IP ของโฮสต์:
sftp <username>@123.123.1.23
หากคุณเปลี่ยนหมายเลขพอร์ตเซิร์ฟเวอร์ OpenSSH ของโฮสต์ฟังให้ทำ:
sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
ในการเปิดเทอร์มินัลเชลล์ SSH เป็น<username>
บนโฮสต์ให้เปิดเทอร์มินัลบนไคลเอ็นต์และป้อนคำสั่งต่อไปนี้แทนที่123.123.1.23
ด้วยที่อยู่ IP ของโฮสต์:
ssh <username>@123.123.1.23
หากคุณเปลี่ยนหมายเลขพอร์ตเซิร์ฟเวอร์ OpenSSH ของโฮสต์ฟังให้ทำ:
ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
SSH
sshd_config
ไฟล์โฮสต์ใน 14.04:
สิทธิ์การใช้ไฟล์ที่เหมาะสมในโฮสต์รับประกันว่าผู้ใช้มาตรฐานแต่ละคน (ไม่มีสิทธิ์ sudo) ที่คุณสร้างบนโฮสต์จะเป็นเจ้าของ/home/new_user
ไดเรกทอรีของพวกเขาแต่มีสิทธิ์ จำกัด กับส่วนที่เหลือของโครงสร้างไดเรกทอรี
หวังว่าจะเป็นประโยชน์!
ขั้นตอนที่ 1: ติดตั้งแพ็คเกจ OpenSSH หากไม่ได้ติดตั้ง
sudo apt-get install openssh-server
ขั้นตอนที่ 2: สร้างกลุ่มแยกสำหรับผู้ใช้ SFTP
sudo addgroup ftpaccess
ขั้นตอนที่ 3: แก้ไข/etc/ssh/sshd_config
ไฟล์และทำการเปลี่ยนแปลงดังนี้ ค้นหาและแสดงความคิดเห็นด้านล่างบรรทัด
#Subsystem sftp /usr/lib/openssh/sftp-server
และเพิ่มบรรทัดเหล่านี้ในตอนท้ายของไฟล์
Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ขั้นตอนที่ 4: เริ่มบริการ sshd ใหม่
sudo service ssh restart
ขั้นตอนที่ 5: เพิ่มผู้ใช้ด้วยกลุ่ม ftpaccess และสร้างรหัสผ่าน
sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin
ขั้นตอนที่ 6: ปรับเปลี่ยนการอนุญาตไดเรกทอรีบ้าน
sudo chown root:root /home/paul
ขั้นตอนที่ 7: สร้างไดเรกทอรีภายในบ้านเพื่ออัพโหลดและแก้ไขสิทธิ์กับกลุ่ม
sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www
แค่นั้นแหละ .
อ้างอิง: การตั้งค่า SFTP บน Ubuntu
sudo chmod 711
ในโฟลเดอร์บ้านและมันอนุญาตให้ฉัน ftp ไปยังโฟลเดอร์ www เท่านั้น ดูเหมือนว่าจะดี แต่บางทีคนอื่น ๆ สามารถตีระฆังใน ...
Denyhostsเป็นอีกเครื่องมือหนึ่งนอกเหนือจากที่กล่าวถึงโดย "jtd" ที่คุณอาจต้องการดู สามารถบล็อกการพยายามเชื่อมต่อซ้ำ ๆ กับเซิร์ฟเวอร์ SSH ของคุณโดยอัตโนมัติ สามารถติดตั้งได้ในที่เก็บ Ubuntu
จำกัด การเข้าถึงผู้ใช้
ที่นี่เราจะอนุญาตให้ผู้ใช้ทำการถ่ายโอนไฟล์เท่านั้นและเราจะปิดการเข้าถึงเทอร์มินัล
สำหรับที่เพิ่มรหัสต่อไปนี้ที่ด้านล่างของไฟล์การกำหนดค่า
$ sudo nano /etc/ssh/sshd_config
ตอนนี้ไฟล์จะเปิดและวางรหัส
/etc/ssh/sshd_config
. . .
Match User filemg
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
แทนที่filemg
ด้วยชื่อผู้ใช้ของคุณ จากนั้นบันทึกและปิดไฟล์
แค่นั้นแหละ.
อ้างอิง: วิธีใช้ SFTP ใน Ubuntu 16.04