จะเปิดอุโมงค์ SSH อย่างน่าเชื่อถือได้อย่างไร


234

ฉันใช้อุโมงค์ SSH จากที่ทำงานเพื่อไปรอบ ๆ ไฟร์วอลล์ที่แปลกใหม่ (มันโอเคกับเจ้านายของฉัน :)) ปัญหาคือหลังจากที่ในขณะที่การเชื่อมต่อ ssh มักจะแขวนและอุโมงค์เสีย

หากอย่างน้อยฉันสามารถตรวจสอบอุโมงค์โดยอัตโนมัติฉันสามารถเริ่มอุโมงค์ใหม่ได้เมื่อแฮงค์ แต่ฉันไม่ได้คิดวิธีการทำเช่นนั้น

คะแนนโบนัสสำหรับผู้ที่สามารถบอกวิธีป้องกันการเชื่อมต่อ ssh ของฉันไม่ได้แน่นอน!


มันเป็นอุโมงค์ของคุณตายเพราะไม่มีการใช้งาน? ฉันมีปัญหานี้เมื่ออุโมงค์พอร์ตจากโทรศัพท์ของฉันดังนั้นฉันที่สุดก็จบวางไข่คำสั่งหุ่นในการเชื่อมต่อที่จะทำให้มัน "ชีวิต" โดยใช้คำสั่งที่ชอบ:watch watch -n1 60 echo "wiiiii"อุโมงค์จะไม่ตายหากเครือข่ายขาดหรือคุณไม่ได้ใช้
erm3nda

1
ที่เกี่ยวข้อง: unix.stackexchange.com/q/200239
sampablokuper

คำตอบ:


280

เสียงเหมือนคุณต้องautossh นี่จะมอนิเตอร์อุโมงค์ ssh และรีสตาร์ทตามต้องการ เราใช้มันมาสองสามปีและดูเหมือนว่าจะทำงานได้ดี

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

รายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์ -M ที่นี่


2
+1 สำหรับการรอรับอัตโนมัติจะทำตามที่ระบุไว้บนกระป๋อง ฉันเชื่อว่าส่วนหนึ่งของการทำงานของมันก็คือการส่งแพ็กเก็ตสไตล์การรักษาเพื่อป้องกันการหมดเวลาใด ๆ
Akent

30
คุณสามารถวางอุโมงค์ตัวอย่างautosshไว้ในคำตอบได้ไหม?
Ehtesh Choudhury

5
autossh -f -nNT -i ~/keypair.pem -R 2000:localhost:22 username@myoutsidebox.com คุณอาจสังเกตเห็นว่าฉันตั้งค่านี้โดยใช้ -nNT ซึ่งไม่ได้สร้างรีโมตเทอร์มินัลเพื่อให้ฉันสามารถใส่ autossh ในพื้นหลังและตัวเลือก -i สำหรับ SSH เพื่อใช้ไฟล์. pem หากคุณกำลังจะเปิดการเชื่อมต่ออยู่ตลอดเวลาฉันขอแนะนำให้ทำการตั้งค่าเพิ่มเติมอย่างแน่นอน
juckele

2
สำหรับสิ่งที่คุ้มค่าดูเหมือนว่าโดยทั่วไปแล้วเราควรละเว้น-Mพารามิเตอร์: bugs.debian.org/cgi-bin/bugreport.cgi?bug=351162
rinogo

2
ฉันทำเช่นนี้เพื่อให้ลองใหม่เมื่อมีการเปลี่ยนแปลงเครือข่ายทำงานได้ดีสำหรับฉัน: autossh -M 0 -o "ServerAliveInterval 10" -o "ServerAliveCountMax 2" -L 9999: localhost: 19999 server@example.com
Luke Stanley

39

