/
カテゴリー

近年、ICTSCでは大会をオンラインで開催することが増えてきています。その際、必要となるのがSSH接続とダイナミックポートフォワーディング(SOCKSプロキシ)です。本稿ではそれらの方法をご紹介します。

SSHとダイナミックポートフォワーディング

SSHはリモートのサーバに接続し、シェルを実行できるサービスです。Linuxなどで標準的に利用されており、サーバを運用する上でも必須となる技術です。

ダイナミックポートフォワーディングはSSHサーバを介して通信を行える機能です。例えば、SSHサーバにダイナミックポートフォワーディングを行い、SOCKSプロキシに対応しているアプリケーションで接続することで、SSHサーバからのみ接続ができるサーバに接続することができます。

ICTSCにおいては、参加者のミスオペレーションや故意に脆弱に作っている問題環境があるため、問題環境をグローバル環境に晒さないようにしています。そのため、参加者には、グローバルIPを設定してあるサーバにSSH接続してもらい、必要に応じてダイナミックポートフォワーディングしてもらうことで、問題環境に接続してもらう形が多くなっています。

SSH接続の方法

Windows 10 / Mac OS X / Linux の環境のおいて共通のコマンドで接続できます。Windows 10の場合はコマンドプロンプト、もしくはPowerShellを起動したうえで、コマンドを実行してください。Mac OS X / Linux の場合はターミナルを起動し、コマンドを実行してください。

パスワード認証の場合

ssh $USER_NAME@$HOST

$USER_NAME にはログインユーザーの名前を、$HOST には接続したいホストのドメイン名、もしくはIPアドレスを入力します。接続後のパスワードを求められるので、入力してください。

公開鍵認証の場合

公開鍵認証方式でsshを行う場合は、手元にある秘密鍵ファイルを指定して接続します。

ssh $USER_NAME@$HOST -i $KEY

$USER_NAME にはログインユーザーの名前を、$HOST には接続したいホストのドメイン名、もしくはIPアドレスを、$KEYには秘密鍵ファイルのパスを入力してください。

例として、 test.example.comuser としてパスワード認証でログインするとします。 以下のように、ホストへの接続に成功した場合はパスワードを問われるのでuser のパスワードを入力します。初めてホストに接続する際には、初めてホストに接続していることを確認されるので yes と入力します。

$ ssh user@test.example.com
The authenticity of host 'test.example.com (***.***.***.***)' can't be established.
ECDSA key fingerprint is SHA256:***************.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'test.example.com' (ECDSA) to the list of known hosts.
user@test.example.com's password:

正常にログインできた場合、自由に操作できるシェルが立ち上がっているはずです。問題を解くには開いたシェルから更に問題のVMにSSH接続する必要があるでしょう。

