SSHを介して実行されるスクリプトにパスワードを渡す

SSHを介して実行されるスクリプトにパスワードを渡す

これは重複ではありませんこの問題。 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

また、各サーバーのスクリプトや構成ファイルにパスワードを保存する必要がないという要件にも役立ちます。パスワードはすべて中央コンピュータに保存されるため、緊密に保護できます。

関連情報