1

現在、bashスクリプトからコマンドを実行しているときに、奇妙な問題に直面しています。

私のスクリプトにはこのコマンドがあります、

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

ここで、IPAddressAとIPAddressBは、相互にアクセス可能な2台のマシンのハードコードされたIPアドレスに置き換えられます。

ユーザーは、求められたときにいつでもパスワードを入力します。しかし、IPAddressAのパスワードを入力すると、このエラーが発生します。

root@IPAddressA's password: 
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
]$
4

2 に答える 2

2

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

〜/ .ssh / configに、次のように構成されたIPAddressAのホストエントリを追加します。

Host IPAddressA
    User someguy
    ProxyCommand ssh -q someguy@IPAddressB nc -q0 %h 22

このメソッドの優れた点は、シェルコマンドラインに奇妙なものを追加することなく、IPAddressBにscp/sftpできることです。

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

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

于 2012-04-11T07:47:19.250 に答える
1

内部sshパスワードの入力を求められた場合、使用可能なインタラクティブキーボードはありません。sshトンネリングで必要なものを取得できます。

ssh root@IPAddressA -L2222:IPAddressB:22 -Nf
ssh root@localhost -p2222

最初の行はトンネルを開くので、ローカルホスト2222ポートはコマンドを実行せずIPAddressB:22にバックグラウンドでsshプロセスをバックグラウンドで実行します() 。2番目の行は新しく開いたトンネルを介して接続します-f-N
IPAddressB:22

于 2012-04-11T07:41:46.417 に答える