Android

การใช้ไฟล์ ssh config

เวก้าผับ ฉบับพิเศษ

เวก้าผับ ฉบับพิเศษ

สารบัญ:

Anonim

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

คำแนะนำนี้ครอบคลุมพื้นฐานของไฟล์กำหนดค่าไคลเอ็นต์ SSH และอธิบายตัวเลือกการกำหนดค่าทั่วไปบางอย่าง

ข้อกำหนดเบื้องต้น

เรากำลังสมมติว่าคุณใช้ Linux หรือระบบ macOS ที่ติดตั้งไคลเอนต์ OpenSSH

ตำแหน่งไฟล์ SSH Config

ไฟล์คอนฟิกูเรชันฝั่งไคลเอ็นต์ OpenSSH ชื่อ config และจะถูกเก็บไว้ในไดเร็กทอรี .ssh ภายใต้โฮมไดเร็กทอรีของผู้ใช้

ไดเร็กทอรี ~/.ssh ถูกสร้างขึ้นโดยอัตโนมัติเมื่อผู้ใช้รันคำสั่ง ssh เป็นครั้งแรก หากไม่มีไดเรกทอรีในระบบของคุณให้สร้างโดยใช้คำสั่งด้านล่าง:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

โดยค่าเริ่มต้นไฟล์การกำหนดค่า SSH อาจไม่มีอยู่ดังนั้นคุณอาจต้องสร้างมันขึ้นมาโดยใช้คำสั่ง touch:

touch ~/.ssh/config

ไฟล์นี้จะต้องสามารถอ่านและเขียนได้โดยผู้ใช้เท่านั้นและไม่สามารถเข้าถึงได้โดยผู้อื่น:

chmod 600 ~/.ssh/config

โครงสร้างไฟล์ SSH Config และรูปแบบ

ไฟล์กำหนดค่า SSH ใช้โครงสร้างต่อไปนี้:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

เนื้อหาของไฟล์กำหนดค่าไคลเอ็นต์ SSH ถูกจัดระเบียบเป็น stanzas (ส่วน) แต่ละ stanza เริ่มต้นด้วยคำสั่ง Host และมีตัวเลือก SSH เฉพาะที่ใช้เมื่อสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ SSH ระยะไกล

ไม่จำเป็นต้องมีการเยื้อง แต่แนะนำให้ทำเพราะทำให้อ่านไฟล์ได้ง่ายขึ้น

คำสั่ง Host สามารถมีหนึ่งรูปแบบหรือรายการของรูปแบบที่คั่นด้วยช่องว่าง แต่ละรูปแบบสามารถมีอักขระที่ไม่ใช่ช่องว่างหรือมากกว่าหรือหนึ่งในตัวระบุรูปแบบต่อไปนี้:

  • * - จับคู่อักขระศูนย์หรือมากกว่า ตัวอย่างเช่น Host * ตรงกับโฮสต์ทั้งหมดในขณะที่ 192.168.0.* ตรงกับโฮสต์ในเครือข่ายย่อย 192.168.0.0/24 ? - ตรงกับตัวละครตัวหนึ่ง รูปแบบ Host 10.10.0.? ตรงกับโฮสต์ทั้งหมดใน 10.10.0. พิสัย. ! - เมื่อใช้ในช่วงเริ่มต้นของรูปแบบ ตัวอย่างเช่น Host 10.10.0.* !10.10.0.5 ตรงกับโฮสต์ใด ๆ ในซับเน็ต 10.10.0.5 ยกเว้น 10.10.0.5

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

คุณสามารถค้นหารายการทั้งหมดของตัวเลือก ssh ที่มีอยู่โดยพิมพ์ man ssh_config ในเทอร์มินัลของคุณหรือไปที่หน้า man ssh_config

ไฟล์กำหนดค่า SSH ยังอ่านได้จากโปรแกรมอื่นเช่น scp , sftp และ rsync

ตัวอย่างไฟล์ SSH Config