ไฟร์วอลล์ stateful ทั้งหมดลืมเกี่ยวกับการเชื่อมต่อหลังจากไม่เห็นแพ็กเก็ตสำหรับการเชื่อมต่อนั้นเป็นระยะเวลาหนึ่ง (เพื่อป้องกันไม่ให้ตารางสถานะเต็มไปด้วยการเชื่อมต่อที่ปลายทั้งสองตายโดยไม่ต้องปิดการเชื่อมต่อ) การใช้งาน TCP ส่วนใหญ่จะส่งแพ็คเก็ต keepalive หลังจากเวลานานโดยไม่ต้องรับฟังจากอีกด้านหนึ่ง (2 ชั่วโมงเป็นค่าทั่วไป) อย่างไรก็ตามหากมีไฟร์วอลล์ stateful ที่ลืมเกี่ยวกับการเชื่อมต่อก่อนที่จะส่งแพ็กเก็ต keepalive การเชื่อมต่อที่ยาวนาน แต่ว่างจะตาย

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


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

ขอบคุณสิ่งนี้ช่วยได้ แต่โปรดทราบ (จากคำตอบที่มีอันดับต่ำกว่าที่นี่superuser.com/a/146641/115515 ) ว่าถ้าคุณระบุ ServerAliveInterval ไม่ใช่ ServerAliveCountMax คุณอาจพบว่า ssh ตั้งใจตัดการเชื่อมต่อเร็วกว่าที่คุณต้องการ
metamatt

4
@metamatt คำตอบที่คุณได้รับการจัดอันดับต่ำกว่านั้นได้รับการจัดอันดับต่ำกว่าด้วยเหตุผลที่ดี: มันผิดพลาด
Lambart

24

ในเครื่อง mac หรือ linux ของคุณกำหนดค่า ssh ของคุณให้เซิร์ฟเวอร์ ssh ยังมีชีวิตอยู่ทุก ๆ 3 นาที เปิดเทอร์มินัลแล้วไปซ่อนตัว. .shsh ที่บ้านของคุณ:

cd ~/.ssh/ 

จากนั้นสร้างไฟล์กำหนดค่า 1 บรรทัดด้วย:

echo "ServerAliveInterval 180" >> config

คุณควรเพิ่ม:

ServerAliveCountMax xxxx (high number)

ค่าเริ่มต้นคือ 3 ดังนั้น ServerAliveInterval 180 จะหยุดส่งหลังจาก 9 นาที (3 ของช่วงเวลา 3 นาทีที่ระบุโดย ServerAliveInterval)


2
โปรดทราบว่าไม่แนะนำให้ใช้คำสั่งของคุณหากคุณมีไฟล์ปรับแต่งแล้ว การใช้ >> สำหรับการเปลี่ยนเส้นทางจะดีขึ้นมาก!
Peltier

ทำไมServerAliveInterval 180ให้เวลาเรา 6 นาที ปรีชาทำให้ฉันลองทำสิ่งนี้: 180/60 == 3. ดังนั้นจะServerAliveIntervalทำงานเป็นทวีคูณ 30 วินาทีหรือไม่
nemesisfixx

@mcnemesis: ServerAliveInterval 180 หมายถึง 3 นาที ServerAliveCountMax ดีฟอลต์คือ 3 หมายถึง 3 ของช่วงเวลาเหล่านั้นดังนั้น 9 นาที
metamatt

2
ฉันลงคะแนนคำตอบนี้เพราะขอบคุณสำหรับการกล่าวถึง ServerAliveCountMax และจะเกิดอะไรขึ้นหากคุณระบุ ServerAliveInterval โดยไม่มี ServerAliveCountMax แต่เช่นเดียวกับความคิดเห็นก่อนหน้านี้ฉันสังเกตเห็นว่าการคำนวณใน "จะหยุดส่งหลังจาก" ผิดและฉันคิดว่าคำตอบนี้จะให้บริการที่ดีขึ้นหากเพียงให้ข้อมูลเกี่ยวกับตัวเลือกเหล่านี้โดยไม่บอกเราว่าจะใช้อย่างไร .
metamatt

