3

実際にユーザーにパスワードを要求せずに、他のユーザー名で別のサーバーにsshするシェルスクリプトを作成する必要がありますか?制約のため、キーベースの認証を使用できません。let、ソースサーバー--abc.efg.comソースユーザー名--tomソースパスワード--tom123

宛先サーバー--xyz.efc.com宛先ユーザー名--bob宛先パスワード--bob123

bashスクリプトをソースサーバーに配置する必要があります。期待ツールやsshpassを使用して何かできるかどうか教えてください。

bashスクリプトで宛先サーバーのパスワードをハードコーディングしても問題ありませんが、対話型セッションに耐えることができません。スクリプトを実行するだけで、宛先サーバーが別のユーザー名でログインしていることを確認したいと思います。

前もって感謝します。

4

4 に答える 4

10

キー認証を使用するhttp://ornellas.apanela.com/dokuwiki/pub:ssh_key_auth

  1. キーを生成するssh-keygen
  2. キーを新しいボックスにコピーしますssh-copy-id -i ~/.ssh/id_rsa.pub me@otherhost.com
  3. パスワードなしで他のホストにsshするssh me@otherhost.com
于 2013-03-12T08:45:38.463 に答える
3

sshをラップするexpectを使用できますが、かなり多忙で、ネットワークエラーが発生すると簡単に失敗するため、十分にテストするか、sshパスワードをラップするために特別に設計されたスクリプトを使用してください。キーベースの認証の方が優れています。

nullデバイスからの標準入力をリダイレクトすることで、インタラクティブセッションを防ぐことができます。

ssh me@destination destination-command < /dev/null

スクリプトをソースサーバーに配置することについて、実行しているスクリプトがリモートではなくローカルである場合は、コマンドラインではなく標準入力でスクリプトを渡すことができます。

cat bashscript.sh | ssh me@destination 
于 2013-03-12T09:50:10.757 に答える
2

sshpass次のようなスクリプトを記述できるプログラムをインストールできます。

#!/bin/bash

sshpass -p bob123 ssh UserName@xyz.efc.com
于 2013-03-12T13:06:56.220 に答える
1

答えは、OpenSSHがヘッドレスパスワードベースの認証を積極的に防ぐことはできないということです。キーベースの認証を使用します。

OpenSSHクライアントコードをフォークしてパッチを当てることができるかもしれませんが、それは少し過剰だと思います。

于 2013-03-12T08:15:13.703 に答える