ค้นหาเว็บไซต์

วิธีการติดตั้งเซิร์ฟเวอร์ OpenSSH จาก Source ใน Linux


OpenSSH เป็นโอเพ่นซอร์สฟรีที่ใช้โปรโตคอล SSH 2.0 อย่างเต็มรูปแบบ ซึ่งมีเครื่องมือมากมายสำหรับการเข้าถึงและจัดการระบบคอมพิวเตอร์ระยะไกลอย่างปลอดภัย และการจัดการคีย์การตรวจสอบสิทธิ์ เช่น ssh (การแทนที่ที่ปลอดภัยสำหรับ telnet), scp, sftp (การแทนที่ที่ปลอดภัยสำหรับ ftp), ssh-keygen, ssh-copy-id, ssh-add และอื่นๆ

เมื่อเร็วๆ นี้ OpenSSH 9.3 เปิดตัวและมาพร้อมกับคุณลักษณะใหม่ๆ และการแก้ไขข้อบกพร่องมากมาย คุณสามารถอ่านบันทึกประจำรุ่น SSH เพื่อดูข้อมูลเพิ่มเติมได้

ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและกำหนดค่าเวอร์ชันล่าสุดของเซิร์ฟเวอร์และไคลเอ็นต์ OpenSSH บนระบบ Linux จากแหล่งที่มา เราถือว่าคุณมีการติดตั้งชุด OpenSSH อยู่แล้ว

ความต้องการ:

  • ระบบ Linux Debian/Ubuntu หรือ RHEL/CentOS
  • ซีคอมไพเลอร์
  • Zlib 1.1.4 หรือ 1.2.1.2 หรือสูงกว่า
  • LibreSSL หรือ OpenSSL >= 1.0.1 < 1.1.0

ติดตั้งเซิร์ฟเวอร์ OpenSSH จากแหล่งที่มา

ก่อนที่จะติดตั้ง SSH เวอร์ชันล่าสุด โปรดตรวจสอบเวอร์ชันปัจจุบันของ SSH ที่ติดตั้งในระบบของคุณโดยใช้คำสั่งต่อไปนี้

ssh -V

OpenSSH_7.7p2 Ubuntu-4ubuntu2.5, OpenSSL 1.0.2g	1 Mar 2016

จากผลลัพธ์ข้างต้น เวอร์ชัน OpenSSH ที่ติดตั้งคือ 7.7 หากต้องการติดตั้งเวอร์ชัน OpenSSH ล่าสุด ขั้นแรกคุณต้องติดตั้งการอ้างอิงสองสามรายการ ได้แก่เครื่องมือในการพัฒนาหรือสร้างสิ่งจำเป็นและแพ็คเกจที่จำเป็นอื่นๆ ดังนี้

-------------- On RedHat-based Distros --------------
sudo yum update
sudo yum group install 'Development Tools'
sudo yum install zlib-devel openssl-devel

-------------- On Debian-based Distros --------------
sudo apt update 
sudo apt install build-essential zlib1g-dev libssl-dev 

ในการสร้างสภาพแวดล้อมที่เหมาะสมสำหรับการติดตั้งเซิร์ฟเวอร์ OpenSSH เราจำเป็นต้องสร้างผู้ใช้ระบบและกลุ่มใหม่ชื่อ “sshd” รวมถึงสถานที่ที่ปลอดภัยสำหรับ โครต.

sudo mkdir /var/lib/sshd
sudo chmod -R 700 /var/lib/sshd/
sudo chown -R root:sys /var/lib/sshd/
sudo useradd -r -U -d /var/lib/sshd/ -c "sshd privsep" -s /bin/false sshd

อธิบายแฟล็กในคำสั่ง useradd ด้านบน:

  • -r – บอก useradd ให้สร้างผู้ใช้ระบบ
  • -U – สั่งให้สร้างกลุ่มที่มีชื่อและ ID กลุ่มเดียวกัน
  • -d – ระบุไดเรกทอรีของผู้ใช้
  • -c – ใช้เพื่อเพิ่มความคิดเห็น
  • -s – ระบุเชลล์ของผู้ใช้

ตอนนี้ ให้ดาวน์โหลด tarball ของ OpenSSH เวอร์ชัน 9.3 จากมิเรอร์ HTTP ใดๆ ที่มีอยู่ หรือคุณสามารถใช้คำสั่ง wget ต่อไปนี้เพื่อดาวน์โหลดโดยตรงในเทอร์มินัลของคุณ

wget -c https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
tar -xzf openssh-9.3p1.tar.gz
cd openssh-9.3p1/

ตอนนี้เราจะสร้างและติดตั้งเซิร์ฟเวอร์ OpenSSH โดยใช้ --with-md5-passwords, --with-privsep-path และ --sysconfdir ตัวเลือก ซึ่งจะติดตั้งไฟล์ทั้งหมดใน /usr/local/ (นี่คือคำนำหน้าการติดตั้งเริ่มต้น)

คุณสามารถดูตัวเลือกที่มีอยู่ทั้งหมดได้โดยการรัน ./configure -h และปรับแต่งการติดตั้งของคุณเพิ่มเติม

./configure -h

ตัวอย่างเช่น หากต้องการเปิดใช้งานการสนับสนุน PAM และ SELinux ให้เพิ่มตัวเลือก --with-pam และ --with-selinux ตามลำดับ คุณจะต้องติดตั้งไฟล์ส่วนหัวที่จำเป็นทั้งหมด เพื่อให้พวกเขาได้ทำงาน

## Install PAM and SELinux Headers ##
sudo apt install libpam0g-dev libselinux1-dev   [On Debian/Ubuntu]
sudo yum install pam-devel libselinux-devel     [On CentOS/RHEL]

## Compile and Install SSH from Sources ##
./configure --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh 
make
sudo make install 

เมื่อคุณติดตั้ง OpenSSH แล้ว ให้รีสตาร์ท SSH หรือเปิดหน้าต่างเทอร์มินัลอื่น และตรวจสอบเวอร์ชันของ OpenSSH ที่ติดตั้งอยู่ในระบบของคุณแล้ว

ssh -V

OpenSSH_9.3p1, OpenSSL 3.0.1 14 Dec 2021

ไฟล์การกำหนดค่า OpenSSH ต่างๆ อยู่ที่:

  • ~/.ssh/* – ไดเร็กทอรีนี้จัดเก็บการกำหนดค่าไคลเอ็นต์ ssh เฉพาะผู้ใช้ (นามแฝง ssh) และคีย์
  • /etc/ssh/ssh_config – ไฟล์นี้มีการกำหนดค่าไคลเอ็นต์ ssh ทั่วทั้งระบบ
  • /etc/ssh/sshd_config – มีการกำหนดค่าบริการ sshd

หากต้องการกำหนดค่านามแฝง ssh โปรดดู: วิธีกำหนดค่าการเชื่อมต่อ SSH แบบกำหนดเองเพื่อทำให้การเข้าถึงระยะไกลง่ายขึ้น

คุณอาจต้องการอ่านบทความที่เกี่ยวข้องกับ SSH ต่อไปนี้

แค่นั้นแหละ! ในบทความนี้ เราได้อธิบายวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ OpenSSH เวอร์ชันล่าสุดจากแหล่งที่มาบนระบบ Linux หากคุณมีคำถามหรือความคิดเห็นใดๆ โปรดใช้แบบฟอร์มคำติชมด้านล่างเพื่อติดต่อเรา