20
Downvoting เนื่องจากไม่เหมาะสมที่จะตั้ง ServerAliveCountMax เป็น "high number" ServerAliveCountMax ระบุจำนวนครั้งที่จะพยายามส่งข้อความ "keepalive" ก่อนที่จะยอมแพ้ ค่าเริ่มต้นคือ 3 ดังนั้นด้วย ServerAliveInterval 180 มันจะหยุดส่งหากเซิร์ฟเวอร์ไม่ตอบสนองหลังจากผ่านไป 9 นาทีซึ่งในกรณีนี้การเชื่อมต่อของคุณอาจจะดีและตายอย่างแท้จริง
Lambart

22

ฉันใช้สคริปต์ Bash ต่อไปนี้เพื่อให้เกิดการสร้างอุโมงค์ ssh ใหม่เมื่อหนึ่งก่อนหน้านี้ตาย การใช้สคริปต์มีประโยชน์เมื่อคุณไม่ต้องการหรือไม่สามารถติดตั้งแพ็คเกจเพิ่มเติมหรือใช้คอมไพเลอร์

while true
do
  ssh <ssh_options> [user@]hostname
  sleep 15
done

โปรดทราบว่านี่ต้องใช้คีย์ไฟล์เพื่อสร้างการเชื่อมต่อโดยอัตโนมัติ แต่ก็เป็นกรณีที่มี autossh ด้วยเช่นกัน


2
คุณควรเพิ่มเหตุผลใด ๆ ที่คุณใช้สคริปต์นี้ในการรอรับอัตโนมัติหรือเป็นเพราะวิธีนี้ง่ายกว่าไหม
kyrias

4
สิ่งนี้จะไม่ช่วยถ้าตัว ssh ค้างหรือไม่
nafg

1
ช่วยถ้าคุณไม่สามารถติดตั้งสิ่งต่าง ๆ ในเซิร์ฟเวอร์ autossh ไม่ได้ติดตั้งมาล่วงหน้าและระบบราชการมันบางครั้งก็ป้านมาก
quarkex

ใช่ไม่ต้องการติดตั้งสิ่งต่าง ๆ ฉันใช้วิธีนี้มาเป็นปีแล้วเพราะเป็นวิธีเดียวที่จะทำให้เครื่องรีโมตสามารถเข้าถึงได้ (แม้แต่ตั้ง crontab ให้ทำงานเมื่อรีบู๊ต) มันไม่เคยล้มเหลวและที่สำคัญฉันรู้ว่าทำไมมันจะไม่ล้มเหลว
sudo

16

Systemd เหมาะอย่างยิ่งสำหรับสิ่งนี้

สร้างไฟล์บริการ/etc/systemd/system/sshtunnel.serviceที่มี:

[Unit]
Description=SSH Tunnel
After=network.target

[Service]
Restart=always
RestartSec=20
User=sshtunnel
ExecStart=/bin/ssh -NT -o ServerAliveInterval=60 -L 5900:localhost:5900 user@otherserver

[Install]
WantedBy=multi-user.target

(แก้ไขคำสั่ง ssh ให้เหมาะสม)

  • สิ่งนี้จะทำงานในฐานะผู้ใช้sshtunnelเพื่อให้แน่ใจว่าผู้ใช้นั้นมีอยู่ก่อน
  • ปัญหาsystemctl enable sshtunnelเพื่อกำหนดให้เริ่มในเวลาบูต
  • ปัญหาที่systemctl start sshtunnelจะเริ่มต้นทันที

อัปเดต ม.ค. 2018 : distros (เช่น Fedora 27) อาจใช้นโยบาย SELinux เพื่อป้องกันการใช้ SSH จาก systemd init ซึ่งในกรณีนี้จะต้องสร้างนโยบายที่กำหนดเองเพื่อให้ได้รับการยกเว้นที่จำเป็น


2
นี่ดูคล้ายกับส่วนสำคัญของฉัน: gist.github.com/guettli/…ข้อเสนอแนะยินดีต้อนรับ!
guettli

