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つのことがあります。
クライアントコンピュータのコマンドラインにパスワードを入力するのではなく、対話型パスワードなしでリモートでログインするには、
~/.ssh/authorized_keys
atを使用します。[email protected]
また、cron やその他の手段でジョブを自動的に実行することもできます。/etc/sudoers
接続しているユーザーがrootとしてコマンドを実行できるように、リモートシステムで設定します74.11.11.11
。この場合:username
。
したがって、あなたの例では、/etc/sudoers
onを74.11.11.11
使用すると、ユーザーはパスワードがないかのようにusername
実行できます。mkdir
root
すでに試しても効果がない場合は、実行してくださいman sudoers
。
答え3
使用しないという提案に加えて、sshpass
コマンドラインから「隠す」も可能です。
- そこで編集して
/etc/profile
貼り付けてください。export SSHPASS='my_pass_here'
-e
sshpass
コマンドでパラメータを使用する$ sshpass -e ssh [email protected] 'ls -ll'
- 別のオプションは、パスワードを別のファイルに保存し、パラメータを使用することです
-f
。$ sshpass -f password_filename ssh [email protected] 'ls -la'
通常、sshpassをパスワードと一緒に使用しないでください。
生成されたSSHキーを簡単に設定して操作を実行してから削除できます。