1

fstab で作成した ssh マウント用の自動ログイン スクリプトを作成する必要があります。

これを行うには安全なキー認証を使用する必要があることはわかっていますが、この場合はサーバーが許可していないため不可能であるため、プロンプトが表示されたらパスワードを入力するための bash スクリプトを作成する必要があります。

私は試してみました

spawn mount /media/SSH-MUSIC

expect "*?assword:*"

send "password\r"

しかし、私はそれを機能させることができません。

fstab エントリは次のとおりです。

sshfs#user@xxx.xxx.xxx.xxx:/public/02.MUSIC /media/SSH-MUSIC ヒューズ port=2223,noauto,users,allow_other,uid=1001,gid=1001,rw 0 0

誰かが自動ログインを可能にする実用的なスクリプトを提供してくれませんか? グーグルからさまざまな提案を試みましたが、機能させることができませんでした。

4

4 に答える 4

1

を使用する場合sshは、パスワードを使用するか、公開/秘密キー セットを使用できます。公開鍵/秘密鍵を使用sshすると、パスワードを入力せずに別のコンピューターで使用できます。

  • ssh-keygen両方のシステムで実行する必要があります。これにより、$HOME/.sshコンピュータ上にディレクトリが作成されます。内部には、2 つのファイルがあります。1 つは公開鍵で、もう 1 つは秘密鍵です。私の場合、秘密鍵は呼び出されid_rsa、公開鍵は呼び出されid_rsa.pubます。これは、Linux および Mac OS X のデフォルトです。

  • 両方のシステムでこれらのファイルを作成したら、公開鍵を取得して、.xml という名前のファイルに貼り付ける必要があります$HOME/.ssh/authorized_keys。これにより、リモート コンピューターに公開キーが与えられるため、ユーザーを識別できます。

それが完了するsshと、パスワードを必要とせずに使用できるようになり、 を使用するスクリプトをssh非常に簡単に作成できるようになります。

于 2012-06-11T14:31:02.000 に答える
0

Expectは通常、期待される入力ではラインターミネータとして「\ r」を必要とし、出力では「\ r\n」を必要とします。ただし、この場合、入力でキャリッジリターン文字をスキャンする必要はありません。より単純な正規表現でも同様に機能します。

あなたはおそらくこれをワンライナーとして機能させることができます。例えば:

expect -c 'spawn mount /media/SSH-MUSIC
           expect "assword:" {send "password\r\n"}
           interact'

スクリプト化されたコマンドが完了した後、生成されたプロセスの制御をユーザーに戻すには、 interactコマンドが必要です。

于 2012-06-11T16:25:10.210 に答える
0

スクリプトで行末文字 (\n) を省略していると思います。3 行目は次のようになります。

send "password\r\n"
于 2012-06-11T12:54:37.573 に答える
0

sshpass ユーティリティを試すことができます。これはスポーンが予想するよりも簡単だと思います。

于 2012-06-11T11:59:18.587 に答える