web-dev-qa-db-ja.com

autosshは、起動に失敗したsystemdセットアップで期待どおりに機能します

そこで、〜/ .ssh/configでリバーストンネルを実行するようにssh変数を設定し、ホストtunnel_reverseを呼び出しました。次のコマンドをテストして、autosshを使用して永続的なトンネルを作成しましたが、期待どおりに機能しました。

    autossh -M 0 -N tunnel_reverse

リモートホストリバーストンネルが作成された後、ラップトップからリモートコンピューターに接続できました。ただし、systemdを使用して起動時に自動起動できるようにサービスファイルを設定しようとすると、機能しませんでした。これが私が作成した/etc/systemd/system/tunnel.serviceファイルです:

    [Unit]
    Description=AutoSSH to reverse tunnel
    After=network.target

    [Service]
    Environment="AUTOSSH_GATETIME=0"
    ExecStart=/usr/bin/autossh -M 0 -v -N tunnel_reverse

    [Install]
    WantedBy=multi-user.target

だから私はそれを始めました

    systemctl daemon-reload
    systemctl restart tunnel.service
    systemctl status tunnel.service

ステータスログを表示すると、次のようなエラーが発生しているようです。

    debug1: Server Host key: blah blah blah
    debug1: read_passpphrase: can't open /dev/tty: No such device or address
    Host key verification failed.
    ssh exited with error status 255; restarting ssh

どこで私は間違えましたか?

2
Geryon

Systemdによって開始されたsshセッションがパスワードを探しているようです。 autosshを手動で実行している場合は、公開鍵認証を使用し、公開鍵はこれを実行しているユーザーのホームディレクトリに保存されていると想定しています(〜/ .sshへの参照では、どのユーザーのホームディレクトリであるかはわかりません) )。 systemdによって実行されるautosshは、同じユーザーとして実行され、同じ.sshディレクトリにアクセスできる必要があります。そうでない場合、同じユーザー名とパスワードの組み合わせを使用できません。

Tunnel.serviceファイルのServiceセクションにUser=ディレクティブを追加することで、サービスを実行するユーザー名を指定できます。

1
Ektich