การใช้งานคอมพิวเตอร์นั้นนอกจากจะมาที่เครื่องเพื่อควบคุมโดยตรงแล้วก็ยังสามารถเชื่อมต่อจากคอมเครื่องอื่นได้
การใช้คอมเครื่องนึงเชื่อมต่อไปเพื่อไปทำงานในคอมอีกเครื่องมีอยู่หลายวิธี ปัจจุบันที่นิยมใช้กันมากคือ
ssh (secure shell) มีความปลอดภัยสูง
เชื่อมต่อเข้าเซิร์ฟเวอร์ด้วยคำสั่ง ssh การใช้ ssh เพื่อเชื่อมต่อไปใช้ linux เครื่องเซิร์ฟเวอร์ทำได้โดยผ่านคอมมานด์ไลน์โดยใช้คำสั่ง ssh
ssh ชื่อผู้ใช้@urlเครื่องเซิร์ฟเวอร์
url เครื่อง อาจอยู่ในรูปแบบของที่อยู่ ip หรืออาจจะเป็นชื่อเว็บถ้าเราจะเชื่อมต่อเข้าเว็บที่ลงทะเบียนชื่อไว้
ตัวอย่างเช่น จะเชื่อมต่อเข้าไปยังเครื่องเซิร์ฟเวอร์ของเว็บนี้ hinaboshi.com ในฐานะผู้ใช้ชื่อ phyblas
ssh phyblas@hinaboshi.com
หรือพิมพ์ ip (เบอร์นี้แค่สมมุติขึ้นมามั่วๆเป็นตัวอย่างเฉยๆ)
ssh phyblas@111.111.55.55
แต่ถ้าชื่อผู้ใช้ในเครื่องเดิมเหมือนกับในเครื่องปลายทางจะไม่ต้องใส่ชื่อผู้ใช้ก็ได้ เขียนแค่
ssh urlเครื่องเซิร์ฟเวอร์
แบบนี้ก็ได้แล้ว
เช่นถ้าในเครื่องหลักเราชื่อผู้ใช้เป็น phyblas อยู่แล้ว จะเข้า hinaboshi.com ในฐานะ phyblas ก็แค่พิมพ์แบบนี้ได้เลย
ssh hinaboshi.com
เมื่อทำการเชื่อมต่อไป ในการเชื่อมต่อครั้งแรกอาจมีข้อความขึ้นว่า
The authenticity of host '(ชื่อและ ip ของเซิร์ฟเวอร์)' can't be established.
Are you sure you want to continue connecting (yes/no)?
แบบนี้ให้พิมพ์ yes ไปก็จะเชื่อมต่อได้สำเร็จ ชื่อและ ip เว็บจะถูกนำไปเก็บไว้ในไฟล์ ~/.ssh/known_hosts หลังจากนี้เชื่อมต่อครั้งต่อไปจะไม่มีการถามแบบนี้
เท่านี้หน้าจอเทอร์มินัลของเราก็จะเปลี่ยนมาเป็นการควบคุมเครื่องนั้น
หากต้องการออกให้กด ctrl+d หรือพิมพ์คำสั่ง
exit
ตั้ง ip ที่สามารถเชื่อมต่อเข้าได้ ถ้าหากไม่สามารถเชื่อมต่อได้ทั้งๆที่มี id ในเครื่องนั้นอยู่แล้วและก็ไม่ได้พิมพ์ผิดอะไร แล้วเน็ตก็ต่ออยู่ถูกต้อง แสดงว่าอาจเกิดจากการตั้งให้จำกัด ip ที่เชื่อมต่อเข้าไปได้
ให้ดูที่ไฟล์ /etc/hosts.deny ของเครื่องเซิร์ฟเวอร์ ถ้าหากมีเขียน
sshd:ALL
แบบนี้แสดงว่ามีการตั้งไม่ให้เชื่อมต่อจากที่ไหนเข้ามาก็ได้
ต้องไปดูที่ /etc/hosts.allow แล้วให้เติม ip ของเครื่องที่เราใช้อยู่ลงไป เช่น
sshd:123.456.78.90:allow
แบบนี้ก็จะสามารถเชื่อมต่อจาก ip นี้ได้
ทั้งไฟล์ hosts.deny และ hosts.allow จะแก้ได้เมื่อมีสิทธิ์ root เท่านั้น
เปิดหน้าต่าง GUI ผ่าน ssh ปกติเมื่อใช้ ssh เชื่อมต่อไปยังเครื่องเซิร์ฟเวอร์จะเป็นการใช้คอมมานด์ไลน์ควบคุม คือมีแต่ข้อมูลตัวหนังสือ แต่ถ้าใช้คำสั่งไหนที่ต้องมีการเปิดหน้าต่าง GUI (graphic user interface) ขึ้นมาก็จะเปิดไม่ได้
หากต้องการเปิด GUI ได้ เวลาใช้ ssh ให้เติมตัวเลือกเสริม -X หรือ -Y ลงไป (ตัวไหนก็ได้ คล้ายๆกัน มีผลต่างกันเล็กน้อยแต่ขอละไว้เพราะไม่สำคัญมาก)
ssh -X phyblas@hinaboshi.com
แบบนี้ถ้าสั่งเปิดหน้าต่างดูไฟล์ เช่นพิมพ์
nautilus .
แบบนี้ก็จะสามารถดูไฟล์ในเครื่องนั้นได้เหมือนกับกำลังดูไฟล์ในเครื่องตัวเองอยู่เลย
จะใช้ gedit เพื่อแก้ไขข้อความก็ได้ และโปรแกรมต่างๆอีกหลายอย่าง ใช้งานได้เกือบจะเหมือนกับกำลังเปิดใช้เครื่องนั้นโดยตรงเลย
การส่งคำสั่งไปยังเซิร์ฟเวอร์ คำสั่ง ssh นั้นนอกจากจะทำให้เราใช้คอมมานด์ไลน์เข้าไปควบคุมคอมอีกเครื่องได้แล้ว ยังสามารถแค่ส่งคำสั่งไปเฉยๆก็ได้ ทำได้โดยการพิมพ์คำสั่งลงไปต่อจากชื่อหรือ ip เซิร์ฟเวอร์ เช่น
ssh phyblas@hinaboshi.com ls -al
แบบนี้จะเป็นการสั่ง ls -al ที่เซิร์ฟเวอร์โดยที่เราไม่ต้องเข้าไปในเครื่องนั้น พอสั่งเสร็จคอมมานด์ไลน์ของเราก็ยังอยู่ที่เครื่องเดิม
จะสั่งหลายคำสั่งก็ได้ โดยใช้ ; กรณีนี้ต้องใส่เครื่องหมายคำพูด "" ล้อมคำสั่งไว้ด้วย
ssh phyblas@hinaboshi.com "ls -alh; pwd"
ปกติคำสั่งนั้นจะทำงานเหมือนกับเราล็อกอินเข้าไปแล้วสั่งคำสั่งนั้นทันที ดังนั้นจึงถูกทำที่ในตำแหน่งหลังจากที่ล็อกอินเข้าไป ถ้าหากต้องการทำในตำแหน่งที่ต้องการก็อาจนำด้วย cd เพื่อไปยังตำแหน่งที่ต้องการก่อนได้
ssh phyblas@hinaboshi.com "cd /bin; ls -lh"
หากต้องการนำไฟล์จากเครื่องที่ใช้อยู่ไปใช้เป็นค่าป้อนเข้าในเครื่องเซิร์ฟเวอร์ทำได้โดยใส่ < ต่อจากคำสั่ง
เช่นมีโค้ดไพธอนที่อยู่ในเครื่องนี้แต่ต้องการไปรันในเครื่องเซิร์ฟเวอร์ก็อาจทำแบบนี้
ssh phyblas@hinaboshi.com python < xxx.py
โค้ดนี้ก็จะถูกนำไปรันที่เซิร์ฟเวอร์ มีประโยชน์เวลาที่ต้องการใช้ทรัพยากรของอีกเครื่องเพื่อมารันโปรแกรมแทนเครื่องที่ใช้อยู่
ในทำนองเดียวกัน ถ้าทำแบบนี้ก็จะเป็นการคัดลอกไฟล์ไปยังเซิร์ฟเวอร์ได้
ssh phyblas@hinaboshi.com "cat > xxx.py" < xxx.py
การโอนถ่ายไฟล์ด้วย scp คำสั่ง ssh ทำให้เราสามารถเข้าไปควบคุมคอมอีกเครื่องได้ แต่ว่าการส่งไฟล์ข้ามไปมาระหว่างเครื่องจะทำได้โดยใช้คำสั่ง scp
หากต้องการส่งไฟล์จากเครื่องที่ใช้อยู่ไปยังเซิร์ฟเวอร์ให้พิมพ์
scp ไฟล์ในเครื่องนี้ เซิร์ฟเวอร์:ตำแหน่งที่ต้องการวาง
เช่น ส่งไฟล์ x1.py ไปยังโฟลเดอร์บ้านที่เซิร์ฟเวอร์
scp x1.py phyblas@hinaboshi.com:
การที่ไม่ได้ใส่อะไรหลัง : เลย หมายถึงว่าเป้าหมายอยู่ที่โฟลเดอร์บ้าน ถ้าใส่ ~/ ไปก็ไปที่โฟลเดอร์บ้านเหมือนก้น
จากนั้นก็จะต้องพิมพ์รหัสผ่านเช่นเดียวกับตอนใช้ ssh เสร็จแล้วไฟล์ก็จะถูกส่งไป
ถ้าต้องการส่งไฟล์จากเซิร์ฟเวอร์มายังเครื่องที่ใช้อยู่ก็แค่วางสลับกัน คือ
scp เซิร์ฟเวอร์:ไฟล์ในเซิร์ฟเวอร์ ตำแหน่งที่ต้องการวางในเครื่องนี้
เช่น ถ้าต้องการเอา x2.py จากในโฟลเดอร์บ้านในเซิร์ฟเวอร์มายังโฟลเดอร์ที่เราอยู่ตอนนี้ในเครื่องนี้
scp phyblas@hinaboshi.com:x2.py .
จะเห็นว่าการใช้จะคล้ายกับคำสั่ง cp เพียงแต่ว่าเป็นการส่งข้ามเครื่อง
กรณีที่ต้องการส่งโฟลเดอร์ก็เติมตัวเลือก -r ลงไป เช่นเดียวกับ cp
อ้างอิง