質問

パスワードをsshに自動的に渡す方法はありますか。何らかの方法でsshにstdinまたはファイルからパスワードを読み取らせることにより、公開キー認証を使用せずに サーバーに自動的にsshを実行したいです。

そのようにする必要があるのは、cronジョブとして実行されているrsync / sshを使用してサーバーにファイルをバックアップしたいからです。このサーバーは、ホームディレクトリを で認証した後にマウントするため、〜/ .sshはログインが成功するまで利用できないため、公開キー認証の使用は機能しません。 cronジョブとして実行したいので、expect(1)は問題外です。また、cronジョブは端末で実行されないため、expect / sshの組み合わせは機能しません。私はそのサーバーへのルートアクセス権を持っていないため、管理者がそこで動作する方法を変更することは困難です。

役に立ちましたか?

解決

sshpass を使用します。

たとえば、パスワードが password.txt ファイルにある場合:

sshpass -fpassword.txt ssh username@hostname

同様の質問に対する回答から取得)

他のヒント

  

expectはcronジョブとして実行したいので問題外です。   また、cronジョブは端末で実行されないため、expect / sshの組み合わせ   動作しません

cronからexpectスクリプトを実行できます。少なくとも" pexpect"のようなexpectライブラリを使用するとできます。 Python用。これを確認するためにテストしたところ、cronからpexpect scp / sshスクリプトを実行し、cronで実行されているPythonスクリプトからファイルを正常にscpできました。

サンプルコード:

#!/usr/bin/python

import pexpect

FILE="/path/to/file"
REMOTE_FILE=""
USER="user"
HOST="example.com"
PASS="mypass"
COMMAND="scp -oPubKeyAuthentication=no %s %s@%s:%s" % (FILE, USER, HOST, REMOTE_FILE)

child = pexpect.spawn(COMMAND)
child.expect('password:')
child.sendline(PASS)
child.expect(pexpect.EOF)
print child.before

パスワードを渡すのではなく、公開/秘密キーシステムを使用します。マシンの公開キーを、接続するすべてのマシンの許可キーリストに追加します。この方法を使用すると、SSHはキーを自動的に検証でき、パスワードは不要です。

ここで手順を見つけることができます: http://linuxproblem.org/art_9.html

質問をより注意深く読んだので、ユーザーの操作なしでパスワード認証をサポートする別のSSHクライアントを探してみてください。 Googleのクイック検索で、それらが存在することを示唆しました( http:/ /www.derkeiler.com/Newsgroups/comp.security.ssh/2004-12/0134.html

関連するStackoverflowの質問:

このディスカッションでは、あなたがやろうとしていることについて話します:

http://cygwin.com/ml/cygwin/2004-02 /msg01449.html

管理者にローカルディレクトリを作成してもらうことができない場合、これは機能しません。

SSHには「信頼の飛躍」が必要です。将来の改ざんから最初のハンドシェイクを保護します。 (最初にサーバーが提供するキーを信頼します)

現在利用できるがよく知られていないアプローチの1つは、SSH-SRPを使用することです。これは、相互パスワード知識を使用して、ユーザーを認証し、sshセッションを安全に暗号化するために必要なセッション暗号化キーを提供します。

SSHの最初の「私を信頼して」よりもはるかに安全です。キーの長期保存は必要ありません。

expect、pexpectなどを使用してパスワードを入力しないでください。それを行う場合、パスワードは平文のどこかにある必要がありますが、実際にはパスワードなしの公開/秘密キーのペアを使用するよりも少ない安全です。そして、もっと手間がかかります!

「SSH:The Definitive Guide」からこのページを読むあなたのオプションの議論のために: http://www.snailbook.com/faq/no-passphrase.auto。 html

公開鍵認証の仕組みを誤解しました。リモートのホームディレクトリにアクセスする必要はありません。ローカルの公開キーをリモートの authorized_keys ファイルに入れるだけです。周りにグーグルがいて、たくさんのガイドがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top