Infra DevOps

インフラ構築のナレッジや、運用の自動簡易化に関する記事を書いていこうと思います

Proxy経由でオンプレミスからOracle Cloudに接続したときのメモ

Oracle Cloudにオンプレミスサーバから
接続しに行くときに調べたときのメモ。

オンプレミスからインターネットに接続する場合
プロキシサーバが80と443しか通信許可していませんでした。

なので、接続先側のサーバでsshを80で起動した上で

ssh -o "ProxyCommand nc -x [ProxyIP] [ProxyPort] %h %p" -p 80 [User]@[REMOTE_HOST]

で接続すれば良いと思いました。
でもインターネットの情報だとこれでプロキシ経由でのsshができるとあったのに、全然接続できない。

 

でいろいろ調べて過去にsquidでプロキシ作ったとき、
SSHで必要なCONNECTというのの許可を443しか実現させてないことを思い出しました。
++-----
/etc/squid/squid.conf
acl SSL_ports port 443http_access deny CONNECT !SSL_ports ←これ

++-----


sshを22、80、443で起動させておいて以下の切り分けコマンドしているときにそのことに気付いた。

# curl -u ユーザ -x プロキシIP:ポート ftps://接続先:80/
Enter host password for user 'ユーザ':
curl: (56) Received HTTP code 403 from proxy after CONNECT
# curl -u ユーザ -x プロキシIP:ポート ftps://接続先:443/
Enter host password for user 'ユーザ':
curl: (35) Encountered end of file
# curl -u ユーザ -x プロキシIP:ポート ftps://接続先:22/
Enter host password for user 'ユーザ':
curl: (56) Received HTTP code 403 from proxy after CONNECT


プロキシ経由のssh接続について上記設定の場合は443ポートを使ったsshdに接続する方が良いのは理解したけど
ssh -o "ProxyCommand nc -x [ProxyIP] [ProxyPort] %h %p" -p 443 [User]@[REMOTE_HOST]
と、ncコマンド(nmap-ncat)でいくら頑張ってもなぜかCONNECTの処理が行われなかったぽく接続できず。
ncコマンドでも-Xでconnectを指定できるものもあるらしいが、nmap-ncatだとどうやればいいかわからなかった。

SSHをプロキシ経由で実行するという部分に関してはncコマンドを諦めてcorkscrewという製品で実現させました。あんまりこのcorkscrew使いたくなかったけどどうしてもやらねばならず渋々利用。
最終的には
1.SSH接続先で443ポートによるssh起動
2.corkscrewインストール
3.$HOME/.ssh/configファイルでsshがプロキシを経由するように設定実施
# cat config
Host *
ProxyCommand /usr/local/bin/corkscrew プロキシIP プロキシポート %h %p
でプロキシ経由のssh接続ができました。