Score:2

การเชื่อมต่อแบบย้อนกลับ SSH สามารถเปิดใช้งานและบำรุงรักษาบน Ubuntu ด้วย systemd ได้อย่างไร

ธง cn

แม่ของฉันมีแล็ปท็อปเล็ก ๆ น้อย ๆ ที่จำเป็นต้องเชื่อมต่อ SSH ย้อนกลับกับเซิร์ฟเวอร์ (ดังนั้นฉันจึงสามารถช่วยได้เมื่อจำเป็น)

ฉันกำลังดิ้นรนเพื่อให้การเชื่อมต่อคงอยู่เมื่อเริ่มต้นโดย ระบบ.

ใน /reverse_SSH.sh ฉันมีสิ่งนี้:

#!/bin/bash
ในขณะที่จริง; ทำ
    ssh -R 19123:localhost:22 [email protected]
    นอน1000
เสร็จแล้ว

ใน /etc/systemd/system/reverse_SSH.service ฉันมีสิ่งนี้:

[หน่วย]
Description=reverse-SSH

[บริการ]
ประเภท = ส้อม
ExecStart=/reverse_SSH.sh

[ติดตั้ง]
WantedBy=multi-user.target

เมื่อฉันวิ่ง sudo systemctl เริ่มต้น reverse_SSHดูเหมือนว่าการเชื่อมต่อ SSH จะเกิดขึ้น และ MOTD ของเซิร์ฟเวอร์สามารถเห็นได้ในเอาต์พุตของ sudo systemctl สถานะ reverse_SSHแต่ดูเหมือนว่าการเชื่อมต่อ SSH จะไม่คงอยู่ และฉันไม่สามารถเข้าถึงเครื่องบนเซิร์ฟเวอร์ด้วยคำสั่งเช่น ssh sonnyboy@localhost -p 19123.

ฉันทำผิดเรื่องไร้สาระอะไร ขอบคุณ!

Score:1
ธง cn

ฉันต้องการใช้ อัตโนมัติ แพ็คเกจสำหรับบริการดังกล่าว ก่อนอื่นให้ติดตั้ง:

อัปเดต sudo apt && sudo apt ติดตั้ง autossh

จากนั้นสร้างรายการการกำหนดค่าสำหรับการเชื่อมต่อของคุณ โดยสร้างไฟล์ใหม่ภายในไดเร็กทอรี /etc/ssh/ssh_config.d/. ขอเรียกมันว่า reverse.ssh.www.example.org.conf. นี่คือตัวอย่าง:

sudo nano /etc/ssh/ssh_config.d/reverse.ssh.www.example.org.conf
# ไฟล์นี้โหลดโดย /etc/ssh/ssh_config
โฮสต์ reverse.ssh.www.example.org
    ชื่อโฮสต์ www.example.org
    IdentityFile /root/.ssh/your_passles_id_rsa
    แม่ผู้ใช้
    พอร์ต 22
    RemoteForward 19123 127.0.0.1:22
    GatewayPort ใช่
    การบีบอัดใช่
  • โปรดทราบว่าคีย์ SSH เป็นของผู้ใช้รูทที่จะจัดการการเชื่อมต่อโดยบริการของเรา
  • ตัวเลือกสองตัวสุดท้ายไม่จำเป็น

ในที่สุดก็สร้างบริการ:

sudo nano /etc/systemd/system/reverse-autossh-www-example-org.service
[หน่วย]
Description=เปิดอุโมงค์ประจำที่ www.example.org ไว้
#หลังจาก=เครือข่าย.เป้าหมาย
After=network-online.target

[บริการ]
ผู้ใช้ = ราก
ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" reverse.ssh.www.example.org
ExecStop=/usr/bin/killall -s ฆ่า autossh
#ExecStop=/bin/kill $MAINPID
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที = 3
#สภาพแวดล้อม=AUTOSSH_GATETIME=0

[ติดตั้ง]
WantedBy=multi-user.target

เปิดใช้งานและเริ่มบริการ:

sudo systemctl daemon โหลดซ้ำ
sudo systemctl เปิดใช้งานการย้อนกลับ autossh-www-example-org.service
sudo systemctl start ย้อนกลับ autossh-www-example-org.service

ฉันใช้การกำหนดค่านี้เมื่อสองปีที่แล้วเพื่อแก้ปัญหาที่คล้ายกัน - มันใช้งานได้อย่างมีเสน่ห์ อย่างไรก็ตาม ต่อไปนี้เป็นข้อมูลอ้างอิงบางส่วน:

BlandCorporation avatar
cn flag
ขอบคุณมากสำหรับคำแนะนำของคุณที่นั่น อย่างไรก็ตาม เมื่อฉันพยายามเรียกใช้ ดูเหมือนว่าจะทำงานได้หลังจากที่ผู้ใช้เข้าสู่ระบบแล้วเท่านั้น คุณทราบหรือไม่ว่าวิธีการนี้สามารถทำงานได้เฉพาะตอนบูตเครื่องเท่านั้น และไม่ต้องการการโต้ตอบจากผู้ใช้ ฉันกำลังจินตนาการว่าตัวเองกำลังให้เครื่องรีบูทจากระยะไกล จากนั้นต้องการให้เครื่องสร้างการเชื่อมต่อ reverse-SSH ให้ฉันใหม่
pa4080 avatar
cn flag
สวัสดี @BlandCorporation เมื่อเปิดใช้งานบริการ บริการควรเริ่มต้นโดยอัตโนมัติระหว่างกระบวนการบู๊ต หลังจากตรงตามเงื่อนไขที่อธิบายไว้ในส่วนหน่วย ในกรณีของคุณ `User=root` หรือไม่ และมีระบบไฟล์เข้ารหัสบางประเภทหรือไม่?

โพสต์คำตอบ

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