วันจันทร์ที่ 20 ตุลาคม พ.ศ. 2557

OSX : ssh to remote host without password required and auto mount when login

Standard
     หลังจากที่ทำ network drive ผ่านทาง ssh ด้วย macfuse และ sshfs  มีความต้องการให้ mount drive อัตโนมัติหลังจากที่ login ซึ่งจะต้องทำ 2 อย่างคือ

  1. การสร้าง authorized keys จาก OSX แล้วไปเก็บใน remote server เพื่อเวลาที่จะ connect ไปแล้วไม่ต้องการให้ remote server ถามรหัสผ่าน
  2. script สำหรับตรวจสอบว่า OSX สามารถเชื่อมต่อกับ remote server ได้ และ mount drive



การสร้าง authorized keys
[ที่ local host]
     เปิด Terminal ที่เครื่อง OSX แล้วใส่คำสั่งเพื่อ gen key ของ ssh ฝั่ง OSX 
$cd ~/.ssh
$ssh-keygen -b 1024 -t rsa -f id_rsa -P ""
     หลังจากใส่คำสั่ง gen key  จะมีไฟล์ชื่อ id_rsa และ id_rsa.pub เกิดขึ้นมา

[ที่ remote host]
     ไปที่ ~/.ssh สร้างไฟล์ชื่อ authorized_keys
$cd ~/.ssh
$touch  authorized_keys
     จากนั้น copy key จากไฟล์  id_rsa.pub บนเครื่อง OSX (local) ที่ทำก่อนหน้านี้มาใส่ในไฟล์ authorized_keys

ssh ไม่ถามรหัสตอน login


สร้าง script สำหรับ login กัน

     script นี้คือจะลอง ping ดูก่อนว่าสามารถ ping remote host ได้หรือไม่ และถ้า ping ได้ก็ให้ mount drive ทันที

#!/bin/bash
remote_user=USER_NAME
remote_target=SERVER_IP
remote_path=SERVER_PATH
source_path=LOCAL_PATH
mount_name=MOUNT_NAME
count=$( ping -c 1 $remote_target | grep icmp* | wc -l )
if [ $count -eq 0 ]
then
echo "Can not ping server."
else
echo "Connecting sshfs..."
sshfs $remote_user@$remote_target:$remote_path $source_path -ocache=no -onolocalcaches -ovolname=$mount_name
fi


     หลังจากสร้าง script (อย่าลืม chmod 755 script) เสร็จแล้ว เปิด System Preferences > User & Groups > USER > Login Items แล้วเพิ่ม  script โดยการกดเครื่องหมาย  +


     ลอง restart เครื่องแล้ว login ดูครับ ถ้าไม่มีอะไรผิดพลาด OSX จะ mount drive ให้อัตโนมัติ



Ref :
http://coolestguidesontheplanet.com/make-passwordless-ssh-connection-osx-10-9-mavericks-linux/
http://www.yourownlinux.com/2013/10/bash-script-to-check-whether-a-host-is-up-or-down.html


Related Posts:

0 ความคิดเห็น:

แสดงความคิดเห็น