4

パスワードを ssh に自動的に渡す方法はありますか。何らかの方法で ssh に標準入力またはファイルからパスワードを読み取らせることにより、公開鍵認証を使用したり、スクリプトを期待したりせずに、サーバーに自動的に ssh したいと考えています。

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

4

7 に答える 7

7

cronジョブとして実行したいので、expectは問題外です。また、cronジョブはターミナルで実行されないため、expect/sshの組み合わせは機能しません。

cronからexpectスクリプトを実行できます。少なくとも、Pythonの「pexpect」などのexpectライブラリを使用できます。cronからpexpectscp/ 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
于 2008-12-12T17:30:16.080 に答える
3

を使用しsshpassます。

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

sshpass -fpassword.txt ssh username@hostname

(同様の質問への回答から取得)

于 2013-12-23T17:41:50.777 に答える
1

パスワードを渡す代わりに、公開鍵/秘密鍵システムを使用してください。マシンの公開鍵を、接続するすべてのマシンの承認済み鍵リストに追加します。この方法を使用すると、SSH はキーを自動的に検証でき、パスワードは必要ありません。

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

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

関連する Stackoverflow の質問:

于 2008-11-07T02:48:36.310 に答える
0

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

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

SSH の最初の "trust me" よりもはるかに安全であり、キーの長期保存を必要としません。

于 2008-11-30T00:41:21.173 に答える
0

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

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

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

于 2008-11-07T06:00:48.450 に答える
-1

パスワードの入力にexpect、pexpectなどを使用しないでください。その場合、パスワードはプレーンテキストのどこかにある必要があります。これは、パスワードなしの公開鍵と秘密鍵のペアを使用する場合よりも実際には安全性が低くなる可能性があります。そして、それはもっと仕事です!

オプションの説明については、「SSH:The DefinitiveGuide」のこのページをお読みください: http ://www.snailbook.com/faq/no-passphrase.auto.html

于 2009-07-13T19:10:25.180 に答える
-2

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

于 2008-11-07T02:56:41.410 に答える