φυβλαςのβλογ
บล็อกของ phyblas



การใช้ ssh เพื่อเชื่อมต่อเข้า linux เครื่องเซอร์เวอร์
เขียนเมื่อ 2019/02/25 08:39
แก้ไขล่าสุด 2024/09/21 13:29
การใช้งานคอมพิวเตอร์นั้นนอกจากจะมาที่เครื่องเพื่อควบคุมโดยตรงแล้วก็ยังสามารถเชื่อมต่อจากคอมเครื่องอื่นได้

การใช้คอมเครื่องนึงเชื่อมต่อไปเพื่อไปทำงานในคอมอีกเครื่องมีอยู่หลายวิธี ปัจจุบันที่นิยมใช้กันมากคือ 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



อ้างอิง


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> shell

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
ภาษา javascript
ภาษา mongol
ภาษาศาสตร์
maya
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

ไทย

日本語

中文