Ubuntuデスクトップをプライマリマシンとして実行しています。これをDと呼びます。ssh経由でサーバーSに接続したいのですが、ファイアウォールがブロックしています。
Windows仮想マシンと PuTTY を含む非常に扱いにくいパスを介してサーバーSにアクセスできます。これにより、このサーバーでの作業は非常に煩わしくなります:完全に異なる環境、コピー/貼り付けが機能しない、デスクトップに接続している間はデスクトップを適切に使用できない(Alt-Tabが仮想マシンによって壊れている)など
サーバーSからデスクトップマシンD(必要なものとは逆)にSSHで接続できることを確認しました。
どういうわけか、サーバーから「ポート転送」などを開始して、デスクトップからサーバーにSSH接続できるようにできますか?
次のコマンドを使用して、リモートサーバーからローカルマシンへのSSHトンネルを設定できます。
$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip
トンネルが設定されたら、次のコマンドを使用してリモートサーバーにSSHで接続できます。
$ ssh -p 1234 user@localhost
自動ログイン用にsshキーを設定する必要があることに注意してください(パスワードプロンプトなし)。インタラクティブにSSHトンネルを作成する場合は、オプション-f -N
を削除できます。詳細については、man ssh
。
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
がwindows_server
であり、sshにポート2222
を使用している場合。 remote_server
は192.168.0.110
からIP windows_server
にあり、次のように記述できます。
Host remote_server
HostName 192.168.0.110
ProxyJump jim@windows_machine:2222
User myname
そして、stillssh remote_server
を実行してそこに到達します。
古いバージョンのSSHを実行している場合は、 ProxyCommand を使用します。これにより、実際のSSHコマンドを実行する前に、プロキシ接続を確立するコマンドを最初に実行するようにSSHに指示できます。
ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server
これはSSH -W オプションを使用します。これはより難解な netcat構文 の省略形です。
ssh remote_server
を実行すると、windows_machine
にいるので、ジャンプからremove_server
のIPを使用していることを確認する必要があることに注意してください。マシンからのIPではなく、box-これらは同じである可能性があります。
次に、このディレクティブを~/.ssh/config
ファイルに追加できます。
Host remote_server
HostName remote_server
User myname
ProxyCommand ssh -W %h:%p windows_machine
これは、remote_server
がである場合、windows_machine
から見た別のマシンである場合、それを構成に追加して、 ssh remote_server
を使用します。
物事を回避して複雑なパスを作成するのではなく、デスクトップからサーバーへのSSHを許可するように要求できませんか?あなたがそれを必要としていて、あなたがサーバーにアクセスしているべきであるなら、なぜあなたがリクエストを拒否するのか分かりません。