2

ハードコードされたパスワードをssh接続認証に渡すシェルスクリプトを作成することは可能です(expectを使用)。しかし、私が必要としているのはもう少し複雑です。

私の大学では、デスクトップコンピュータを任命しています。最初にサーバーとssh接続を確立し、次にそのサーバーから指定したデスクトップコンピューターに別のssh接続を確立することで、このコンピューターにリモート接続できます。これは次のようになります:


localuser @ localcomputer:〜$ ssh -X username @ serveraddress

username @ serveradressパスワード:

server $ ssh -X username @ remotecomputeraddress

username @ remotecomputeraddressパスワード:

username @ remotecomputer:〜>


上記を自動化できる(つまり、2つの連続したssh接続を実行する)スクリプトを作成する方法はありますか?

前もって感謝します!

ps:ローカルコンピューターとリモートコンピューターの両方がLinuxで実行されています。

4

3 に答える 3

1

これは、次の方法でインタラクティブに行うことができます。

ssh -t -X username@serveraddress ssh -t -X username@remotecomputeraddress

これはパイプではないことに注意してください。2番目sshは、最初のによって作成された接続で実行するコマンドsshです。オプションは、-t対話に必要な疑似ttyを割り当てるために必要です(パスワードの収集と最終的な目標-リモートシステムでの対話セッション)。読者のための練習問題として左でそれをexpectまとめる....;-)

適切な秘密鍵と公開鍵のペアを設定しssh-agent、パスワードが不要になるようにするためのボーナスポイント(もちろん、セキュリティ上の理由で許可されていない場合を除く)。

于 2012-08-29T19:38:35.317 に答える
0

はい、あなたはこれを行うことができます。

expect_script:に例外スクリプトがあると仮定します。

cat expect_script | ssh -X username@serveraddress sh -s

このexpect_scriptでは、を実行する必要がありますssh -X username@remotecomputeraddress

もちろん、両方のホストに公開鍵をインストールして、パスワードなしの認証を使用することもできます。

于 2012-08-29T19:07:56.260 に答える
0

私はしばらく前にバングパスでこれを行うために何かを書きました: http ://stromberg.dnsalias.org/~strombrg/deep-ssh.html

したがって、次のように、パスワードなし、パスフレーズなしの認証を設定します(またはパスフレーズにエージェントを使用します): http ://stromberg.dnsalias.org/~strombrg/ssh-keys.html

その後:

deep-ssh username@serveraddress!username@remotecomputeraddress command

bashが!について文句を言う場合は、バックスラッシュでエスケープできます。

古いタイマーは、これがUUCPパスが指定された方法であることを認識します。

于 2012-08-29T23:18:07.570 に答える