
ファイアウォールの背後にリモート マシンがあり、SSH 経由で接続したいと考えています。私の理解では、リバース SSH トンネルを使用することでこれを実現できます。
私が使用しているコマンドは
ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa.pub [email protected]
私の主な問題は、コンピュータが起動するたびにこのコマンドを実行して、再起動後にコンピュータにアクセスできるようにすることです。
ユーザーの crontab と の両方にコマンドを追加して cron を使用しようとしました/etc/cron
。ただし、問題は両方のコマンドでパスワードが要求されることです。the id_rsa.pub
ファイルを作成してリモート サーバーに送信しましたが、まだ機能していないようです。
ログインしている場合(たとえば、teamviewer 経由)はコマンドを実行でき、パスワードは要求されません。コマンドを root(sudo
)として実行すると、rsa ファイルの(空の)パスワードが要求されます。問題はここにあると思われます。つまり、cron がコマンド ssh を実行すると、パスワードが要求され、コマンドがハングします。
ユーザーの rsa ファイルとルートの rsa ファイルの両方を使用してみましたが、どちらでも接続できませんでした。
答え1
ssh コマンドの前に「sleep 60;」を追加するだけです。
@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa [email protected]
再起動後もネットワークはダウンしたままです。
答え2
複数のソースを組み合わせて、リバースSSHチャネルを自動起動するサービスを作成しました。設定ファイルと必要な手順は次のとおりです。 このリポジトリで
答え3
より良い解決策はオート:
「autossh は、ssh のコピーを起動して監視し、ssh が停止したりトラフィックの通過が停止した場合に必要に応じて再起動するプログラムです。」
引用文にあるように、これには「常時オン」機能を提供するという追加の利点があります。
答え4
SSHの問題の修正
リモートマシンを認証できません公共キーを使用するにはプライベートこれを行うには、公開鍵が必要です。公開鍵はリモート サーバーになければなりません。不明な場合は、次のようにして公開鍵をリモート サーバーにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver
次に、秘密鍵を使用してコマンドを実行します。
ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa [email protected]
起動時にこのコマンドを実行する
すでに crontab を使用しているので、crontab -e
実行して cron を編集します。コンピューターの起動時にそのコマンドを実行するには、次の行を追加します。
@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa [email protected]