Android

คำสั่ง Ssh

A day with Scandale - Harmonie Collection - Spring / Summer 2013

A day with Scandale - Harmonie Collection - Spring / Summer 2013

สารบัญ:

Anonim

Secure Shell (SSH) เป็นโปรโตคอลเครือข่ายเข้ารหัสลับที่ใช้สำหรับการเชื่อมต่อที่เข้ารหัสระหว่างไคลเอนต์และเซิร์ฟเวอร์ ไคลเอ็นต์ ssh สร้างการเชื่อมต่อที่ปลอดภัยไปยังเซิร์ฟเวอร์ SSH บนเครื่องระยะไกล การเชื่อมต่อที่เข้ารหัสสามารถใช้เพื่อดำเนินการคำสั่งบนเซิร์ฟเวอร์การขุด X11 การส่งต่อพอร์ตและอื่น ๆ

มีลูกค้า SSH จำนวนมากที่มีทั้งฟรีและเชิงพาณิชย์โดย OpenSSH เป็นลูกค้าที่ใช้กันอย่างแพร่หลายที่สุด มันมีอยู่ในแพลตฟอร์มที่สำคัญทั้งหมดรวมถึง Linux, OpenBSD, Windows, macOS และอื่น ๆ

เราจะอธิบายวิธีใช้ไคลเอนต์บรรทัดคำสั่ง OpenSSH ( ssh ) เพื่อเข้าสู่เครื่องระยะไกลและเรียกใช้คำสั่งหรือดำเนินการอื่น ๆ

การติดตั้งไคลเอนต์ OpenSSH

โปรแกรมไคลเอนต์ OpenSSH เรียกว่า ssh และสามารถเรียกใช้จากเทอร์มินัล แพ็กเกจไคลเอ็นต์ OpenSSH ยังจัดเตรียมยูทิลีตี SSH อื่น ๆ เช่น scp และ sftp ที่ติดตั้งพร้อมกับคำสั่ง ssh

การติดตั้งไคลเอ็นต์ OpenSSH บน Linux

ไคลเอ็นต์ OpenSSH ได้รับการติดตั้งไว้ล่วงหน้าในลีนุกซ์รุ่นส่วนใหญ่เป็นค่าเริ่มต้น หากระบบของคุณไม่ได้ติดตั้งไคลเอ็นต์ ssh คุณสามารถติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจของการแจกจ่ายของคุณ

การติดตั้ง OpenSSH บน Ubuntu และ Debian

sudo apt update sudo apt install openssh-client

การติดตั้ง OpenSSH บน CentOS และ Fedora

sudo dnf install openssh-clients

การติดตั้งไคลเอ็นต์ OpenSSH บน Windows 10

ผู้ใช้ Windows ส่วนใหญ่ใช้ Putty เพื่อเชื่อมต่อกับเครื่องระยะไกลผ่าน SSH อย่างไรก็ตาม Windows 10 เวอร์ชันล่าสุดรวมถึงไคลเอนต์และเซิร์ฟเวอร์ OpenSSH แพ็คเกจทั้งสองสามารถติดตั้งผ่าน GUI หรือ PowerShell

ในการค้นหาชื่อที่แน่นอนของแพ็คเกจ OpenSSH ให้พิมพ์คำสั่งต่อไปนี้:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

คำสั่งควรส่งคืนสิ่งนี้:

Name: OpenSSH.Client~~~~0.0.1.0 State: NotPresent Name: OpenSSH.Server~~~~0.0.1.0 State: NotPresent

เมื่อคุณทราบชื่อแพคเกจติดตั้งโดยการเรียกใช้:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

ในความสำเร็จผลลัพธ์จะมีลักษณะดังนี้:

Path: Online: True RestartNeeded: False

การติดตั้ง OpenSSH Client บน macOS

macOS มาพร้อมกับไคลเอนต์ OpenSSH ที่ติดตั้งโดยค่าเริ่มต้น

วิธีการใช้คำสั่ง ssh

ต้องปฏิบัติตามข้อกำหนดต่อไปนี้เพื่อให้สามารถลงชื่อเข้าใช้เครื่องระยะไกลผ่าน SSH:

  • เซิร์ฟเวอร์ SSH ต้องทำงานบนเครื่องระยะไกลพอร์ต SSH ต้องเปิดในไฟร์วอลล์ของเครื่องระยะไกลคุณต้องทราบชื่อผู้ใช้และรหัสผ่านของบัญชีระยะไกล บัญชีต้องมีสิทธิ์ที่เหมาะสมสำหรับการเข้าสู่ระบบจากระยะไกล

