
仕事で、マシン B にアクセスするには、ローカル マシンからマシン A を経由して SSH する必要があります。問題は、マシン A に X11 転送機能がなく、それを変更するためのスーパーユーザー権限がないことです。マシン B ではスーパーユーザー権限があり、X11 転送はオンになっています。
A で X11 転送をオンにせずに、B から A を経由してローカル マシンに X11 を転送する方法はありますか?
実行してみました がssh -t -X user@A ssh -X user@B
、ssh -t user@A ssh -X user@B
マシン A はX11 forwarding request failed on channel 0
ログイン時にまだ出力します。
答え1
~.ssh/config に以下を追加します:
Host BviaA
HostName hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
そうすればssh -X user@BviaA
うまくいくはずだ
上記の設定セクションでは、Host BviaA
何が起こるかをより明確にするために を使用しています。また、 を使用するHost hostB
ことで、完全に透過的に動作させることもできます: ssh -X user@hostB
(ゲートウェイが不要であるかのように)。
あるいは、構成を変更せずにテストするためのワンライナーとして:
ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
答え2
@rudimeierさん、ご回答ありがとうございます。
私は問題を抱えていましたいいえsshを使用する場合のオプションですが、このバリエーション(@aDroidの説明に基づく)ここ)は私の場合はうまくいきました。つまり、これは本質的に同じですワンライナーの答えOpenSSH の新しいバージョンについては @rudimeier をご覧ください:
$ ssh -X -oProxyCommand="ssh [email protected] -W %h:%p" [email protected]
翻訳者答え私の場合もうまくいきました(あなたにも感謝します)。
私のような初心者に仕組みを明確にするために、両方の手順でユーザー名を追加します (1 番目のコマンドを入力すると、localhost ポート 2222 はマシン B のポート 22 のように動作します。そのため、2 番目のコマンドではマシン B のユーザー名を渡します)。
$ ssh -Nf -L2222:destination.host-B.address:22 [email protected]
$ ssh -p 2222 -X userB@localhost
答え3
A経由でポート転送できる場合があります。
$ ssh -Nf -L2222:B:22 A
ローカルマシンからAを経由してBに転送するsshプロセスを開始してバックグラウンドで実行します。次に、
$ ssh -p 2222 -X localhost