web-dev-qa-db-ja.com

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

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

これは機能します:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 [email protected]

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

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

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 [email protected]

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

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

(Raspianではautossh 1.4c)

12
henning77

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にエラーはありません。

29
jmidgren

-fで何が起こっているのかわからないが、それをNohupすることもできます。

Nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 [email protected] &
4
Brian P

次のパラメータを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
0
vahid-dan