NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
TH

คำสั่ง Linux และทักษะเชลล์

ssh: การเชื่อมต่อที่เรียกใช้โครงสร้างพื้นฐานของคุณ

ssh ไม่ใช่ความสะดวกสบาย แต่เป็นการขนส่งทุกการดำเนินการบนทุกเซิร์ฟเวอร์ที่ใช้งานอยู่ และ ~/.ssh/config เป็นสัญญากับตัวตนในอนาคตของคุณในเวลา 03.00 น. นามแฝงของโฮสต์, รายการ IdentityFile, เป้าหมาย ProxyJump และการตั้งค่า Keepalive จะเปลี่ยนประโยคแฟล็กที่จดจำไว้เป็นคำสั่งแบบคำเดียว Tunnels (-L, -R, -D) และมัลติเพล็กซ์ของ ControlMaster คือสิ่งที่เปลี่ยน 'เชลล์' ให้เป็นพื้นผิวคำสั่งโครงสร้างพื้นฐาน และทั้งคู่เป็นงานไฟล์กำหนดค่า ไม่ใช่งานหน่วยความจำ

ประเด็นสำคัญ

  • ใส่ทุกอย่างใน ~/.ssh/config: Host aliases ด้วย User, IdentityFile, IdentitiesOnly yes และ ProxyJump ทำให้ 'ssh prod-web1' เป็นคำเดียว ประโยคแฟล็กที่พิมพ์เหมือนกันห้าครั้งต่อวันถือเป็นรายการการกำหนดค่าที่ขาดหายไป
  • คีย์เป็นเพียงเกมเดียว: ssh-keygen -t ed25519 -C 'role@team', ครึ่งสาธารณะถึงauthorized_keysและPasswordAuthentication noบนเซิร์ฟเวอร์เมื่อการหมุนได้รับการพิสูจน์แล้วว่าใช้งานได้จริง
  • โฮสต์ Jump ยุบเป็นแฟล็กเดียว: ssh -J bastion.corp Internal-host หรือ ProxyJump bastion.corp ในบล็อก Host คาถา ProxyCommand แบบเก่ายังคงใช้งานได้และไม่ใช่งานของใครอีกต่อไป
  • Tunnels มีวัตถุประสงค์เฉพาะ: -L 5432:db.internal:5432 เพื่อเข้าถึงฐานข้อมูล -D 1080 เป็น SOCKS shim ผ่านเครือข่ายที่เข้มงวด -R เพื่อแสดงกล่อง dev ในเครื่อง ซึ่งแต่ละอันเชื่อมโยงกับ localhost เว้นแต่คุณจะขยายอย่างชัดเจน
  • มัลติเพล็กซ์ของ ControlMaster (อัตโนมัติ ControlMaster, ControlPath ~/.ssh/cm-%r@%h:%p, ControlPersist 10m) หยุดการรันการจับมือกันใหม่ทุกครั้งที่เปิด และทำให้หลายหน้าต่างทำงานบนโฮสต์เดียวได้ทันที
  • Keepalives เก็บเซสชันผ่าน NAT และไฟร์วอลล์ที่ไม่ได้ใช้งาน: ServerAliveInterval 60 บวกกับฝั่งไคลเอ็นต์ ServerAliveCountMax 3 เต้นลึกลับ 'เซสชันเสียชีวิตในเวลา 4 นาที' รายงานเกือบตลอดเวลา
  • จำกัดการเข้าถึงที่เป็นอันตราย: -N (ไม่มีคำสั่งระยะไกล) สำหรับการส่งต่อพอร์ตล้วนๆ -n สำหรับงานแบตช์ที่อ่านจาก stdin และ failed2ban บวกกับ MaxAuthTries ที่มีสติ ดังนั้น bruteforce จึงตายในบันทึกแทนที่จะเป็นบัญชี
  • ลำดับการแก้ไขข้อบกพร่องมีความสำคัญ: ssh -vvv เผยการแยกวิเคราะห์การกำหนดค่า การเจรจาต่อรองการรับรองความถูกต้อง และความล้มเหลวของช่องสัญญาณตามลำดับนั้น และการถ่ายโอนข้อมูลโฮสต์ -G ตอบว่า 'เหตุใดจึงเลือกคีย์นั้นและผู้ใช้นั้น' โดยไม่ต้องแตะเซิร์ฟเวอร์

บันทึกจากหน้างาน

ครั้งหนึ่งฉันเคยปิดการใช้งาน PasswordAuthentication ก่อนที่รหัสใหม่จะอยู่ใน allowance_keys และล็อคทีมของฉันเองออกไปในช่วงเย็น พิธีกรรมตอนนี้: เปิดเซสชันที่สอง คีย์ได้รับการพิสูจน์แล้ว และ ServerAliveInterval ในการกำหนดค่า ดังนั้น NAT ของป้อมปราการที่ไม่ได้ใช้งานจึงหยุดการฆ่าเซสชัน

คำถามที่พบบ่อย

ในหนึ่งประโยคแต่ละประโยค: -L, -R, -D?

-L นำพอร์ตท้องถิ่นไปข้างหน้าไปยังบริการระยะไกล -R ผลักพอร์ตระยะไกลกลับไปที่เครื่องของคุณ (รู้ว่าคุณเปิดเผยอะไร) และ -D เปิดพร็อกซี SOCKS แบบไดนามิกผ่านการเชื่อมต่อ

เซสชันของฉันลดลงหลังจากไม่ได้ใช้งานไม่กี่นาที แก้ไข?

การหมดเวลาที่ไม่ได้ใช้งานบน NAT หรือไฟร์วอลล์เป็นสาเหตุปกติ: ตั้งค่า ServerAliveInterval บนไคลเอนต์ (และรักษา TCPKeepAlive มีสติบนเซิร์ฟเวอร์); การแก้ไขเดียวกันนี้อยู่ในการกำหนดค่าที่คุณใช้สำหรับการกระโดดป้อมปราการชั้นใต้ดิน

ssh-agent หรือคีย์ที่ไม่มีข้อความรหัสผ่าน?

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

ฉันจะหยุดพิมพ์ข้อกำหนดเฉพาะของทันเนลอีกครั้งได้อย่างไร

บรรทัด LocalForward และ RemoteForward ภายในบล็อกโฮสต์: 'ssh dbtunnel' จากนั้นจะทำสิ่งทั้งหมด หนึ่งรายการต่อวัตถุประสงค์ช่วยให้ไฟล์สามารถอ่านได้และให้การตรวจสอบเห็นว่าใครส่งต่ออะไร

Kinetikatech ช่วยเรื่อง คำสั่ง linux และทักษะเชลล์ ได้อย่างไร

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

คุยกับช่างเทคนิค

เซิร์ฟเวอร์มีปัญหา? เว็บถูกแฮก? โหลดช้า?

ตอบสนองเหตุกรณ์ฉุกเฉินใน 30 นาที — ตลอด 24 ชั่วโมง ทุกวัน

ขอความช่วยเหลือฉุกเฉิน support@kinetikatech.com