ยอดเยี่ยมสำหรับsystemdระบบ หากมีการใช้งานการRestart=on-failureฆ่าไคลเอ็นต์ SSH ด้วยตนเองจะไม่ส่งผลให้การรีสตาร์ทโดย systemd เป็นไคลเอ็นต์ SSH ด้วยการออกพร้อมความสำเร็จ
David Tonhofer

หากคุณต้องการที่จะเริ่มต้นจาก SSH (ทุบตี) สคริปต์ให้เป็นอาร์กิวเมนต์ExecStartตัวอย่างเช่นการสร้างsshรายการอาร์กิวเมนต์ทำตรวจสอบเบื้องต้น ฯลฯ exec /bin/ssh -N ...แล้วเรียกมันว่าจากสคริปต์เช่นดังนั้น นี่คือคำสั่งของฉัน: exec /bin/ssh -N -oExitOnForwardFailure=Yes -oTCPKeepAlive=no -oServerAliveInterval=5 -oServerAliveCountMax=6 -i "${LOCAL_PRIVATE_KEY}" -L "${TUNNEL_INLET}:${TUNNEL_OUTLET}" "${REMOTE_USER}@${REMOTE_MACHINE}"ที่ไหนTUNNEL_INLET="127.0.0.1:3307"และTUNNEL_OUTLET="127.0.0.1:3306"
David Tonhofer

10

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

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

สิ่งที่คุณต้องการคือ 1) เพื่อให้การเชื่อมต่อเปิดอยู่อย่างถาวรภายใต้สถานการณ์ปกติ 2) การตรวจพบความล้มเหลวในการเชื่อมต่อและด้านต้นทางเพื่อออกจากความล้มเหลวและ 3) สำหรับคำสั่ง ssh ที่จะออกใหม่ทุกครั้ง ออก (วิธีที่คุณทำนั้นขึ้นอยู่กับแพลตฟอร์มเป็นอย่างมากสคริปต์ "ในขณะที่จริง" ที่ Jawa แนะนำไว้เป็นวิธีหนึ่งใน OS XI จริง ๆ แล้วตั้งค่ารายการ launchd)


9

ใช้ServerAliveIntervalตัวเลือก SSH เสมอในกรณีที่ปัญหาเกี่ยวกับช่องสัญญาณถูกสร้างโดยเซสชัน NAT ที่หมดอายุ

ใช้วิธีการ respawning เสมอในกรณีที่การเชื่อมต่อล่มทั้งหมดคุณมีตัวเลือกอย่างน้อยสามตัวที่นี่:

  • โปรแกรม autossh
  • bash script ( while true do ssh ...; sleep 5; done) อย่าลบคำสั่ง sleep, sshอาจจะล้มเหลวอย่างรวดเร็วและคุณจะตอบสนองกระบวนการมากเกินไป
  • /etc/inittabหากต้องการเข้าถึงกล่องที่จัดส่งและติดตั้งในประเทศอื่นหลัง NAT โดยไม่ต้องส่งต่อพอร์ตไปยังกล่องคุณสามารถกำหนดค่าให้สร้างช่องสัญญาณ ssh กลับมาที่คุณ:

    tun1:2345:respawn:/usr/bin/ssh -i /path/to/rsaKey -f -N -o "ServerAliveInterval 180" -R 55002:localhost:22 user@publicip 'sleep 365d'
    
  • สคริปต์ upstart บน Ubuntu ซึ่ง/etc/inittabไม่สามารถใช้ได้:

    start on net-device-up IFACE=eth0
    stop on runlevel [01S6]
    respawn
    respawn limit 180 900
    exec ssh -i /path/to/rsaKey -N -o "ServerAliveInterval 180" -R 55002:localhost:22 user@publicip
    post-stop script
        sleep 5
    end script
    

หรือใช้ทั้งสองวิธีเสมอ


