リモート接続がしたい!
リモート接続用のアプリケーションなんて星の数ほどあるじゃないかと思ったそこのあなた。使えないんです。大学のセキュリティ×Linux機の掛け合わせによるガチガチセキュリティではね!!!!
流石に名前を書くのはやめますが、大体のアプリケーションがだめでした。工夫したことといえば
- シングルログインになるように、職場(便宜上職場と書いてますが研究室です。今のところは院生なので)のマシンからはログアウトしておく
- グラフィックのドライバを変えた
- 実に様々なリモート接続クライアント&サーバを試した
- ファイアウォールの設定をゴニョゴニョした(今はもとのストリクトな設定に戻してます)
などなど……。まあ上げればキリがないのだが。そして最終的に行き着いた先が Tailscale であったというわけ。ありがたやありがたや。最近はVPNの脆弱性が指摘されていたり、何かとセキュリティ関連のインシデントが多かったので、セキュアなリモート接続が構築できるアプリケーションには頭が上がらないのである。
と、まあ前置きは長くなったが、以下に使い方の説明を残しておく。
まずはOpen-SSH server をインストールしよう
いきなりあれなのだが、RSA暗号のキーペアを作成するのに使用する。というかどうやらtailscale自体がSSHのwrapperのようだ。VPNの脆弱性といえば、アカウント情報(IDとパスワード)さえ突破できれば侵入できるというのがWell Knownなわけだが、Tailscaleはキーペアでの認証ができるのでそのへんが安心だったりする。
余談だが、apt-get update の後に apt-get upgrade するのをセットにしている。特に開発しているわけではないので、aptitude upgrade あたりまでで大体ことがすむので、特別な理由でもなければ普段からセキュリティーの強化はするに越したことはない。
SSHのインストールおよび設定は以下のサイトを参考にさせてもらった。
ssh-client & ssh-server のインストール
sudo apt-get update
sudo apt-get upgrade
# おそらくclient の方はデフォルトで入っているはず
sudo apt-get install openssh-server (接続される側のマシン)
sudo apt-get install openssh-client (接続する側のマシン)
# 状態の確認
systemctl status sshd.service
# もしactive(running) と表示されていなかったら
sudo systemctl start sshd.service
sudo systemctl enable sshd.service
サーバ(接続される側)の設定
# もとの設定ファイルのバックアップをとる
sudo cp -p sshd_config sshd_config.orig
sudo chmod a-w sshd_config.orig
# 接続される側の設定ファイル編集
sudo vim sshd_config
パスワード認証だとセキュリティ激甘になってしまうのでキー認証にしてしまうのがおすすめ。サーバに直接アクセスできない環境の場合、初回のみパスワード認証にしておき、ペアキーを作成・サーバ側にコピーしてキー認証に変更すると良いと思います。
# 新しい設定でエラーが出ないか確認
sudo sshd -t -f sshd_config
# 終わったら設定の変更を反映させる
sudo systemctl restart sshd.service
公開鍵認証の導入
ここは簡単なのでさくっと行ってしまいましょう。
# クライアント(接続する側のマシンでの作業)
# -t ed25519 はアルゴリズムの指定、-C "コメント" でコメントを残すことができる。
ssh-keygen -t ed25519 -C ""
# サーバに公開鍵をコピー
ssh-copy-id user_name@ip_address_or_domain_name
これでサーバにSSH接続できるようになったはずです。試しに
ssh user_name@ip_address_or_domain_name
でSSHできることを確認してください。そして
sudo vim /etc/ssh/ssdh_config
# /etc/ssh/sshd_config (/Passwod などとすればvimでファイル内の文字列を検索できる)
PasswordAuthentication no
としてしまえばOKです。
Tailscale のインストール
これは最近はやっているだけあって各所にインストール方法が記載されているので慣れたもので、
からOSを選んでソースコードをダウンロードします。ダウンロードしたディレクトリに移動し、
sudo apt-get install ./tailscale*.deb
などとしてインストールしてください。
インストールできたら
sudo tailscale login
### ここでログイン用のurlが出てくるので移動し、指示に従ってログインしてください ###
# 無事ログインできた場合 Success! の文字が表示されます。
# tailscale を起動
sudo tailscale up
# tailscale をsystemd に登録
sudo systemctl start tailscaled
sudo systemctl enable tailscaled
# tailscale でのipアドレスを表示
tailscale ip -4
[ipv4 address]
これで終わりです。クライアント・サーバどちらも同じ手順でtailscaleをインストールしておきます。
tailscale status | grep [登録名 一部でもOK]
などとすれば、自分のアカウントで登録されたマシンの状態が見られます。
接続できる状態になっていれば一番右側にactive;relay "tok", などと表示されます。ちなみにrelay "tok"は”東京のリレーサーバを中継している”の意です。
筆者は通常のSSH同様パスフレーズ認証かと思っていてしばらく詰みました(普段はイーサネット内なので完全に油断していた)。もし片方をwifiなどでつないでいる場合はUSBなどで鍵をダイレクトにコピーすることになるかと思います。