ตอนนี้เราได้พูดถึงพื้นฐานของไฟล์กำหนดค่า SSH แล้วลองดูตัวอย่างต่อไปนี้

โดยทั่วไปเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่าน SSH คุณจะต้องระบุชื่อผู้ใช้ระยะไกลชื่อโฮสต์และพอร์ต ตัวอย่างเช่นในการเข้าสู่ระบบในฐานะผู้ใช้ชื่อ john ไปยังโฮสต์ชื่อ dev.example.com บนพอร์ต 2322 จากบรรทัดคำสั่งคุณจะต้องพิมพ์:

ssh [email protected] -p 2322

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

~ /.ssh / config

Host dev HostName dev.example.com User john Port 2322

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

ssh dev

ตัวอย่างไฟล์การกำหนดค่า SSH ที่แชร์

ตัวอย่างนี้ให้ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับรูปแบบโฮสต์และลำดับความสำคัญของตัวเลือก

ลองดูไฟล์ตัวอย่างต่อไปนี้:

Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes

  • เมื่อคุณพิมพ์ ssh targaryen ไคลเอ็นต์ ssh จะอ่านไฟล์และใช้ตัวเลือกจากการจับคู่ครั้งแรกซึ่งเป็น Host targaryen จากนั้นจะตรวจสอบ stanzas ถัดไปทีละตัวเพื่อหารูปแบบการจับคู่ อันถัดไปคือ Host * !martell (หมายถึงโฮสต์ทั้งหมดยกเว้น martell ) และจะใช้ตัวเลือกการเชื่อมต่อจาก martell นี้ คำจำกัดความ Host * สุดท้ายยังจับคู่ แต่ไคลเอ็นต์ ssh จะใช้เฉพาะตัวเลือกการ Compression เนื่องจากตัวเลือก User ถูกกำหนดไว้แล้วใน Host targaryen เป้าหมาย

    รายการตัวเลือกทั้งหมดที่ใช้เมื่อคุณพิมพ์ ssh targaryen มีดังนี้:

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    เมื่อรัน ssh tyrell รูปแบบโฮสต์ที่ตรงกันคือ: Host tyrell , Host *ell , Host * !martell และ Host * ตัวเลือกที่ใช้ในกรณีนี้คือ:

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    สำหรับการเชื่อมต่ออื่น ๆ ไคลเอ็นต์ ssh จะใช้ตัวเลือกที่ระบุในส่วน Host * !martell และ Host *

แทนที่ตัวเลือกไฟล์กำหนดค่า SSH

ไคลเอ็นต์ ssh อ่านการกำหนดค่าตามลำดับความสำคัญดังต่อไปนี้:

  1. ตัวเลือกที่ระบุจากบรรทัดคำสั่งตัวเลือกที่กำหนดใน ~/.ssh/config .Options ที่กำหนดไว้ใน /etc/ssh/ssh_config

Host dev HostName dev.example.com User john Port 2322

และคุณต้องการใช้ตัวเลือกอื่น ๆ ทั้งหมด แต่เพื่อเชื่อมต่อในฐานะผู้ใช้ root แทนที่จะเป็น john เพียงระบุผู้ใช้ในบรรทัดคำสั่ง:

ssh -o "User=root" dev

อ็อพชัน -F ( configfile ) อนุญาตให้คุณระบุไฟล์คอนฟิกูเรชันต่อผู้ใช้ทางเลือก

ในการบอกไคลเอ็นต์ ssh ให้เพิกเฉยตัวเลือกทั้งหมดที่ระบุในไฟล์กำหนดค่า ssh ให้ใช้:

ssh -F /dev/null [email protected]

ข้อสรุป

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

โดยค่าเริ่มต้น SSH จะฟังพอร์ต 22 การเปลี่ยนพอร์ต SSH เริ่มต้นจะเพิ่มความปลอดภัยให้กับเซิร์ฟเวอร์ของคุณโดยลดความเสี่ยงของการโจมตีโดยอัตโนมัติ

ssh terminal