1
+1 สำหรับตัวเลือกแบบอินไลน์ในกรณีที่คุณไม่ต้องการใช้การเชื่อมต่อ SSH ทั้งหมดของคุณ
user1146334

คุณเขียน "ในกรณีที่การเชื่อมต่อลงไปทั้งหมด" ตอนนี้ฉันไม่เข้าใจปัญหาอะไรที่ autossh แก้ไขตัวเองและมันไม่อะไร ฉันคิดว่าแน่นอนว่ามันจะดูแลการเชื่อมต่อที่ขาดหายไปเช่นถอดสายเคเบิลออกเป็นเวลาสองสามชั่วโมง แต่อาจจะไม่?
Mads Skjern

6

ฉันแก้ไขปัญหานี้ด้วยสิ่งนี้:

แก้ไข

~/.ssh/config

และเพิ่ม

ServerAliveInterval 15
ServerAliveCountMax 4

ตามหน้า manสำหรับ ssh_config:

ServerAliveCountMax
         Sets the number of server alive messages (see below) which may be
         sent without ssh(1) receiving any messages back from the server.
         If this threshold is reached while server alive messages are
         being sent, ssh will disconnect from the server, terminating the
         session.  It is important to note that the use of server alive
         messages is very different from TCPKeepAlive (below).  The server
         alive messages are sent through the encrypted channel and there‐
         fore will not be spoofable.  The TCP keepalive option enabled by
         TCPKeepAlive is spoofable.  The server alive mechanism is valu‐
         able when the client or server depend on knowing when a connec‐
         tion has become inactive.

         The default value is 3.  If, for example, ServerAliveInterval
         (see below) is set to 15 and ServerAliveCountMax is left at the
         default, if the server becomes unresponsive, ssh will disconnect
         after approximately 45 seconds.  This option applies to protocol
         version 2 only.

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

ดูเหมือนว่าการปิงเซิร์ฟเวอร์บ่อยครั้งทุกๆ 15 วินาที
Lambart

@ แลมมาร์ท แต่หากการเชื่อมต่อนั้นไม่สม่ำเสมอและหยุดการเชื่อมต่อบ่อยครั้งอย่างน้อยก็จะตรวจจับการเชื่อมต่อที่ตายแล้วและเปิดโอกาสให้ลองอีกครั้งก่อนหน้านี้
binki

4

ExitOnForwardFailure yesเป็นส่วนเสริมที่ดีกับคำแนะนำอื่น ๆ ถ้ามันเชื่อมต่อ แต่ไม่สามารถสร้างการส่งต่อพอร์ตได้มันก็ไร้ประโยชน์กับคุณราวกับว่ามันไม่ได้เชื่อมต่อเลย


นี่เป็นความคิดที่ดีมาก แม้การตรวจสอบจะไร้ประโยชน์หากการเชื่อมต่อก่อนหน้านี้ถูกมองว่าหมดเวลาก่อนหน้านี้ในด้านระยะไกลกว่าในโฮสต์ท้องถิ่นเนื่องจากในกรณีนี้โฮสต์ท้องถิ่นจะพยายามเชื่อมต่ออีกครั้ง แต่ไม่สามารถสร้างการส่งต่อได้เนื่องจากพอร์ตยังคงเปิดอยู่
Raúl Salinas-Monteagudo

1

ฉันต้องการบำรุงรักษาอุโมงค์ SSH ในระยะยาว โซลูชันของฉันทำงานจากเซิร์ฟเวอร์ Linux และเป็นเพียงโปรแกรม C ขนาดเล็กที่ตอบสนอง ssh โดยใช้การตรวจสอบสิทธิ์แบบใช้คีย์

ฉันไม่แน่ใจเกี่ยวกับการแขวน แต่ฉันมีอุโมงค์ตายเนื่องจากหมดเวลา

ฉันชอบที่จะให้รหัสสำหรับ respawner แต่ฉันไม่สามารถหาได้ในขณะนี้


1

