ディスカッション (11件)
SSHトンネル(ポートフォワード)は、リモートサーバーへの安全なアクセスや、ファイアウォールを突破するための強力な武器です。この記事では、Local Port ForwardingとRemote Port Forwardingの仕組みと、現場で使える実践的な使い方を分かりやすく解説します。SSHの基礎から応用まで、ネットワーク操作を自由自在に操るスキルを身につけましょう。
マニュアルを読むだけでこんなに学べるなんて、すごいよね。
記事には踏み台サーバー(bastion)については触れられてるけど、ジャンプホストについては書いてないの?
ssh -J user1@bastion1,user2@bastion2 targetuser@targethost
追記:ジャンプホストはOpenSSH 7.3(2016年8月1日リリース)で導入されたよ。
SSHポートフォワーディングを学ぶと、GUIクライアントでのデータベース接続から、物理インフラ上の機器のWeb管理ツールへのアクセスまで、擬似VPNとして何にでも使えて最高だよ。
SOCKSプロキシ対応を使えば、公共Wi-FiのひどいWebフィルタリングやプライバシー問題も回避できる(もっとも最近はクラウドIPにSSH接続すると「ボット」判定されて制限を受けることも多いけどね)。
ここで知ったから言わせてもらうけど、「~C」を使えばSSHのコマンドラインに抜け出せて、ポートフォワーディングなんかも実行できるよ。
-L8080:localhost:443
「~C」の存在と使い道を知ったおかげで、元々すごかったSSHトンネルの活用がさらにパワーアップしたよ。
ただ、最近のSSH設定ではデフォルトで無効になっていることがあるみたいだね…有効にするにはこれが必要。
-o EnableEscapeCommandline=yes
または ~/.ssh/config に以下を追記してね。
EnableEscapeCommandline yes
『The Cyber Plumber's Handbook』を勧める機会を逃すわけにはいかないな:https://github.com/opsdisk/the_cyber_plumbers_handbook
記事(TFA)と似たような内容だけど、より詳しく書かれている。システム管理者の必読知識だよ。
NATやファイアウォールの内側にある多数のリモートデバイスにアクセスする際、EC2サーバーなんかを使って一括管理するクールなテクニックがあるよ。サーバー側でUNIXソケット経由のリモートフォワーディングを設定して、デバイスの22番ポートに繋ぐんだ。UNIXソケットのファイル名は共通の接頭辞にしておくと、ssh+socatをProxyCommandで使うSSHコンフィグが書きやすくなるよ。
この方法、実際かなり軽量で驚くはず。自分は一つのEC2 nanoインスタンスを使って何百ものデバイスに接続してるよ。
sshuttle [0] についても触れておかなきゃ。これを使えば、頻繁な再設定なしにこうした問題の多くを魔法のように解決できるからね。
自分はDockerイメージのピアツーピア転送でこれを使うのが一番のお気に入り。Docker CLIはHTTPSで認証されたレジストリしか使えないけど、localhost越しのHTTP転送だけは例外的に許されているんだ。
だから、SSHトンネリングを使ってローカルホストのポートをリモートへ転送すれば、Dockerはそれと気づかずにリモートへpushしてくれる。レジストリをわざわざ立てたり、安定したインターネット接続を用意するのが面倒なロボティクスや組み込み開発の「オフグリッド」環境ではめちゃくちゃ便利だよ。
例として、docker pusshを紹介しておく:https://github.com/psviderski/unregistry
ありがとう!参考にさせてもらうよ。SSHはよく使うけど、新しいトンネリングの方法を学ぶきっかけになったよ :-)
Steve Friedlによるこの素晴らしい解説を思い出したよ:http://www.unixwiz.net/techtips/ssh-agent-forwarding.html