SSH config ช่วยให้เรา config option ของแต่ละ host เอาไว้หลายๆอันได้ ทำให้ตอนเรียก ssh ใส่แค่ชื่อ hostname ใน config ก็พอแล้ว
เวลาใช้ ssh เพื่อ remote เครื่องอื่น ปกติแล้วจะสั่งประมาณนี้
ssh user@hostname
หรือถ้ามี port ที่ต่างจาก ssh ปกติ (22) ก็ใส่ option สำหรับ port เพิ่มคือ
ssh -p 2222 user@hostname
หรือถ้ามี IdentityFile ด้วย ก็ต้องเพิ่ม option ไปอีกแบบนี้
ssh -i identity.key -p 2222 user@hostname
ตัวอย่างเช่นผมจะ ssh เข้า Ubuntu ที่ลงไว้ใน Virtual Box โดยใช้ vagrant ปกติแล้วจะสั่ง vagrant ssh ก็ได้ แต่ถ้าจะสั่งด้วย ssh เองโดยตรงจะต้องสั่งประมาณนี้
ssh -i ~/vagrants/ubuntu/.vagrant/machines/default/virtualbox/private_key -p 2222 vagrant@127.0.0.1
ทีนี้ถ้าเราจะใช้ SSH config ช่วยเราก็สร้างไฟล์ config ที่ $HOME/.ssh/config
จากนั้นกำหนดค่าแบบนี้
Host ubuntu-vagrant
HostName 127.0.0.1
IdentityFile ~/vagrants/ubuntu/.vagrant/machines/default/virtualbox/private_key
Port 2222
User vagrant
ลักษณะ config file ของ SSH ก็มี key เช่น Host
, HostName
, IdentityFile
, Port
และ User
แล้วเว้นวรรคด้วย 1 ช่องว่าง ตามด้วยค่าที่กำหนดให้ key นั้นๆ
แล้วก็มีการใช้ indentation เพื่อบอกว่าค่านั้นเป็น key/value ย่อยๆของ key หลักอีกที
จากตัวอย่างผมกำหนด Host คือ ubuntu-vagrant
แล้วก็กำหนดค่า HostName เป็น IP หรือ Domain name ของ Host ที่เราต้องการต่อ แล้วก็ค่า IdentityFile ไปที่ path ของ private key ของ vagrant ที่กำหนดให้กับ VM ที่ต้องการ remote ตามด้วยค่า Port 2222 แล้วก็ User คือ username ในทีนี้คือ vagrant
เสร็จแล้วหลังจากนั้นเวลาเราต้องการ connect ไปที่ Ubuntu ใน VM ก็แค่สั่ง
ssh ubuntu-vagrant
เท่านี้ก็ได้แล้ว
Top comments (1)
เพิ่งรู้เลยครับว่าตั้ง config ssh อย่างงี้ได้ด้วยขอบคุณครับ