Windows 10 以前の環境には ssh コマンドがインストールされていないため、自分でインストールする必要があります。[こちら](https://github.com/PowerShell/Win32-OpenSSH/releases) からダウンロードし、インストールしてください。

ダイナミックポートフォワーディングの方法

ダイナミックポートフォワーディングを行うには、通常のSSH接続に加えてオプションを追加します。具体的には以下のとおりです。

ssh -D $PROXY_PORT $USER_NAME@$HOST

$PROXY_PORTにはダイナミックポートフォワーディングをするポートを指定します。SOCKSプロキシに対応しているアプリケーションは、ここで指定したポートでデータを送受信することで、SSHサーバを介して目的のサーバに接続することができます。

SOCKSプロキシの使い方

Windows 10

設定 > ネットワークとインターネット > プロキシ を開くと以下の図のようになります。

そのうえで、以下のように設定することでSOCKSプロキシを使うことができます。

  • プロキシサーバーを使う をオン
  • アドレスsocks://127.0.0.1 を入力
  • ポート$PROXY_PORT で設定した値を入力

Mac OS X

設定 > ネットワーク > 詳細 > プロキシ を開くと以下の図のようになります。

file

そのうえで、以下のように設定することでSOCKSプロキシを使うことができます。

  • SOCKSプロキシ にチェックをつける
  • SOCKSプロキシサーバ127.0.0.1$PROXY_PORT を入力

Linux

アプリケーションによって異なります。どうしてもわからない場合はFirefoxをインストールし、以下の方法で接続してください。

Firefox

オプション > ネットワーク設定 > 接続設定 を開くと以下の図のようになります。

file

そのうえで、以下のように設定することでSOCKSプロキシを使うことができます。

  • 手動でプロキシを設定する を選択
  • SOCKS ホスト127.0.0.1 を入力
  • SOCKS ホスト と同じ行の ポート$PROXY_PORT を入力
  • SOCKS v5 を選択

まとめ

以上の方法で、問題環境へはアクセスできるはずです。みなさん、頑張ってください。

 /
カテゴリー

ICTSC2018 1次予選の予選環境にアクセスするためには、踏み台サーバを経由してアクセスする必要があります。踏み台サーバへは、SSHもしくはVNCを用いて接続することが出来ます。

macOS

SSHを用いる場合

ターミナルを開き、以下のコマンドを実行します。

$ ssh -D [proxy-port] -p [port] [user]@[remote addr]

VNCを用いる場合

インストール方法

homebrewを用いてインストールする場合は以下のコマンドを実行してください。

$ brew cask install vnc-viewer

公式サイトを用いる場合はこちらからダウンロードしてください。

接続方法

Spotlightなどで「VNC Viewer」を開き、上部のテキストボックスにホスト名とポート番号を入力してEnterを押します。

その後、ユーザ名とパスワードを入力してログインします。

Windows

SSHを用いる場合

こちらでは、SSH接続するため環境をMobaXterm、ブラウザはfirefoxで説明させていただきます。
※MobaXterm未インストールの方はコチラから無料の方をダウンロードしてください。
※firefox未インストールの方はコチラからダウンロードしてください。

接続方法

  • MobaXtermの設定
    • Dynamic port forwardingを用いた新しいtunnelingを追加します。
    • 使用するポート番号と、接続先のipアドレスユーザー名ポート番号を入力してください。
  • firefoxの設定
    • ネットワークプロキシの接続から手動でプロキシを設定します。
    • その際、SOCKSの欄にipアドレスポート番号を設定してください。

VNCを用いる場合

※UltraVNC未インストールの方はこちらからダウンロードしてください。

  1. 「VNC Server」の項目に接続先ip addressを入力します
  2. 右側にあるConnectを押して接続完了です。
 /
カテゴリー

こんにちは!運営委員の門脇です!

ICTSC6に参加して頂きました皆様、お疲れ様でした!

 

 

さて、準備期間中に運営はラック内配線の整理もやっていました。

今回は「運営委員が何をしていたか」を少しでもご紹介できれば、と思います。

続きを読む

 /
カテゴリー

みなさんこんにちは,トラコン未経験者にして初運営の市川です.不名誉なニュースで一時期名前が挙がった大学に通っています.

今回は僕が普段使用している作業環境について少しご紹介したいと思います.

OS

一般によく使われているOSといえば

  • Windows

  • Macintosh

  • Linux

の3つですが,僕はMacintoshを使っています.(以降Macとします)

理由としてはいろいろありますが,僕はキーボード設定に関して気に入っています.

意外と注目されないのですが,標準で配列の切り替えや修飾キーの入れ替えをユーザ向けにサポートしているのはMacとLinuxの一部ディストリビューションのみです.特にMacの場合はキーボード毎に設定を変えることができるため,英字配列と日本語配列のキーボードを同時に接続して操作することができます.LinuxのX環境で配列を変えるにはsetxkbmapなどを使いますが,これはX環境側での設定にすぎないためキーボードの識別までは行うことができません.また,キーボードの接続が一旦切れるとリセットされるため,setxkbmapで行った設定は永続化させるのが少しめんどくさかったりします (.*rcに書くだけではterminalを立ち上げる必要がある).

 

結局のところ好みの問題です.ファイルフォーマットがHFS+なの地味に使いづらいし.

Terminal

iTermを使っています.透過設定ができるのと,tmux -CCが便利なので気に入ってます.

Shell

もともとUbuntuを使っていたのでbashの方がよく慣れているのですが,preztoというプラグインを使うためzshを使っています.これがなかなか便利で,zshの標準機能をいいカンジに使いやすくしてくれる他にもいろんなプラグインが入っています.

  • completion: 複数候補の中から一つを選択するような操作において,Tabの他にCtrl+f,b,n,pや矢印キーで候補選択を行うことができます.結構便利で,たとえばcdするときに補完だけで目的のディレクトリにたどり着くことができます.

completion

  • git: 現在のブランチ,コンフリクト状態などがひと目でわかるようになっています.(上のgifではmasterブランチで作業をしています)

  • ssh: ~/.ssh/configやknown_hostsをパースして,接続先の候補をリストアップしてくれます.

ssh

またpreztoはzsh標準の機能の上に処理を加えているため,非常に軽いです.各プラグインもgitのsubmoduleで管理されており,アップデートするためのコマンドも提供されているのでメンテナンスも簡単に行うことができます.

 

以上でざっくりと僕の作業環境の一部を紹介しました.実際にはもっと多くのツールを使用しますが,今回紹介したpreztoは割とオススメなので是非試してみてはいかがでしょうか.