23
20

More than 1 year has passed since last update.

職場や研究室のPC(グローバルIPなし)に自宅からssh接続する方法

Last updated at Posted at 2020-08-10

はじめに

職場や研究室のPCにグローバルIPが割り当てられるケースはまれで、1つのグローバルIPを共有するNAPT(NAT)の傘下にあることがほとんどです。
この記事では、そのようなPCに対してもリモートポートフォワーディングを使用して自宅からssh接続できるようにする方法を紹介します。

なお、個人利用であればTeam Viewerなどのリモートデスクトップ系のソフトの方が楽かも知れません。
この記事はTeam Viewerが重くてやだ/商用利用できない、端末さえ叩ければ十分なのに、という人向けの記事です。

必要なもの

  • 職場/研究室のPC(※常時電源ON)
    • 固定グローバルIPがないLinux PCを想定
  • 自宅PC
  • 自宅PCからssh接続可能な、固定グローバルIPをもったLinuxサーバー(VPSなど)
  • ネットワーク管理者の許可 ← 重要

イメージ図

image.png

大まかなやり方

大まかには以下のような手順となります。

1. 職場PCでssh -fNR 12345:localhost:22 vpsを打っておく

2. 自宅PCからssh vpsssh localhost -p12345で多段ssh接続して職場PCに接続

詳しいやり方

職場で準備としてやっておくこと

あらかじめ、職場PCの~/.ssh/configにVPSへの接続情報を書いておきます(新規作成の場合はchmod 600 ~/.ssh/configしておくことを忘れずに)。

職場PCの「~/.ssh/config」にVPSへの接続情報を書いておく
Host vps  ←任意の名前を指定
User username  ←適宜変更
HostName xxx.xxx.xxx.xxx  ←適宜変更
Port 22
ServerAliveInterval 60
ExitOnForwardFailure yes
TCPKeepAlive no

Host,User,HostName,Portの行は適宜書き換えてください。また、(普通そうだと思いますが)VPSへのssh接続が鍵認証の場合で、職場PCのデフォルトの鍵とは異なるものを使用する必要がある場合はIdentityFileなどの情報も足してください。

なお、TCPKeepAliveをyesにしてしまうと、少しでも接続が切れると通信が閉じられてしまうのでnoのままにしておくことをお勧めします。

~/.ssh/configの準備ができたら、職場PCから以下のコマンドを叩きます。ポート番号は適当に12345にしています。

VPSにトンネルを掘りつつ常時ssh接続しておくコマンド
$ ssh -fNR 12345:localhost:22 vps

各オプションの意味は、

  • -f: バックグラウンド実行
  • -N: ssh先のシェルを開かない
  • -R: リモートポートフォワード(リモート側のポートをローカルのポートに繋ぐ)

です。

このコマンドによって、VPS側の12345番ポートに職場PCの22番ポートが常時フォワードされた状態になります。
つまり、VPS側でlocalhostの12345番ポートにssh接続を飛ばせば、職場PCの22番ポートにssh接続を飛ばしたことと同じになります。

このsshコマンドは、-fNオプションが付いているおかげで、実行するとバックグラウンドでプロセスが残り続けます。
実行したシェルを閉じてもsshのプロセスは残り続けるので、実行した後はexitで端末を閉じて大丈夫です。
(もしこのプロセスを終了したい場合はpsコマンドでプロセスIDを調べた上でkill [プロセスID]を叩いてください。)

動作確認: VPSから職場PCへ接続できることを確認しておこう

そのまま帰宅すると上手くいくか不安なので、帰る前にVPSからssh接続できることを確認しておきましょう。
VPSからの接続確認を行うために、まず職場PCからVPSに対して(常時接続のものとは別に)普通にssh接続します。

職場PCから普通にVPSへ接続
$ ssh vps

先ほど述べたとおり、VPS側でlocalhostの12345番ポートにssh接続を飛ばせば、職場PCの22番ポートにssh接続を飛ばしたことと同じになります。
すなわち、VPS上で以下のコマンドを叩けば職場PCにssh接続できます。

VPSから職場PCへのssh接続
$ ssh username@localhost -p12345

usernameは職場PCでの自分のユーザー名に変更してください。

これで職場PCへssh接続できた場合は成功です。帰りの支度を始めましょう。

自宅からの使い方

使う時は多段階でsshしてあげれば良いだけです。

  1. 自宅PCからVPSへssh接続(※自宅PCの~/.ssh/configにもvpsという名前で接続先が登録されてる想定)

    $ ssh vps
    
  2. VPSから職場PCへssh接続

    $ ssh username@localhost -p12345
    

おわり。

一発で自宅PCから職場PCまでssh接続を通したい場合は、以下の記事を参考に~/.ssh/configを書いてみてください。
→ 「多段SSHやポートフォワーディングを '.ssh/config' に書く - Qiita

参考記事

23
20
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
23
20