ノートパソコンで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
エラーが発生します。
全体的に:sudo
ssh
他のマシンに渡す必要があるコマンドを渡し、コマンドを渡した直後に接続を「自動的に」閉じ、可能であればx分以内にコマンドを実行します。
答え1
可能な方法:
ssh -t myip 'sudo -b dnf upgrade -y >/tmp/aa 2>&1'
1>
切断と2>
リダイレクト時にタスクを実行しようとしています。- ジョブをバックグラウンドで実行するには、
sudo -b
このオプションを使用します。 - インタラクティブな機能
ssh
を提供したいですsudo
。ssh -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
- あなたはあなたの要件を満たす
- セッションを再接続します。
- 画面を学ぶ