SSHを介してsudoが必要なエイリアスをどのように転送しますか?

SSHを介してsudoが必要なエイリアスをどのように転送しますか?

ノートパソコンでSSH経由で自宅のコンピュータに安全に接続できるようにしました。今日はテストのためにアップデートを実行してみましたが、ラップトップでは実行できませんでした。

私が基本的にやろうとしているのは、接続をアクティブに保つのではなく、SSH経由でコンピュータにコマンドを渡すことです。何かが見つかるかどうかを調べるためにオンラインで検索してみましたが、何も機能しないようです。

私が試したコマンドは次のとおりです。

$ ssh myip 'sysupg &'
bash: sysupg: command not found
echo "mypassword" | ssh myip 'sudo -S dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required
echo "mypassword" | ssh myip 'sudo -S -k dnf upgrade -y &'
[sudo] password for myuser:
sudo: no password was provided
sudo: a password is required

私のパスワード()を尋ねると、[sudo] password for myuser:何も入力できず、続行して最後の2つのsudoエラーが発生します。

全体的に:sudossh他のマシンに渡す必要があるコマンドを渡し、コマンドを渡した直後に接続を「自動的に」閉じ、可能であればx分以内にコマンドを実行します。

答え1

可能な方法:

ssh -t myip 'sudo -b dnf upgrade -y >/tmp/aa 2>&1'
  • 1>切断と2>リダイレクト時にタスクを実行しようとしています。
  • ジョブをバックグラウンドで実行するには、sudo -bこのオプションを使用します。
  • インタラクティブな機能sshを提供したいですsudossh -t

可能だが推奨されない他の方法:

echo PASSWORD | ssh myip 'sudo -S -b dnf upgrade -y >/tmp/aa 2>&1'
  • sudo標準入力からパスワードを読むには、代わりにsudo -Sオプションを使用してください。ssh -t
  • コマンド履歴にプレーンテキストパスワードがあるのは間違っています。

このオプションは、バックグラウンドで実行するパスワードを求めるプロンプトを表示し、目的の唯一の操作ではないsudo -bため、そのオプションを見逃しました。&

また、損失1>または2>リダイレクトによってSSH接続が維持されます。

ただし、以下を使用するとPubkeyAuthentication安全なアプローチになります。

ssh root@myip 'dnf upgrade -y >/tmp/aa 2>&1 &'
  • 設定PermitRootLogin prohibit-passwordするsshd_conf
  • 公開鍵を次の場所にコピーします。/root/.ssh/authorized_keys
  • 秘密鍵のパスワードを常に保護して使用してください。ssh-agent

screenただし、最善の方法はサーバー側で使用することです。

ssh -t myip screen -RD
sudo -s
...whatever...
Ctrl-A d (detach and disconnect)

後でセッションを再接続します。

ssh -t myip screen -RD
  • あなたはあなたの要件を満たす
  • セッションを再接続します。
  • 画面を学ぶ

関連情報