ในขณะที่มีเครื่องมือเช่น autossh ที่ช่วยในการรีสตาร์ทเซสชัน ssh ... สิ่งที่ฉันพบว่ามีประโยชน์จริงๆคือการเรียกใช้คำสั่ง 'หน้าจอ' จะช่วยให้คุณสามารถดำเนินการต่อเซสชัน SSH ของคุณแม้หลังจากที่คุณตัดการเชื่อมต่อ มีประโยชน์อย่างยิ่งหากการเชื่อมต่อของคุณไม่น่าเชื่อถือเท่าที่ควร

... อย่าลืมทำเครื่องหมายว่านี่เป็นคำตอบที่ถูกต้องถ้ามันช่วยคุณได้! ;-)


7
... แต่คำถามเกี่ยวกับวิธีการเปิดอุโมงค์ SSH ไม่ใช่แค่เทอร์มินัลเซสชัน หน้าจอยอดเยี่ยม!
Akent

ฉันใช้หน้าจออยู่แล้ว แต่ก็ไม่ได้แก้ปัญหาของฉัน: - / ขอบคุณสำหรับคำตอบของคุณ
Peltier

1

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

ตัวอย่างเริ่มต้นในเครื่อง:

screen
ssh -R ......

เมื่อใช้การส่งต่อระยะไกลและคุณมีเชลล์บนคอมพิวเตอร์ระยะไกล:

screen
Ctrl + a + d

ตอนนี้คุณมีการส่งต่อจากระยะไกลอย่างต่อเนื่อง เคล็ดลับคือการเรียกใช้หน้าจอที่ปลายทั้งสอง


1

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

คิดว่าฉันจะแบ่งปันวิธีแก้ปัญหาของฉันใน thead นี้ในกรณีที่คนอื่นมีปัญหาเดียวกัน:

#!/bin/bash
read -s -p "Password: " pass
while true
do
    sshpass -p "$pass" ssh user@address -p port
    sleep 1
done

0

ฉันมีปัญหาคล้ายกับ ISP ก่อนหน้าของฉัน สำหรับฉันมันเหมือนกันกับการเชื่อมต่อ TCP ใด ๆ การเยี่ยมชมเว็บไซต์หรือส่งอีเมล

วิธีแก้ไขคือกำหนดค่าการเชื่อมต่อ VPN ผ่าน UDP (ฉันใช้ OpenVPN) การเชื่อมต่อนี้มีความทนทานต่อสิ่งที่ทำให้เกิดการเชื่อมต่อ จากนั้นคุณสามารถเรียกใช้บริการใด ๆ ผ่านการเชื่อมต่อนี้

อาจยังมีปัญหาเกี่ยวกับการเชื่อมต่อ แต่เนื่องจากอุโมงค์จะทนต่อเซสชัน ssh ใด ๆ ได้มากขึ้นจะรู้สึกว่าการถือครองสั้น ๆ แทนที่จะถูกตัดการเชื่อมต่อ

ในการทำเช่นนี้คุณจะต้องใช้บริการ VPN ออนไลน์ซึ่งคุณสามารถตั้งค่าบนเซิร์ฟเวอร์ของคุณเอง


0

ตามที่autosshไม่เป็นไปตามความต้องการของเรา (มีข้อผิดพลาดหากไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ในครั้งแรก) เราได้เขียนแอปพลิเคชันทุบตีบริสุทธิ์: https://github.com/aktos-io/link- กับเซิร์ฟเวอร์

มันสร้างอุโมงค์ย้อนกลับสำหรับพอร์ต sshd (22) ของ NODE บนเซิร์ฟเวอร์โดยค่าเริ่มต้น หากคุณต้องการดำเนินการอื่น ๆ (เช่นการส่งต่อพอร์ตเพิ่มเติมการส่งอีเมลระหว่างการเชื่อมต่อ ฯลฯ ... ) คุณสามารถวางสคริปต์on-connectและon-disconnectโฟลเดอร์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.