私のDigitalocean VPCへのリバースSSH接続を持つNATの後ろにPCがあります。私はこのリバースSSH接続を利用して自宅でオフィスPCにログインし(権限あり)、ファイルをコピーし、その他の重要な作業を行います。
一般的ではありませんが、オフィスPCが再起動し(停電などのため)、VPCへの逆SSH接続が失われることがわかりました。この場合、自宅のコンピュータからオフィスのコンピュータに接続できません。
次のスクリプトを実行してリバース接続+ダイナミックプロキシを実行して、自分のオフィスコンピュータが生成するトラフィックを匿名化します(検索情報を共有する必要がないため)。
autossh -CD 8080 -i digitalOcean -R 8081:localhost:22 root@IPofDigitalOceanPC
実際にはオフィスコンピュータにないため、再起動後にオフィスコンピュータでスクリプトを再実行することはできません。この問題を解決するために、次のcrontabをインストールしました。
注:rev.sh
ファイルには上記の行が含まれています。 "digitalOcean"証明書とrev.shはにありますUbuntu home
。したがって、./rev.sh
Ubuntu端末で実行すると、動的プロキシを取得し、ym DigitalOceanサーバーにもアクセスできます。この方法は100%効果的です。
しかし、次のようにchrontabをインストールすると、私のUbuntu PCは動的プロキシを生成しません。 Google Chromeでこのプロキシを確認すると、プロキシが接続を拒否したと表示されるため、これを確認できます。
以下はroot cronejobで試したcronejobです。私も通常のユーザーとしてこれを試しましたが、まだ動作しません。
@reboot bash /home/user/rev.sh
@reboot /home/user/rev.sh
@reboot cd /home/user && ./rev.sh
その後、現在の数分前にchrontabをインストールして実行するのを待ちました。
24 12 8 * * * bash /home/user/rev.sh
24 12 8 * * * /home/user/rev.sh
これらも実施されていない。
私のエラーを発見するために親切に助けてください。このサイトには私の問題に似た質問がたくさんあります。だから多くの答えを参考にしましたが、そのどれも役に立たないようです。
ベストアンサー1
cron
起動時にスクリプトを実行するのが良い考えなのかわかりません。私の考えにもっと適していると思われるもう1つのオプションは、以下のようにSystemDサービスを作成することです。ここ。次のファイルを作成します/etc/systemd/system/autossh.service
。
[Unit]
Description=Auto Reverse SSH
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service]
ExecStart=/full/path/to/autossh -CD 8080 -i digitalOcean -R 8081:localhost:22 root@IPofDigitalOceanPC
[Install]
WantedBy=multi-user.target
次に、rootとして次のコマンドを実行します。
systemctl enable autossh.service