ไวยากรณ์พื้นฐานของคำสั่ง ssh มีดังนี้:

ssh:HOST

ในการใช้คำสั่ง ssh ให้เปิด Terminal หรือ PowerShell ของคุณแล้วพิมพ์ ssh ตามด้วยชื่อโฮสต์ระยะไกล:

ssh ssh.linuxize.com

เมื่อคุณเชื่อมต่อกับเครื่องระยะไกลผ่าน SSH เป็นครั้งแรกคุณจะเห็นข้อความดังนี้

The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established. ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY. Are you sure you want to continue connecting (yes/no)?

แต่ละโฮสต์มีลายนิ้วมือที่ไม่ซ้ำกันซึ่งเก็บอยู่ในไฟล์ ~/.ssh/known_hosts

พิมพ์ yes เพื่อเก็บลายนิ้วมือจากระยะไกลและคุณจะได้รับแจ้งให้ป้อนรหัสผ่านของคุณ

Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts. [email protected]'s password:

เมื่อคุณป้อนรหัสผ่านคุณจะเข้าสู่เครื่องระยะไกล

เมื่อไม่ได้ระบุชื่อผู้ใช้คำสั่ง ssh จะใช้ชื่อล็อกอินระบบปัจจุบัน

ในการเข้าสู่ระบบในฐานะผู้ใช้อื่นให้ระบุชื่อผู้ใช้และโฮสต์ในรูปแบบต่อไปนี้:

ssh username@hostname

ชื่อผู้ใช้สามารถระบุได้ด้วยตัวเลือก -l :

ssh -l username hostname

ตามค่าเริ่มต้นเมื่อไม่มีการระบุพอร์ตไคลเอ็นต์ SSH จะพยายามเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลบนพอร์ต 22 ในบางเซิร์ฟเวอร์ผู้ดูแลระบบกำลังเปลี่ยนพอร์ต SSH เริ่มต้นเพื่อเพิ่มเลเยอร์ความปลอดภัยพิเศษให้กับเซิร์ฟเวอร์โดยลดความเสี่ยงของ การโจมตีอัตโนมัติ

ในการเชื่อมต่อกับพอร์ตที่ไม่ใช่ค่าเริ่มต้นให้ใช้ตัวเลือก -p เพื่อระบุพอร์ต:

ssh -p 5522 username@hostname

ssh -v username@hostname

หากต้องการเพิ่มระดับของ verbosity ให้ใช้ -vvv หรือ -vvv

คำสั่ง ssh ยอมรับจำนวนของตัวเลือก

สำหรับรายการตัวเลือกทั้งหมดให้อ่านหน้า man ssh โดยพิมพ์ man ssh ในเทอร์มินัลของคุณ

ไฟล์กำหนดค่า SSH

ไคลเอนต์ OpenSSH อ่านตัวเลือกที่ตั้งไว้ในไฟล์กำหนดค่าต่อผู้ใช้ ( ~/.ssh/config ) ในไฟล์นี้คุณสามารถเก็บตัวเลือก SSH ที่แตกต่างกันสำหรับเครื่องรีโมตแต่ละเครื่องที่คุณเชื่อมต่อ

ตัวอย่าง SSH config แสดงไว้ด้านล่าง:

Host dev HostName dev.linuxize.com User mike Port 4422

เมื่อคุณเรียกใช้ไคลเอ็นต์ ssh โดยพิมพ์ ssh dev คำสั่งจะอ่านไฟล์ ~/.ssh/config และใช้รายละเอียดการเชื่อมต่อที่ระบุไว้สำหรับโฮสต์ dev ในตัวอย่างนี้ ssh dev เทียบเท่ากับสิ่งต่อไปนี้:

ssh -p 4422 [email protected]

สำหรับข้อมูลเพิ่มเติมให้ตรวจสอบบทความในไฟล์กำหนดค่า SSH

การพิสูจน์ตัวตนกุญแจสาธารณะ

โปรโตคอล SSH สนับสนุนกลไกการรับรองความถูกต้องต่างๆ

กลไกการพิสูจน์ตัวตนแบบพับลิกคีย์อนุญาตให้คุณล็อกอินเข้าสู่รีโมตเซิร์ฟเวอร์โดยไม่ต้องพิมพ์รหัสผ่านของคุณ

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

ssh-keygen -t rsa -b 4096 -C "[email protected]"

