これを実行すると:
ssh user@server 'mysql -u user -p'
MySQLのパスワードを要求され、入力を開始すると、パスワードが画面に表示されます。どうすればこれを防ぐことができますか? ssh
からログインしてMySQLコマンドを実行すると、すべてが正常に動作します。
実行するリモートコマンドを指定した場合、SSHはttyを割り当てないため、リモートコマンドはエコーを無効にできません。 -t
オプションを使用して、SSHに強制的にttyを提供させることができます。
ssh -t user@server 'mysql -u user -p'
同等のオプション(-o
または構成ファイルの場合)はRequestTTY
です。 非対話型コマンドに望ましくない影響を与える可能性がある であるため、configでの使用には注意が必要です。
信頼できるなら [*] リモートコンピュータのセキュリティでは、適切に保護されたオプションファイルにパスワードを保存できます。これは、「 パスワードセキュリティのエンドユーザーガイドライン 」の章で推奨されています。手動で、ssh
を介して通信したり、毎回入力したりする必要はありません。
具体的には、ホームディレクトリの.my.cnf
ファイルの[client]セクションに行を追加できます。
[client]
password=your_pass
もちろん、ファイルアクセスモードを400または600に設定して、自分以外の誰もがそのファイルにアクセスできないようにする必要があります。
chmod 600 ~/.my.cnf
次に、次のようなものを使用できます
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
ここで、user110971
はアカウントのユーザー名です。
ssh -t
)この問題は、ssh
を介してコマンドを送信するたびに発生し、デフォルトではssh
は疑似ttyを割り当てないため、入力を挿入する必要があります。
オプション-t
を使用してtty割り当てを強制できます(必要な場合は複数でもかまいません)。
-t
Force pseudo-tty allocation。これは、リモートマシンで任意の画面ベースのプログラムを実行するために使用できます。メニューサービスを実装するとき。 sshにローカルttyがない場合でも、複数の
-t
オプションはttyの割り当てを強制します。
あなたが このDebian投稿(Jul_11_2008) について読むことができるように、Sudo
について、それは再発を好む古い問題です:
ssh user@server "Sudo ls" password: password
そしてパスワードが表示されます
解決策は、-tフラグを使用して、sshに疑似ttyを強制的に割り当てることです。
ssh -t user@server Sudo ls
[*]workingクライアントで、自分とrootだけがアクセスできるファイルにパスワードを残すことができる場合。
OSを変更するリモートコンピューターを再起動したり、HDDを削除したりできる場合、コンピューターは完全に安全であるとは言えません...しかし、その場合、データベース自体は安全ではありません。
Proc fsのマウントオプション「hidepid」も重要です。コマンドラインが他のユーザーのプロセスリストに表示されなくなります。 fstabの例:
proc /proc proc hidepid=1 0 0