โดยปกติเวลาเราใช้งานระบบอะไรซักอย่าง เราไม่สามารถที่จะเปิดเผย Port ฝั่ง Private ได้ทำให้บางครั้งบางทีเมื่อเราต้องการเข้าถึง Port นั้นจริงๆ เเต่จากคนละ Site กัน เช่นทำ Cluster Database ข้าม Site เเล้วงั้นจะทำไงล่ะถ้ามันอยู่ใน Private โดยปกติเราจะใช้ตัว Port forward ที่ติดมากับ linux อยู่เเล้วใช่มั้ยครับ เเต่ Autossh นี่จะเป็นตัวช่วยให้การเชื่อมต่อ Port สู่หลังบ้านมีความเสถียรมากขึ้น โดยที่ Process Port จะไม่ดับเลยทีเดียว
ติดตั้ง
sudo apt-get install autossh
หรือ
sudo wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
sudo autossh
ตัวอย่าง
autossh -M 0 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L interfaceip:24333:private_ip:5432 user@private_ip
อธิบาย
Option | Meaning |
-M | คือ Monitor port หากไม่ต้องการใช้งานให้ใส่ 0 |
-f | คือ runnig on background |
-N | คือ การเช็คตัวเองว่ารันอยู่หรือไม่ |
-o | คือ การใส่ Option |
-C | คือ การ Compress Data |
PubkeyAuthentication=yes | เปิดใช้งานการเช็ค Authen ด้วย public-key (ssh-keygen -t rsa) |
StrictHostKeyChecking=false | ปิดการเช็ค SSH Hot key |
PasswordAuthentication=no | ไม่ต้องใส่รหัสผ่าน |
ServerAliveInterval=60 | ตั้ง Timeout กรณีไม่ได้รับข้อมูลอะไรเป็นเวลา 60 วินาที |
ServerAliveCountMax 3 | ตั้งจำนวน Client connection |
Note: อย่าลืมใส่ Public key ด้วยถ้าไม่ใส่จะรัน Autossh background ไม่ได้เพราะมันจะถามรหัส
ขั้นตอนเตรียม Puclic Key
ssh-keygen -t rsa
ssh user@private_ip mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh user@private_ip 'cat >> .ssh/authorized_keys'
ssh user@private_ip 'sudo chmod 700 .ssh/'
ssh user@private_ip 'sudo chmod 640 .ssh/authorized_keys'
Note: สุดท้ายนี้ก็ใช้อย่างระมัดกันด้วยนะครับ อาจจะเป็นทางเลือกหนึ่งที่พอใช้ได้
ขอบคุณครับ^^