そこで、〜/ .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
どこで私は間違えましたか?
Systemdによって開始されたsshセッションがパスワードを探しているようです。 autosshを手動で実行している場合は、公開鍵認証を使用し、公開鍵はこれを実行しているユーザーのホームディレクトリに保存されていると想定しています(〜/ .sshへの参照では、どのユーザーのホームディレクトリであるかはわかりません) )。 systemdによって実行されるautosshは、同じユーザーとして実行され、同じ.sshディレクトリにアクセスできる必要があります。そうでない場合、同じユーザー名とパスワードの組み合わせを使用できません。
Tunnel.serviceファイルのService
セクションにUser=
ディレクティブを追加することで、サービスを実行するユーザー名を指定できます。