.ssh/id_dsa パスワードが必要な systemd サービス

.ssh/id_dsa パスワードが必要な systemd サービス

smd-loopセッションでプロセスを開始するsystemctlサービスがありますscreen。このプロセスにはリモートSSHソース(同期化目的)へのアクセスが必要なので、私の秘密鍵へid_dsaのアクセスが必要です。

正しく動作するようにシステムサービスを設定するには?次のサービスはプロセスを正しく開始しますが、screenセッションに接続してパスワードを手動で入力する必要がありますid_dsa

[Unit]
Description=smd loop
After=local-fs.target network.target

[Service]
User=%i
Group=users
Type=Forking
ExecStart=/usr/bin/screen -S smd-loop-win -md "smd-loop"
RemainAfterExit=yes

手動で起動すると、smd-loopログイン時にパスワードの保存を開始するモジュールをインストールしたため、パスワードは不要です。id_dsapam_sshssh-agent

ベストアンサー1

ログイン時にのみサービスを実行する必要がある場合は、ssh-agentセッションで開始したサービスに接続するようにしてください。最も簡単な方法は、プロキシソケットに固定パスを使用することです。システム操作SSH_AUTH_SOCKと.変数が環境に存在する場合、その変数に含まれるソケットパスが使用されます。その後、ログイン時に秘密鍵を実行すると、ジョブはそれを使用できます。/home/romeovs/.ssh/darkstar.agent.socket.profilessh-agentSSH_AUTH_SOCKssh-agentssh-add

このタスクを常に実行する必要がある場合は、この目的のために特定のパスワードのないキー()を生成し、制限を使用してssh-keygen -t rsa -f ~/.ssh/smd.id_rsa -N ''サーバーで特定のコマンドのみを実行することを承認することをお勧めします。command=from=~/.ssh/authorized_keysサーバー上のファイル。このfrom=オプションは、キーが特定のホストのログイン試行にのみ有効であることを示し、クライアントが指定したコマンドではなくcommand=実行するコマンドを指定します。

ssh-rsa AAAA…== romeovs@darkstar no-agent-forwarding no-port-forwarding no-x11-forwarding from="[email protected]" command="somecommand --foo"

このコマンドはログインシェルによって実行されます。コマンドに引数を渡す必要がある場合は、2つのオプションがあります。

  • クライアントが試みた元のコマンドはSSH_ORIGINAL_COMMAND環境変数にあります。解析を試している場合は、引用の問題に注意してください。
  • 一部の環境変数はクライアントによって渡されます。正確な設定は、サーバー構成(ファイルAcceptEnvのディレクティブsshd_config)によって異なります。

おすすめ記事