2012-04-11 18 views
1

現在、bashスクリプトからコマンドを実行中に奇妙な問題に直面しています。私のスクリプトは、このコマンドを持っているbashスクリプトからssh IPAddressA -l user "ssh -l IPAddressB ls"を実行する際に問題が発生しました

、IPAddressA & IPAddressBがお互いからアクセス二つのマシンのハードコード化されたIPアドレスに置き換えられます

ssh IPAddressA -l root "ssh -l root IPAddressB ls" 

ユーザは、尋ねられるたびにパスワードを入力します。しかし、私はIPAddressAのパスワードを入力した後、このエラーが発生します。

[email protected]'s password: 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 
]$ 

答えて

1

内部のsshパスワードを入力すると、対話型のキーボードは使用できません。あなたはsshトンネリングであなたが望むものを得ることができます。

ssh [email protected] -L2222:IPAddressB:22 -Nf 
ssh [email protected] -p2222 

最初の行は、トンネルを開くので、あなたのローカルホスト2222ポート点IPAddressB:22に及びdコマンドを実行することなく、バックグラウンドでのSSHプロセス(-f)をもたらす(-N
セカンドラインが開か新しいを通してIPAddressB:22を結びますトンネル

2

そのためのより良いトリックがあります。..

の〜/ .ssh/configにそうように構成されたIPAddressAのホストエントリを追加:

Host IPAddressA 
    User someguy 
    ProxyCommand ssh -q [email protected]AddressB nc -q0 %h 22 

この方法のすごいところは、シェルコマンドラインに奇妙なことがなく、IPAddressBにscp/sftpできるということです。

ボーナスポイントについては、公開鍵ペアを自分自身で生成し、公開鍵を〜/ .ssh/authorized_keysのIPAddressAとIPAddressBの両方にドロップします。あなたがパスワードを入力しなければ、あなたはそれを入力するのにも気にしません。

さらに、単一のエントリポイントしか持たないリモートLANにアクセスしようとしている場合、SSHは実際にVPNクライアントとして機能し、プロキシホストをブリッジします。もちろん、リモートエンドはタップ/チューンデバイス(ローカルマシンと同様)をサポートする必要があります...しかし、それは既にすべてのものです..ブリッジする超痛みのメカニズム。

+0

ありがとう!私はVPNの部分が好きです。 –

関連する問題