~/.ssh/config エントリを作成しようとしています。次のシナリオの場合:
私LinuxボックスプライベートネットワークではVPSサーバーどこでもアクセス可能ローカルMacBook。
Linuxボックスはファイアウォールの背後にありますが、まだローカルのMacBookからボックスにSSHとして接続できます。
現在作業しているソリューションは次のとおりです。
Linuxボックスは、次のようにvpsのリバーストンネルを起動します。
ssh -R 15000:localhost:22 vps-user@vps
その後、私のローカルMacbookから、以下を介してVPNにトンネルを起動します。
ssh -L 12345:localhost:1500 vps-user@vps
その後、別のsshコマンドを起動し、そこからファイアウォールなどの後ろに隠されているLinuxボックスに直接sshを実行できます。
ssh linuxbox-user@localhost -p 12345
まず第一に、これはすべて非常に信頼性があります(これを行うより簡単な方法があれば教えてください。これはMacBookの面でやや面倒です)。
最良のシナリオでは、〜/.ssh/configエントリをどのように生成しますか?次のように書きます。
ssh linuxbox
ここは終わりですか?
使ってみました。地域配信このオプションを使用すると、少なくともSSH -L ...コマンドですが、まだ2番目のsshコマンドが必要です。
私も試しましたプロキシコマンドオプションがありますが運がありません。設定が間違っている可能性があります。
答え1
最も簡単な方法は、おそらくあなたの場合は不要に見えるローカル配信を避け、ディレクティブを利用することです。ProxyJump
これにより、1つ以上のジャンププロキシ(たとえば、接続する1つ以上の中間ホストと到着ホスト)を指定できます。 from)宛先ホスト)。
2つの接続が必要です。
Linuxホストからvpsへのリモート転送を設定しました。
ssh -R 15000:localhost:22 vps-user@vps
22
あなたの質問で提案されているようにポートのVPNに接続できるとします。
これにより、vpsはポートから受信した接続をLinuxボックスの15000
ポートに転送します。22
ローカルのMacBookからvpsへの接続:
ssh -J vps-user@vps -p 15000 linuxbox-user@localhost
-J
指定されたコマンドへのショートカットですProxyJump
(マンページを参照ssh(1)
)。
繰り返しますが、これはポートからVPNに接続できることを意味します22
。
このコマンドはローカルのMacBookを22
vpsのポートに接続し、そこから15000
同じvpsのポート(Linuxボックスがリッスンしている)に接続するため、追加の接続なしでLinuxボックスにログインできます。
その.ssh/config
ファイルは次のとおりです。
Linuxマシンでは:
Host vps RemoteForward 15000 localhost:22 User vps-user
これにより、簡単に次のように入力できます。
ssh vps
ローカルMacBookの場合:
Host linuxbox ProxyJump vps-user@vps Hostname localhost Port 15000 User linuxbox-user
これにより、以下を発行できます。
ssh linuxbox
公開鍵認証を使用している場合(少なくともリモート転送の無人設定を許可する場合)、IdentityFile
このディレクティブを両方のファイル.ssh/config
に追加してパスワードを入力する必要がないようにすることもできます。
特定の条件が満たされると、ローカルのMacBookをvpsのポートに直接接続することもでき、15000
ローカル転送やプロキシジャンプは不要です。つまり、条件は次のようになります。
VPN のポートは
15000
ファイアウォールによってフィルタリングされません。vps(通常)
GatewayPorts yes
に設定した設定です。この設定は、デフォルトでリモート転送がリッスンポートをループバックポート以外のアドレスにバインドできるかどうかを決定します(したがって、IPアドレスはORではありません)。詳細については、マニュアルページを参照してください。sshd
/etc/ssh/sshd_config
no
127.0.0.1
::1
sshd_config(5)
この場合、次の2つのコマンドのみが必要です。
Linuxシステムからvpsへのリバース転送(
*:
前のリモートポートに注意してください。これは「すべてのアドレスでリッスン」を意味します):ssh -R *:15000:localhost:22 vps-user@vps
MacBookからvpsへの簡単な接続:
ssh -p 15000 -l linuxbox-user vps
これは次の.ssh/config
ファイルに変換されます。
Linuxマシンで(
*:
以前のリモートポートをもう一度参照してください):Host vps RemoteForward *:15000 localhost:22 User vps-user
ローカルMacBookの場合:
Host linuxbox Hostname vps Port 15000 User linuxbox-user
しかし、この方法は参考にしてくださいあなたはあなたのLinuxボックスをインターネットに公開します、これはあなたが望んでいない可能性があります。
答え2
MacBookで行うことができればこれを行う必要はないので、LinuxボックスはVPSへの逆方向トンネルを自動的に実行すると仮定します。
したがって、MacBookでやるべきことは次のとおりです。
Bashスクリプトを作成します。
#!/bin/bash ssh -f -N -L 12345:localhost:1500 vps-user@vps sleep 5 ssh -f -N linuxbox-user@localhost -p 12345
実行可能であることを確認してください。
chmod +x /path/to/script
次に、最後にエイリアスを作成します。
/home/username/.bashrc
alias sshlinuxbox="/path/to/script"
sshlinuxbox
次に、新しい端末を開いた後、.bashrcで更新を入力するだけです。
答え3
次の行は正確ですが、混乱しています。
- MacBookからvpsへの簡単な接続:
ssh -p 15000 -l linuxbox-uservps
「-l」は、SSH で一般的に使用されていないログイン名です。
より簡単なコマンドは次のとおりです。
ssh -p 15000 linuxbox-user@vps
説明:「linuxbox」がリバースSSH接続(Rタイプ)で接続されている場合、その接続はvpsサーバーのポート15000に転送されます。ラップトップはvpsサーバーの「linuxbox」にアクセスし、ラップトップはvpsサーバーのlinuxboxユーザーを処理する必要があります。したがって、linuxbox-user@vps です。
さらに、接続を確立し、リモートlinuxboxにパスワードが必要な場合は、次のプロンプトが表示されます。linxubox-user@vpsのパスワード:この時点で実際にlinuxbox-usersパスワードを入力する必要があります。