概要
SSHリモートフォーワーディングを行う際に、GatewayPortsの設定をclientspecifiedにしています。しかし、なぜかこの設定が効いておらず指定したプライベートIPではなく、localhostにバインドされてしまいます。
全体のイメージ
remote <==ssh== host
remote
GCPのVMインスタンス
OSはdebian
host
AWSのEC2インスタンス
OSはubuntu
localhost:3128にてnginxが起動している
実施した手順
- hostにて
vi /etc/ssh/sshd_config
でGatewayPortsの設定値をclientspecifiedに設定する - hostにて
/etc/init.d/ssh reload
を実行する - hostにて
ssh -R remoteのプライペートIP:3128:localhost:3128 -i ssh_key user@remoteのパブリックIP
を実行する - remoteにて
curl localhost:3128
を実行すると、htmlファイルが帰って来て接続がリモートフォーワーディング自体がうまく行っていることが確認できる - remoteにて
curl remoteのプライペートIP:3128
を実行すると、curl: (7) Failed to connect to remoteのプライペートIP port 3128: Connection refused
というメッセージが表示される
やったこと
/etc/init.d/ssh reload
で設定を反映させる- OSをubuntuからdebianに変えて同じことを試す
- GatewayPortsの値をyesに変える
- remoteにて
netstat -lt | grep 3128
を実行しました。結果は以下の通り、localhostにしかバインドされていません。
tcp 0 0 localhost:3128 0.0.0.0:* LISTEN tcp6 0 0 localhost:3128 [::]:* LISTEN
- remoteにて
socat tcp4-listen:3128,reuseaddr,fork TCP:127.0.0.1:3128
を実行しました。結果、E bind(5, {AF=2 0.0.0.0:3128}, 16): Address already in use
というメッセージがでてエラーになりました。netstat、lsofで確認しましたが、0.0.0.0:3128
は使われていないみたいです。
補足
- GatewayPortsの設定を使わず別の手法を用いて、同じことを実現することはできると思います。しかし、できるだけこのやり方でやりたいです。
SSHの設定ファイル
GatewayPorts以外何もいじっていません。
#KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes GatewayPorts yes X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes PrintMotd no #PrintLastLog yes #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #UseDNS no #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Allow client to pass locale environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server
参考にしたもの
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/10 11:29
2021/04/10 11:41
2021/04/10 11:47