มา initial setup ubuntu 20.04 กัน
พอดีว่ากำลัง setup node สำหรับ ansible พอดี เลยถือโอกาสเขียน blog การ initial setup ubuntu กันเลย
1.สร้าง user
โอเค มาเริ่มจากการสร้าง user กันก่อน โดยใช้คำสั่ง
adduser <username>
ต่อมาเราจะเพิ่ม user ที่เพิ่งสร้างไปยัง sudo group โดยใช้คำสั่ง
usermod -aG sudo <username>
2. config firewall
เราจะใช้ ufw ในการ config firewall
เริ่มจาก เราจะ enable ให้สามารถ ssh เข้ามายัง server ได้ โดยใช้คำสั่ง
ufw allow OpenSSH
ต่อมา เราจะเปิดใช้ ufw เป็น firewall ด้วยคำสั่ง
ufw enable
โดยเราสามารถเช็คสถานะของ firewall ด้วยคำสั่ง
ufw status
จะเห็นว่าตอนนี้ firewall active และให้ ssh ผ่านเข้ามายัง server ได้
3. config ให้ root account ใช้ SSH Key Authentication
เนื่องจากตอนนี้ root account ของเรายังใช้ password authentication อยู่ เราจะมาเปลี่ยนให้ใช้ ssh key กัน
เริ่มจากการสร้าง key pair โดยใช้คำสั่ง
ssh-keygen
note ถ้าเราเคยสร้าง key pair แล้ว โปรแกรมจะให้ overwrite ทับ key เก่า ดังนั้นถ้าใครเคยสร้างแล้ว ใช้ key เก่าก็ได้ไม่ต้องสร้างใหม่
โดยเราจะได้ public key มาในไฟล์นามสกุล .pub
ให้เรา copy string public key มา
จากนั้นไปยัง remote server ให้เราสร้าง folder ~/.ssh ด้วยคำสั่ง
mkdir -p ~/.ssh
จากนั้นเราจะใส่ public key ในเครื่อง remote ด้วยคำสั่ง
echo <public_key> >> ~/.ssh/authorized_keys
note public key string จะขึ้นต้นด้วย ssh-rsa
โอเค มาต่อกัน เราจะลบสิทธิ์ในการเข้าถึงโฟลเดอร์ .ssh แบบ group และ other ออก ด้วยคำสั่ง
chmod -R go= ~/.ssh
4. disable การเข้าถึง root account ด้วย password
ก่อนจะทำขั้นนี้ให้ check ก่อนว่าเราสามารถเข้า remote server ด้วย user root แบบไม่ต้องใส่ password ได้ โดยจากการที่ผมลองใน windows ถ้าเราใช้ ssh จาก cmd จะไม่ต้องใส่ password แล้ว แต่ถ้าเข้าผ่าน putty ยังต้องใส่ password อยู่ … โอเค ไปต่อกัน
ให้เราเปิดไฟล์ config ของ ssh ด้วยคำสั่ง
sudo nano /etc/ssh/sshd_config
จากนั้นให้แก้บรรทัด PasswordAuthentication เป็น
PasswordAuthentication no
จากนั้นให้ save และ restart service ssh ด้วยคำสั่ง
sudo systemctl restart ssh
5. config ให้สามารถเข้า non-root account ด้วย ssh key
โอเค ตอนนี้เราสามารถเข้า root account ด้วย public key ที่วางในโฟลเดอร์ .ssh ของ root account ได้แล้ว … เราจะใช้ key เดิมในการเข้าถึง non-root account ที่เราสร้างด้วย โดยจาก terminal ของ root account เราจะใช้คำสั่ง
rsync --archive --chown=<username>:<username> ~/.ssh /home/<username>
โอเค ไฟล์ในโฟลเดอร์ .ssh จะถูกย้ายไปยัง account นั้น พร้อมเปลี่ยนสิทธ์การเข้าถึงให้เป็นของ account นั้นแล้วนั่นเอง
โดยตอนนี้เราสามารถ ssh เข้า user non-root โดยไม่ต้องใส่ password ได้แล้ว