suコマンド中に呼び出されたときにパスワードを隠す方法は?

suコマンド中に呼び出されたときにパスワードを隠す方法は?

suコマンドを使用したのは今回が初めてで、実際には端末にパスワードが表示され、隠されていません。私のコードスニペットは次のとおりです。

 sshpass -p "password" ssh -q [email protected] "su -lc 'mkdir temp/'"

コード説明:リモートサーバーにアクセスし、そのサーバーにrootとしてフォルダを作成しようとしています。これを行うには、パスワードを要求するsuコマンドを使用する必要があります。パスワードを入力すると、隠されずに表示されます。この問題をどのように解決できますか?

答え1

普段はお願いします避けるsshpassとパスワードを使用してください。
他のユーザーは、psコマンドを使用して作成したすべての内容を観察できます。しなければならないあなたを心配しています。
ここで2番目の質問です。指定した内容が表示されません。-ティーオプション。これはあなたが持っていることを意味します障害のある

Defaults    requiretty

これにより、/ etc / sudoersにセキュリティ上の問題が発生する可能性があります。

それでもsshkeypassに問題がある場合は、以下を試してください。

sshpass -p "password" ssh -qt [email protected] "su -lc 'mkdir temp/'"

生成されたSSHキーを簡単に設定して操作を実行してから削除できます。

ssh-keygen -t rsa

画面の指示に従い、

ssh-copy-id user@server1

またはこれを行うこともできます:

cat ~/.ssh/id_rsa.pub | ssh user@server1 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

答え2

これには2つのことがあります。

  1. クライアントコンピュータのコマンドラインにパスワードを入力するのではなく、対話型パスワードなしでリモートでログインするには、~/.ssh/authorized_keysatを使用します。[email protected]また、cron やその他の手段でジョブを自動的に実行することもできます。

  2. /etc/sudoers接続しているユーザーがrootとしてコマンドを実行できるように、リモートシステムで設定します74.11.11.11。この場合: username

したがって、あなたの例では、/etc/sudoersonを74.11.11.11使用すると、ユーザーはパスワードがないかのようにusername実行できます。mkdirroot

すでに試しても効果がない場合は、実行してくださいman sudoers

答え3

使用しないという提案に加えて、sshpassコマンドラインから「隠す」も可能です。

  • そこで編集して/etc/profile貼り付けてください。
    export SSHPASS='my_pass_here'
    
  • -esshpassコマンドでパラメータを使用する
    $ sshpass -e ssh [email protected] 'ls -ll' 
    
  • 別のオプションは、パスワードを別のファイルに保存し、パラメータを使用することです-f
    $ sshpass -f password_filename ssh [email protected] 'ls -la' 
    

しかし、最善の解決策は、次のことです。こんにちは 提案:

通常、sshpassをパスワードと一緒に使用しないでください。

生成されたSSHキーを簡単に設定して操作を実行してから削除できます。

関連情報