これは重複ではありませんこの問題。 SSHとキーペアを使用してリモートサーバーにログインします(パスワードは不要)。リモートサーバーでは、私のスクリプトには別のパスワードが必要です。
ログインしてスクリプトを実行すると、パスワードを入力するように求められ、すべてがうまく機能します。
my-local> ssh my-remote
my-remote> ./my-script
Password for something else: ***
OK
my-remote> exit
ある手順でこれを実行しようとすると、次のエラーが発生します。
my-local> ssh my-remote ./my-script
fatal: could not read Password for .... No such device or address
パスワードを入力しても全く関係ありません。私ができれば。
しかし、追加の質問で「my-local」のパスワードを安全な方法で渡すことができるかどうかを知りたいです(「my-remote」のスクリプトにパスワードを保存したくありません)。
どちらのサーバーもUbuntu 16.04です。
答え1
ツールは、tty
コマンドを指定するとssh
リモートサーバーにTTYを割り当てないため、失敗することを読んでいます。ssh
スイッチを使用して、リモートサーバーにTTYを強制的に割り当てることができます-t
。
ssh -t my-remote ./my-script
あなたのために仕事をしなければなりません。
答え2
いくつかのプログラムはstdinの代わりに/dev/ttyから直接読み取られます。たとえば、「passwd」です。だからスクリプトを書くのは難しいです。 Expectはこの問題に対する解決策です。プログラムに入力を与えることでだまされます。
https://stackoverflow.com/questions/8236699/script-to-change-password-on-linux-servers-over-ssh
また、各サーバーのスクリプトや構成ファイルにパスワードを保存する必要がないという要件にも役立ちます。パスワードはすべて中央コンピュータに保存されるため、緊密に保護できます。