一部のリモートボックスに対して開発を行う必要があります。幸いなことに、シェルにアクセスできますが、AllowTcpForwardingがfalseに設定されているゲートウェイを通過する必要があります。
私はドキュメントで次のようなピークを見ました。
AllowTcpForwarding TCP 転送が許可されるかどうかを指定します。デフォルトは「はい」です。ユーザーはいつでも独自のフォワーダーをインストールできるため、TCP転送を無効にしてもユーザーがシェルアクセスを拒否しない限り、セキュリティは向上しません。
自分のリピータをどのようにインストール(または構築)するのですか?私の目標はPycharmのリモートインタプリタの使用データはSSHを介して供給され、ゲートウェイを介して一部のローカルポートにバインドされ、コードが実際に実行される開発ボックスにバインドされます。私は何とかncや他のUnixユーティリティを活用して作業を完了できると思います。
次の方法でリモートボックスにSSHで接続できることがわかります。
ssh -t user1@gateway ssh user2@devbox
しかし、明らかにこのオプションはpycharmでは利用できません。一部のローカルポートを開くことができる必要があります。
ssh -p 12345 localhost
(or variant)
user2@devboxに接続します。これにより、リモートボックスに12345
接続するためにポートを使用するようにリモート通訳者を設定できます。localhost
ベストアンサー1
実行できる限りsocat
localとon gateway
(またはさらにはbash
and cat
on gateway
、最後の例を参照してください!)と許可いいえptyを使用すると、8ビットがきれいになり、SSH経由でトンネルできます。以下は、前の例を改善した4つの例です。
基本的な例は一度だけ動作します。
(フォークにはトンネルごとに1つのSSH接続が必要であるため、それはお勧めできません。):
execコマンドを受け入れるには、socatをエスケープする必要があります。
- 1学期:
$ socat tcp-listen:12345,reuseaddr exec:'ssh user1@gateway exec socat - tcp\:devbox\:22',nofork
- 2学期:
$ ssh -p 12345 user2@localhost
- 1学期:
user1@gateway's password:
- 2学期:
user2@localhost's password:
最初のアドレスと2番目のアドレスを逆にすると、ソケットをすぐに使用できます。
socat
責任を負う必要があるため、以下を行わないでくださいnofork
。
- 1学期:
$ socat exec:'ssh user1@gateway exec socat - tcp\:devbox\:22' tcp-listen:12345,reuseaddr user1@gateway's password:
- 2学期:
$ ssh -p 12345 user2@localhost user2@localhost's password:
使うControlMaster
SSH
Aは、ゲートウェイへの単一のSSH接続のみを使用するときに分岐を許可し、一般的なポート転送と同様の動作を提供します。
- 1学期:
$ ssh -N -o ControlMaster=yes -o ControlPath=~/mysshcontrolsocket user1@gateway user1@gateway's password:
- 2学期:
$ socat tcp-listen:12345,reuseaddr,fork exec:'ssh -o ControlPath=~/mysshcontrolsocket user1@gateway exec socat - tcp\:devbox\:22'
- アイテム3:
$ ssh -p 12345 user2@localhost user2@localhost's password:
のみ可能bash
です。cat
gateway
使用してbash
組み込みTCPリダイレクトおよび2つの半二重cat
コマンド(全二重結果用)はリモートsocat
またはnetcat
。bash
リモートスクリプト。分岐はcat
出力にのみ使用されることに注意することが重要です。
- 項目1(変更なし):
$ ssh -N -o ControlMaster=yes -o ControlPath=~/mysshcontrolsocket user1@gateway user1@gateway's password:
- 2学期:
$ socat tcp-listen:12345,reuseaddr,fork 'exec:ssh -T -o ControlPath=~/mysshcontrolsocket user1@gateway '\''exec bash -c \'\''"exec 2>/dev/null 8<>/dev/tcp/devbox/22; cat <&8 & cat >&8"\'\'\'
- アイテム3:
$ ssh -p 12345 user2@localhost user2@localhost's password: