コンテクスト
私はプライマリマシンとして Ubuntu Desktop を実行しており、これを D と呼びます。SSH 経由でサーバー S に接続したいのですが、ファイアウォールによってブロックされています。
私はWindows仮想マシンを含む非常に面倒なパスを介してサーバーSにアクセスし、パテこれにより、このサーバーでの作業が非常に面倒になります。環境が完全に異なる、コピー/貼り付けが機能しない、接続中にデスクトップを適切に使用できない(Alt-Tabが仮想マシンによって壊れている)など
サーバー S からデスクトップ マシン D に ssh 接続できることを確認しました (必要な操作とは逆です)。
デスクトップからサーバーに SSH 接続できるように、サーバーから「ポート転送」などを開始することはできますか?
答え1
次のコマンドを使用して、リモート サーバーからローカル マシンへの SSH トンネルを設定できます。
$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip
トンネルが設定されると、次のコマンドを使用してリモート サーバーに ssh で接続できます。
$ ssh -p 1234 user@localhost
自動ログイン (パスワード プロンプトなし) には SSH キーを設定する必要があることに注意してください。SSH トンネルを対話的に作成する場合は、オプションを削除できます-f -N
。詳細については、 を参照してくださいman ssh
。
答え2
OpenSSHの新しいバージョン(7.3以降)を使用している場合は、ProxyJump
魔法のようにすべてを一緒に焼き上げます:
ssh -J windows_machine remote_server
あなたの場合、次の~/.ssh/config
ようになります:
Host remote_server
HostName remote_server
ProxyJump windows_machine
User myname
ProxyJump
完全な SSH 構文をサポートしているため、 がjim
オンになっていて、 SSH にwindows_server
ポートを使用している場合は、 IPから次のように記述できます。2222
remote_server
192.168.0.110
windows_server
Host remote_server
HostName 192.168.0.110
ProxyJump jim@windows_machine:2222
User myname
そしてまだssh remote_server
そこに着くまでただ走るだけです。
古いバージョンのSSHを実行している場合は、プロキシコマンド- これにより、実際の SSH コマンドを実行する前に、プロキシ接続を確立するためのコマンドを最初に実行するように SSH に指示できます。
ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server
これはSSHを使用します-Wオプションは、より難解なnetcat 構文。
実行するときに、IPアドレスssh remote_server
がwindows_machine
remove_server
跳び箱からマシンの IP ではなく、これらは同じである可能性があります。
次に、次のディレクティブを~/.ssh/config
ファイルに追加します。
Host remote_server
HostName remote_server
User myname
ProxyCommand ssh -W %h:%p windows_machine
つまり、もしremote_server
は別のマシンから見た場合は、windows_machine
それを構成に入れて、そのまま使用できますssh remote_server
。
答え3
物事を回避して複雑なパスを作成するのではなく、デスクトップからサーバーへの SSH を許可するように要求するだけでよいのではないでしょうか。その必要があり、サーバーにアクセスする必要がある場合、要求が拒否される理由がわかりません。