問題タブ [ssh-tunnel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - sshトンネリングを使用してリモートマシンからmongodbを認証する
認証をオンにして、リモートサーバー(debian)でmongo dbを実行しています。データを視覚化するには、ローカル マシン (Windows) から UMongo (mongodb の UI ツール) に接続する必要があります。サーバーマシンでmongodbポートを開いていませんが、からlocalhost:9999
へのsshトンネルを作成しましたmongodb-host:port
。UMongoの接続uriとして、私は与えました
と接続してみました。データベースは表示されますが、認証されず、認証エラーがスローされます。指定された資格情報が正しいことを確認しました。資格情報が ssh トンネリングを使用して mongodb サーバーに適切に渡されていないかどうか疑問に思っています。
更新:認証を無効にしてmongoサーバーを再起動しました。その後、リモート mongo シェルにアクセスしようとしました。で試したところmongo --port 9002
、以下のエラーが発生しました。
しかし、試してみるとmongo --port 9002 --nodb
、mongo シェルを取得できました。次にuse mydb
、以下のエラーをスローしようとしました:
どんな助けでも大歓迎です。
ありがとう。
mysql - SSH トンネル経由の MySQL 接続 - 他の MySQL サーバーを指定する方法は?
SSHトンネルを介して接続する必要があるため、すべて異なるホスト名でセットアップされた〜50のデータベースがあります。
例えば:
の SSH ホスト
ssh.example.com
MySQL ホスト
mysql1.example.com
autossh (Debian を実行している Web サーバー) を使用してトンネルを作成できましたが、SSH トンネルを「超えて」特定の MySQL ホスト名に接続する方法がわかりません。
入力lsof -i -n | egrep '\<ssh\>'
すると、トンネルが機能していることを確認できます (ポート 3307 を ssh.example.com ポート 3306 に送信します)。
だから私がしようmysql -h 127.0.0.1 -P 3307
とすると、接続が拒否されます。MySQL サーバーではないので、それほど奇妙ではありません。
皆さんへの私の質問:
mysql1.example.com
SSH トンネルを作成した後にホストを指定するにはどうすればよいですか? あちこち探してみたのですが、よくわかりません。
ssh - Navicat SSH の問題
SSHトンネルを使用してNavicatに接続するのに問題があり、すべてのアヒルが一列に並んでいるように見えるので、これを行った他の誰かが成功したかどうか疑問に思っています:
通常の (TCP) ユーザーをセットアップし、接続 (ホスト、ポート、ユーザー、パスワード、および cpanel に追加されたリモート アクセス IP) をチェックして、それが機能することを確認しました。
指示に従って、SSH タブに移動し、有効にしました ([x] SSH トンネル)。
ホストに同じ IP を追加し、次にポートに 22 を追加し、root をユーザーとして追加し、パスワードを認証として選択し、root パスワードを入力しました。
host.mydomainame.com がこの mysql ホストに接続できないというメッセージが表示され続けます。
私はそれが機能していることを知っています:a)間違ったユーザー/パスワードを使用すると、単に「トンネルを作成できませんでした」というエラーが表示されますb)ホストは、正しいルート/パスワードの組み合わせで接続した瞬間にSSH接続が作成されたことを確認します(エラーメッセージは私の側で生成されますが)
ところで、Navicat によると、AllowTcpForwarding が yes に設定されていることを確認しました。
また、bithive を使用して、同じ IP から同じユーザーで同じサーバーに接続できることも確認しました。
python - エージェントを使用した複数のマシンでの Python ssh トンネリング
この質問には少し文脈があります。私は、ファイル/フォルダーをあるマシンから別のマシンにコピーするアプリケーションをPythonで作成しています。接続は複数のマシンを通過できる必要があります。私は文字通りマシンを直列に接続しているので、正しいマシンに到達するまでそれらをホップする必要があります。
現在、python のsubprocessモジュール (Popen) を使用しています。私が持っている非常に単純な例として
私の質問: このようにすると、エージェント転送が機能しないように見えます。これは、このような場合に不可欠です。これを行う方法はありますか?
Popen で shell=True キーワードを使用してみました
これの問題は、マシンの名前がユーザー入力によって与えられることです。つまり、悪意のあるシェル コードを簡単に挿入できることを意味します。2 つ目の問題は、接続を確立するたびに新しい ssh-agent プロセスが実行されることです。
私のbashrcには、すでに実行中のssh-agentsを識別し、適切な環境変数を設定してsshキーを追加する素晴らしい機能がありますが、もちろん、サブプロセスは私のbashrcで定義された関数を参照できません。Popen で shell=True を使用して executable="/bin/bash" 変数を設定しようとしましたが、役に立ちませんでした。
ssh - リバース SSH トンネルでファイアウォールと NAT をバイパスする方法
ルーターの背後にあるマシンで SSH サーバーを生成しようとしています。
まず、SSH をパブリック IP アドレスにバインドしようとしました。
次に、パスワード要求が表示されますが、ユーザー名のパスワードが機能していないようです。
明らかに、ユーザー名のパスワードを知っているので、同じネットワーク内の別のコンピューターで認証しようとしているようです。
これを修正する方法はありますか?
また、ルーターにアクセスできない場合に、ルーターの背後に SSH サーバーを作成する方法の代替手段にも役立ちます。
iptables のポートはすべて開いています。
アップデート
Thomas Osterの回答で示唆されているように、私は次のことを試しました。
ルーターの背後にあるマシンで、次のコマンドを実行しました。
$ ssh -R10002:localhost:22 <remote_public_ip_address> -l <my_remote_server_username>
<remote_ip_address>
私が完全に制御できるパブリックIPおよびSSHサーバーを持つサーバーのremote_ip_addressです。
<my_remote_server_username>
リモートサーバーのユーザー名です。
その後、次のようにリモートサーバーからルーターの背後にあるサーバーに接続しようとしました:
$ ssh -p 10002 <remote_public_ip_address>
ただし、このコマンドは次の出力を表示します。
そこで、次のコマンドを使用して、iptables ファイアウォールで 10002 ポートを開きました。
その後、コマンドを再度実行しましたが、同じエラー メッセージが表示されます。
ルーターの背後にある私のマシンでは、iptables ですべてのポートを開いています。
更新 2
remove_public_ip_address サーバーの /etc/ssh/sshd_config でポート転送を許可する必要があります
次のコマンドを追加して、sshd_config ファイルでポート転送を許可しようとしました。
しかし、それは私にこのエラーメッセージを与えました:
「ssh -R....」の後、ウィンドウを開いたままにしましたか?
そのコマンドを実行した後、リモートのパブリック マシンに接続します。はい、ウィンドウを開いたままにしました。
トンネルが作成された後、公開サーバーで ssh -p 10002 localhost を使用できますか?
はい、公開サーバーでそのコマンドを実行すると、資格情報の入力を求められた後に接続されます。
ルーターの背後にあるマシンで「ssh localhost」を試して、sshd が実行され、機能しているかどうかを確認してください。
これも機能します。
更新 3
私はついにそれを機能させることができました (再びThomas Osterに感謝します)
次の 3 つのマシンで作業します。
宛先マシン: 接続したいマシン。
中間マシン: 接続の仲介者として機能するサーバー (私の場合は Linode)
ホーム コンピューター: 宛先マシンにアクセスする場所。
これらは私が従った手順です
ステップ1:
GatewayPorts オプションを追加します。
はい
ssh を再起動します。
ステップ2:
これにより、ポート 4040 経由でパブリック マシンが宛先コンピューターにリンクされます。
中間マシンに接続し、ターミナルにプロンプトを表示します。このタブは開いたままにしておく必要があります。
ステップ 3:
自宅から接続:
または、中間マシンから接続します。
windows-7 - 特定の ip:port からターゲット ip:port への送信トラフィックのキャプチャとリダイレクト
127.0.0.1:34567
Windows 7 では、アクセスする必要があるローカル アドレスでSSH トンネルを実行している12.34.56.78:8080
ため、(ホワイトリストにないため) その IP に直接アクセスできないため、SSH プロキシを使用してアクセスできます。
したがって、私の基本的な単純な目標は、Windows では、どこからでも要求するたびに12.34.56.78:8080
(たとえば、ブラウザーなど)、要求を127.0.0.1:34567
透過的に迂回させ、可能であればハードウェアではなくソフトウェアで解決することです。これは通常、iptables と呼ばれるものによって Linux で達成されるものだと思いますが、Windows で使用できるものを探しています。
これがどのように可能か知っている人はいますか?これに外部の Windows プログラムを使用する必要がある場合は、それで問題ありませんが、無料であることが望ましいです。
編集:逆トンネル ソリューションを提示しないでください。私の目標は、ブロックされているのと同じ ip:port を要求することですが、既存の SSH トンネルを介してその ip:port に正常に到達できるようにすることです。逆方向トンネルには、探しているものではない別の ip:port の要求が含まれます (別の ip:port に要求したい場合に使用できる順方向トンネルが既にあります)。
シナリオ例:.exe
ソース コードがアクセスできないC コンパイルファイルがあり12.34.56.78:8000
、SOAP Web サービスを要求するためにハードコードされているとします。問題は、IP がその ip:port からブロックされていることですが、ブロックされていない210.212.239.117:8080
SSH サーバーにアクセスでき、その SSH サーバーがその ip:port にアクセスするための SSH トンネルが設定されていることです...ただし.exe
、元の ip:port がハードコードされているため、SSH トンネル ip:port を要求するように指示することはできません。ハードコードされているため、要求される ip:port を変更することはできません! 210.212.239.117:8080
何らかの形で OS レベルの SSH トンネルに転送されたコンピューターへの要求が必要です。それで、どうやってそれを成し遂げますか?
EDIT 2:ルーティングテーブルも探していません(と思います)。リクエストがターゲット ip:port に到達するために通過するルートを変更したくありません。私は実際に、要求された ip とポート自体をサイレントに変更したいと考えています。hosts
ホスト名をipsに解決する代わりに、ip:portsを別のip:portsに再解決することを除いて、ファイルのようなものを達成したいのです。
報奨金:申し訳ありませんが、私のこのスタックオーバーフローの質問はオフトピックとしてカウントされ、報奨金を提供する資格がないようです。余分な作業を行い、報奨金を受け取る可能性がある人には申し訳ありません!
macos - SSH 経由で Redis を管理するためのデスクトップ クライアント
SSH トンネル経由で Redis を管理するためのデスクトップクライアントはありますか? ホームページで何も見つかりません。私の好みの OS は MacOS ですが、wine で動作するものがあれば、それで問題ありません。