はじめに
注意 この記事は、ネットワーク初心者が試してみたというものですので、セキュリティの設定が正しくできているという保証はできません。実際に試す際には、他のソースも参照し、自己責任で実行していただくようにお願いします。
経緯
デスクトップパソコンを買ったので、せっかくなら自宅のパソコンにどこからでもアクセスして作業できるようにしよう、ということでやってみました。
環境
サーバー
- CPU:AMD Ryzen7 7840HS
- RAM:32GB
- ストレージ:1TB SSD
- OS:Ubuntu 20.04
クライアント
- CPU:Apple M1
- RAM:16GB
- ストレージ:512GB
- OS:MacOS Sonoma
やったこと
1. 準備
もともとWindows11が入っているPCだったのですが、サーバーとして使う用途ではLinux環境のほうが都合が良いので、Ubuntuをインストールしてデュアルブートにしました。
2. sshサーバーのセットアップ
やったことを逐次書いていきたいのですが、セキュリティ的に問題があったらまずいので参考にしたサイトを置いておきます。(手抜きですいません)
参考:SSH サーバのインストール,設定(Ubuntu 上) - 金子邦彦研究室
最低限、
- rootユーザーでのログインを禁止
- パスワード認証を不許可
- ポート番号の設定
をして、ファイアウォールでアクセス制限をかけることはやっておいたほうがいいと思います。
3. ローカルネットワークから接続してみる
先程の設定でパスワード認証をoffにしたので、公開鍵でログインしてみます。
鍵の作成、配置
クライアント側で公開鍵を作成します。
上のコマンドを実行すると公開鍵と秘密鍵のペアが生成されます。公開鍵の方をサーバーのログインしたいユーザーのホームディレクトリにおいておきましょう。
やりかた:サーバー側の /home/<ログインしたいユーザー>/.ssh/authorized_keys の中に公開鍵を書き込む。
公開鍵を使ったssh接続については、ネット上にたくさん資料があるので、詳しくはそちらを参照してみてください。
ログイン
ここまでの設定が正しくできていれば、同じLAN内からは接続ができているはずです。
サーバー側で、
$ hostname
を実行して、出てきたホスト名にsshでログインしてみましょう。
$ ssh -i <
うまくいかないときは、ネットワークがサーバー側とクライアント側で同じかどうか確認してみてください(自分はこれで数十分溶かしました😭)
4. VPNを設定する
このままだと、同じネットワーク内からしか接続できないので、作業環境として使うためには、外部からもアクセスできるようにする必要があります。
代表的なやり方としては、
- ルーター等の設定を変更して、自宅のネットワークのグローバルIPアドレスへのアクセスを、自分のサーバーに向かわせるようにする
- 別のサーバーを用意して、自宅のサーバーとクライアントを、同一の仮想的なローカルネットワーク(VPN)に配置する
などがあります。
1の方法は制約やリスクが大きいので、今回は2の方法でやってみることにしました。
2の方法も、自前でやろうとするとなかなか大変なのですが、jackのメンバーに、tailscaleというサービスを教えてもらい、サクッと実現できました。
クライアントとサーバーにtailscaleアプリを入れて、同じアカウントでログインするだけで簡単にVPNを構成してくれるので非常におすすめです。
5. 完成
こんなかんじで、無事sshできるようになりました!
おわりに
自宅のPCにsshできるようになると、外出先からもいつもと同じ環境で作業できるようになるのですごく便利です!
ぜひお試しください。
サーバーの電源は繋ぎっぱなしにしないとその恩恵は受けられないので、くれぐれもご注意を