คุณจะถูกขอให้พิมพ์ข้อความรหัสผ่านที่ปลอดภัย ไม่ว่าคุณต้องการใช้ข้อความรหัสผ่านมันขึ้นอยู่กับคุณ

เมื่อคุณมีคู่กุญแจของคุณให้คัดลอกกุญแจสาธารณะไปยังเซิร์ฟเวอร์ระยะไกล:

ssh-copy-id username@hostname

ป้อนรหัสผ่านผู้ใช้ระยะไกลและกุญแจสาธารณะจะถูกผนวกเข้ากับไฟล์ authorized_keys ผู้ใช้ระยะไกล

เมื่ออัปโหลดคีย์แล้วคุณสามารถเข้าสู่เซิร์ฟเวอร์ระยะไกลได้โดยไม่ต้องใส่รหัสผ่าน

ด้วยการตั้งค่าการพิสูจน์ตัวตนแบบใช้คีย์คุณสามารถทำให้กระบวนการล็อกอินง่ายขึ้นและเพิ่มความปลอดภัยเซิร์ฟเวอร์โดยรวม

การส่งต่อพอร์ต

SSH tunneling หรือการส่งต่อพอร์ต SSH เป็นวิธีการสร้างการเชื่อมต่อ SSH ที่เข้ารหัสระหว่างไคลเอนต์และเครื่องเซิร์ฟเวอร์ผ่านพอร์ตบริการที่สามารถถ่ายทอด

การส่งต่อ SSH มีประโยชน์สำหรับการถ่ายโอนข้อมูลเครือข่ายของบริการที่ใช้โปรโตคอลที่ไม่ได้เข้ารหัสเช่น VNC หรือ FTP การเข้าถึงเนื้อหาที่ถูก จำกัด ทางภูมิศาสตร์หรือการข้ามไฟร์วอลล์กลาง โดยทั่วไปคุณสามารถส่งต่อพอร์ต TCP ใด ๆ และสร้างอุโมงค์การรับส่งข้อมูลผ่านการเชื่อมต่อ SSH ที่ปลอดภัย

การส่งต่อพอร์ต SSH มีสามประเภท:

การส่งต่อพอร์ตท้องถิ่น

การส่งต่อพอร์ตท้องถิ่นช่วยให้คุณสามารถส่งต่อการเชื่อมต่อจากโฮสต์ไคลเอนต์ไปยังโฮสต์เซิร์ฟเวอร์ SSH แล้วไปยังพอร์ตโฮสต์ปลายทาง

ในการสร้างการส่งต่อพอร์ตโลคัลผ่านอ็อพชัน -L ไปยังไคลเอ็นต์ ssh :

ssh -L LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname

ตัวเลือก -f บอกให้คำสั่ง ssh ทำงานในพื้นหลังและ -N จะไม่ดำเนินการคำสั่งระยะไกล

การส่งต่อพอร์ตระยะไกล

การส่งต่อพอร์ตระยะไกลเป็นสิ่งที่ตรงกันข้ามกับการส่งต่อพอร์ตท้องถิ่น ส่งต่อพอร์ตจากโฮสต์เซิร์ฟเวอร์ไปยังโฮสต์ไคลเอ็นต์จากนั้นไปยังพอร์ตโฮสต์ปลายทาง

ตัวเลือก -L บอกให้ ssh สร้างการส่งต่อพอร์ตระยะไกล:

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname

การส่งต่อพอร์ตแบบไดนามิก

การส่งต่อพอร์ตแบบไดนามิกสร้างพร็อกซีเซิร์ฟเวอร์ SOCKS ที่อนุญาตการสื่อสารข้ามช่วงของพอร์ต

ในการสร้างการส่งต่อพอร์ตไดนามิก (SOCKS) ให้ส่งตัวเลือก -D ไปยังไคลเอ็นต์ ssh:

ssh -D LOCAL_PORT -N -f username@hostname

สำหรับข้อมูลรายละเอียดเพิ่มเติมและคำแนะนำทีละขั้นตอนให้ตรวจสอบบทความเกี่ยวกับวิธีตั้งค่า SSH Tunneling (การส่งต่อพอร์ต)

ข้อสรุป

ในการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่าน SSH ให้ใช้คำสั่ง ssh ตามด้วยชื่อผู้ใช้และชื่อโฮสต์ระยะไกล ( ssh username@hostname )

การรู้วิธีใช้คำสั่ง ssh เป็นสิ่งจำเป็นสำหรับการจัดการรีโมตเซิร์ฟเวอร์

ssh terminal