ในการตั้งค่า network เพื่อควบคุมหุ่นยนต์ ROS แบบ remote ผ่าน WiFi ผมประสบปัญหาอย่างหนึ่ง คือ บางครั้ง router มันเปลี่ยนค่า IP address ของเครื่องคอมพิวเตอร์ หรือ บางทีก็จำ IP address ไม่ได้บ้าง ในเวบนี้มีวิธีแก้ปัญหา คือ แทนที่จะจำ IP address เรามาจำชื่อ url กันดีกว่า เช่น ssh ubuntu@myrobot.local แทนที่จะเป็น ssh ubuntu@192.168.0.1
1. ตั้งชื่อคอมพิวเตอร์ทั้งเครื่อง local และ remote โดยการแก้ไขไฟล์ /etc/hostname และ /etc/hosts
2. ติดตั้ง zeroconf ทั้งในเครื่องคอมพิวเตอร์ local และ remote
sudo apt-get install netatalk
sudo apt-get install avahi-daemon
sudo update-rc.d avahi-daemon defaults
3. ทดสอบการเชื่อมต่อ
ping local-pc.local
ping myrobot.local
4. ตั้งค่าในไฟล์ .bashrc
ในเครื่อง local เพิ่ม
export ROS_MASTER_URI=http://myrobot.local:11311
export ROS_HOSTNAME=local-pc.local
ในเครื่อง remote ที่ติดไปกับหุ่นยนต์ เพิ่ม
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=myrobot.local
อย่าลืม source .bashrc หลังบันทึกไฟล์แล้ว
5. ตอนนี้เราก็สามารถ ssh แบบไม่ต้องจำ IP address ได้เช่นกัน
ssh username@myrobot.local
ถ้าไม่อยากใส่ password ในการ ssh ทุกครั้ง อ่านบทความนี้
Showing posts with label Network. Show all posts
Showing posts with label Network. Show all posts
Jul 14, 2018
SSH login แบบไม่ต้องใส่ password ทุกครั้ง
การ login เพื่อไปรันโหนดของ ROS ในเครื่อง remote ที่ติดไปกับตัวหุ่นยนต์ เช่น Raspberry Pi หรือ Mini PC หรือ Netbook ก็ตาม เราต้อง ssh กันบ่อยๆ ถ้าต้องใส่ password ทุกครั้งก็เสียเวลา ในเวบนี้มีวิธีแก้ปัญหานี้ สมมุติว่าที่เครื่อง local คอมพิวเตอร์ของเราชื่อ A โดย username คือ a ส่วน remote คอมพิวเตอร์ที่ติดไปกับตัวหุ่นยนต์ชื่อ B โดย username คือ b
1. สร้างคีย์ที่เครื่อง local
a@A:~> ssh-keygen -t rsa
2. คัดลอกคีย์ไปที่เครื่อง remote
a@A:~> ssh b@B mkdir -p .ssh
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
3. login เครื่อง remote ด้วยคำสั่ง
a@A:~> ssh b@B
ถ้าไม่ได้ผล อาจจะขึ้นอยู่กับเวอร์ชั่นของ SSH ด้วย ในบางระบบอาจจะต้องแก้ไข คือ
1. สร้างคีย์ที่เครื่อง local
a@A:~> ssh-keygen -t rsa
2. คัดลอกคีย์ไปที่เครื่อง remote
a@A:~> ssh b@B mkdir -p .ssh
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
3. login เครื่อง remote ด้วยคำสั่ง
a@A:~> ssh b@B
ถ้าไม่ได้ผล อาจจะขึ้นอยู่กับเวอร์ชั่นของ SSH ด้วย ในบางระบบอาจจะต้องแก้ไข คือ
- เพิ่มคีย์ใน .ssh/authorized_keys2 แทน
- เปลี่ยนโหมด .ssh เป็น 700
- เปลื่ยนโหมด .ssh/authorized_keys2 เป็น 640
Subscribe to:
Posts (Atom)