LoginSignup
3
3

More than 3 years have passed since last update.

Proxy下でSSHを使いたい!!!

Last updated at Posted at 2020-12-14

概要

SSHが禁止されているProxy下でSSHを使う方法です。
私が通っている学校でこれのせいで躓いたので記事にしました。

注意

Linux向けに記事を書いています。
WindowsやMacの方はいい感じに変えてください。
また、宛先のホストの443ポートがsshで開いている必要があります。(GitHubだとssh.github.comが対応)

忙しい人向け

  1. corkscrewをインストール
  2. 以下の形式で~/.ssh/configに追記
Host hoge
  User fuga
  Hostname hoge
  Port 443
  IdentityFile ~/path/to/private/key
  ProxyCommand corkscrew <プロキシサーバーのドメインかIP> <プロキシサーバーのポート> <宛先のドメインかIP> <宛先のポート>

(ドメインにはhttp://などはつけない)

  1. ssh fuga@hogeを実行
  2. 接続できる!!!うれしい!!!

解説(何してるか気になる人向け)

corkscrewって何

HTTP プロキシによる SSH のトンネリングを行うためのツール
Archwikiより引用

というわけでcorkscrewはHTTPProxy下でSSH通信を行いたいときに、プロキシサーバーに対して偽装を行うためのツールとなります。

configの中身

重要な点だけ掻い摘んで紹介します

Port 443

これは宛先ポートの指定です。
HTTPトンネリングを行うことでプロキシサーバーの監視を掻い潜るのでこれを設定しない場合プロキシサーバーから403(利用禁止)のレスポンスが返ってきます。

ProxyCommand ...

ProxyCommand corkscrew <プロキシサーバーのドメインかIP> <プロキシサーバーのポート> <宛先のドメインかIP> <宛先のポート>

ProxyCommandはサーバーへの接続方法の指定となっています。
そしてここでcorkscrewを使い、トンネリングを行うことによってプロキシサーバーを誤魔化しつつSSH接続を行うことができます。

使用例(GitHub)

GitHubではssh.github.comの443ポートに対してトンネリングを行うことができます。
ここではSSH鍵を~/.ssh/key、プロキシサーバーをproxy.server.dayo.com、ポートを12345とします。

~/.ssh/config
Host ssh.github.com
  User git
  Hostname ssh.github.com
  Port 443
  IdentityFile ~/.ssh/key
  ProxyCommand corkscrew proxy.server.dayo.com 12345 ssh.github.com 443

このファイルを書いたあと、ssh -T git@ssh.github.comを実行すると返答を確認できます。

PTY allocation request failed on channel 0
Hi isso0424! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
zsh: exit 1     ssh git@github.com

さいごに

HTTPトンネリングという物の存在を今日始めて知ったので「世界って便利だなぁ...」ってなりました。
これからもこんな感じで広い方面に知識を付けていけたらと思います。

参考資料

Archwiki-HTTPトンネリング
GitHub-HTTPS ポートを介して SSH を使用する

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3