バックグラウンドでautosshが機能しない


12

autossh経由でトンネルを設定しました。

これは動作します:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

バックグラウンドでautosshを実行したいと思います。-fオプションを使用して簡単に思えます。

ただし、これは機能しません。

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Autosshはバックグラウンドで正常に実行されますが、ssh接続は毎回失敗するようです。/ var / syslogに次の複数の発生が表示されます。

autossh[3420]: ssh exited with error status 255; restarting ssh

私は何を間違えていますか?ワイルドな推測は、キーファイルを介した認証と関係があることです。これをデバッグするにはどうすればよいですか(sshオプションに-vを追加しても、どこにも記録されないようです)。

編集: -yオプションを使用していくつかのsshログを取得しました

/usr/bin/ssh[3484]: debug1: Next authentication method: publickey
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_rsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_dsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_ecdsa
/usr/bin/ssh[3484]: debug1: No more authentication methods to try.
/usr/bin/ssh[3484]: fatal: Permission denied (publickey).
autossh[3469]: ssh exited with error status 255; restarting ssh

そのため、autossh -i myIdFileは-fオプションを使用すると、識別ファイル()を受け入れないようです。何故ですか?

(Raspianのautossh 1.4c)


なぜautosshを使用するのですか?「失敗時の再起動」にsystemdを使用できます。:私は私の解決策と要旨を作成しgist.github.com/guettli/...
guettli

回答:


29

autosshがバックグラウンド(-fオプション)に落ちると、作業ディレクトリが変更されているように見えます。つまり、相対パスはもう機能しません。または、より具体的に:IDファイルの絶対パスを入力することによりおそらく成功します。

デフォルト以外の場所にパスワードなしのキーを作成して、シナリオを再作成しました。

~/$ mkdir test
~/$ cd test
~/test$ ssh-keygen -f test_id_rsa

Enterキーを2回押すだけで、パスワードで保護されていないキーが生成されます。

新しいキーをサーバーにコピーしました(現在パスワード認証が許可されています):

~/test$ ssh-copy-id -i test_id_rsa user@server

最初に、キーが通常のsshで機能していることを確認してから、次のようなautosshを使用しました。

~/test$ ssh -i test_id_rsa user@server
~/test$ autossh -M 13000 -N -i test_id_rsa user@server
^C

両方ともうまくいったので、私はあなたが持っていた問題を再現しました:

~/test$ autossh -f -M 13000 -N -i test_id_rsa user@server

これは機能せず、次のように書かれていました/var/log/syslog

autossh [2406]:sshはステータス255で途中で終了しました。autosshの終了

キーファイルのパスを絶対パスに変更することで、次のように機能しました。

~/test$ autossh -f -M 13000 -N -i /home/user/test/test_id_rsa user@server

にエラーはありません/var/log/syslog


素晴らしい、これは動作します。
henning77

あなたは私の一日を救った!
arno_v

2
-Nオプションは重要です。そうしないと、「ssh exited with status 0; autossh exiting」が表示されます。ありがとう!
user30747

確認され、私もちょうどそのような「id_rsaと」ファイルへのパスを追加する必要がありました:autossh -M 19001 -fn -y -i /home/pi/.ssh/id_rsa(感謝@jmidgren)
リッチ

4

-fで何が起こっているのかわかりませんが、次のようにもできます:

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 autossh@myhost.com &

nohupは、キーファイルを指定しなくても機能します。
バラジル

nohupまた、Alpine Linux で実行autosshするために働いたrunit
スチュアートCardall

0

次のパラメータをSSHに追加して、「接続を続行してもよろしいですか(はい/いいえ)?」をバイパスします。

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

最終コマンドは次の形式になります。

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

わたしにはできる。
bluebird_lboro

StrictHostKeyChecking=no既知の良い一時的なおもちゃに接続している場合を除き、有効にしないでください。
ドルフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.