Puncte:2

Cum poate fi lansată și menținută o conexiune SSH inversă pe boot Ubuntu cu systemd?

drapel cn

Mama mea are un mic laptop care are nevoie, atunci când pornește, să se conecteze SSH invers la un server (ca să pot ajuta atunci când este nevoie).

Mă străduiesc ca conexiunea să persistă atunci când este începută de systemd.

În /reverse_SSH.sh Am ceva de genul asta:

#!/bin/bash
în timp ce adevărat; do
    ssh -R 19123:localhost:22 [email protected]
    dormi 1000
Terminat

În /etc/systemd/system/reverse_SSH.service Am ceva de genul asta:

[Unitate]
Descriere=reverse-SSH

[Serviciu]
Tip=furcă
ExecStart=/reverse_SSH.sh

[Instalare]
WantedBy=multi-user.target

Când alerg sudo systemctl start reverse_SSH, conexiunea SSH pare să se întâmple, iar MOTD-ul serverului poate fi văzut în ieșirea lui sudo systemctl status reverse_SSH, dar conexiunea SSH nu pare să persistă și nu pot accesa mașina de pe server cu o comandă de genul ssh sonnyboy@localhost -p 19123.

Ce prostii greșesc? Mulțumiri!

Puncte:1
drapel cn

Aș prefera să folosesc autossh pachet pentru un astfel de serviciu. Deci mai întâi instalează-l:

sudo apt update && sudo apt install autossh

Apoi creați o intrare de configurare pentru conexiunea dvs., creând un fișier nou în director /etc/ssh/ssh_config.d/. Să-i spunem reverse.ssh.www.example.org.conf. Iată un exemplu:

sudo nano /etc/ssh/ssh_config.d/reverse.ssh.www.example.org.conf
# Acest fișier este încărcat de /etc/ssh/ssh_config
Gazdă inversă.ssh.www.example.org
    Nume gazdă www.example.org
    IdentityFile /root/.ssh/your_passles_id_rsa
    Mamă utilizator
    Portul 22
    RemoteForward 19123 127.0.0.1:22
    GatewayPorts da
    Compresia da
  • Rețineți că cheia SSH este posesia utilizatorului root care va gestiona conexiunea de către serviciul nostru.
  • Ultimele două opțiuni nu sunt obligatorii.

În sfârșit creați serviciul:

sudo nano /etc/systemd/system/reverse-autossh-www-example-org.service
[Unitate]
Description=Păstrează deschis un tunel rezident către www.example.org
#After=network.target
După=network-online.target

[Serviciu]
Utilizator=rădăcină
ExecStart=/usr/bin/autossh -M 0 -N -q -o „ServerAliveInterval 60” -o „ServerAliveCountMax 3” reverse.ssh.www.example.org
ExecStop=/usr/bin/killall -s KILL autossh
#ExecStop=/bin/kill $MAINPID
Restart=intotdeauna
RestartSec=3
#Environment=AUTOSSH_GATETIME=0

[Instalare]
WantedBy=multi-user.target

Activați și porniți serviciul:

sudo systemctl daemon-reload
sudo systemctl enable reverse-autossh-www-example-org.service
sudo systemctl start reverse-autossh-www-example-org.service

Am folosit această configurație în ultimii doi ani pentru a rezolva o sarcină similară - funcționează ca un farmec. Cu toate acestea, iată câteva referințe:

BlandCorporation avatar
drapel cn
Mulțumesc mult pentru sugestia ta acolo. Când încerc să-l rulez, totuși, pare să funcționeze numai după ce utilizatorul s-a conectat. Știți cum ar putea funcționa această abordare doar la pornire și nu necesită interacțiunea utilizatorului? Îmi imaginez că fac ca mașina să repornească de la distanță și apoi am nevoie de ea pentru a restabili conexiunea SSH inversă cu mine.
pa4080 avatar
drapel cn
Bună, @BlandCorporation, când un serviciu este activat, acesta ar trebui să pornească automat în timpul procesului de pornire, după ce sunt îndeplinite condițiile descrise în secțiunea unitate . În cazul dvs. particular, `User=root`? Și există un fel de sistem de fișiere criptat?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.