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