2


以下に示すようにシェルスクリプトを作成しました。また、パスワードを非表示にする必要があります。パスワードは、スクリプトでプロンプトが表示されたときに表示されます。ローカル マシンで単一引用符内に記述された以下のスクリプトを実行すると、パスワードが非表示になります。しかし、SSH の部分を追加すると、うまくいきません。

パスワードを非表示にするにはどうすればよいですか?

ssh root@10.3.2.0 'echo -n Password:;
read -s password;
echo;
echo $password;
'
4

3 に答える 3

5

sshのオプションを使用して、-ttty 割り当てを強制してみてください。

ssh -t root@10.3.2.0 'echo -n Password:;
read -s password;
echo;
echo $password;'

編集: 提案された解決策の説明

ログインセッションを実行せず、代わりにコマンドのみを実行する場合、デフォルトでは、SSH は実行中のプロセスに疑似端末デバイスを割り当てません。この動作はすべてがバグというわけではありませんが、設計によって意図的に選択されています。

このようにして、異なるマシン間でバイナリ データを解釈せずに渡すことができます。たぶん次のようなもの:

ssh whoever@wherever 'cat remote_file' | local_program

このように 2 台のマシン間でデータを渡すことは、間にあるターミナル ドライバーによってデータがフィルター処理されている場合、ほとんど不可能です。気にしなければならない大量のエスケープ シーケンスを考えてみてください。

端末が割り当てられていないと、ユーザー入力を隠す方法はありません。stty something端末がまったくないため、試みは失敗します。

ログインセッションで実行されていない場合でも ssh に疑似端末を割り当てるには、-tパラメーターを渡して tty 割り当てを強制する必要があります。

于 2013-03-01T10:16:28.583 に答える
0

ssh キーを使用することをお勧めします。そのようにすると、ssh-agent. 良いハウツーを参照してください: https://wiki.archlinux.org/index.php/SSH_Keys

于 2013-03-01T09:59:19.290 に答える
0

私はスクリプトを初めて使用しますが、これが役立つと思います:

#!/bin/sh

echo -n "Enter Password : "
stty -echo
read password < /dev/tty
stty echo
echo
echo -n "Enter Password again : "
stty -echo
read password1 < /dev/tty
stty echo
echo
echo "Password Entered are : $password and $password1"
于 2013-03-01T12:09:27.860 に答える