Tailscale を Windows で使う際に SSH 接続できなくて困った
tl;dr
- Mac から Mac に繋いだり、Windows から Mac に繋ぐ分には問題なかった
- 私の環境では OpenSSH サーバーをインストールすると解決
はじめに
普段 Macbook Air から Mac Studio に Tailscale を使っているので、Macbook Air から Windows にも繋ぎたい。ただこれが一筋縄では行かなかった。
事の発端は下記のエラーでした。
> ssh username@XXX.XXX.XXX.XXX
ssh: connect to host XXX.XXX.XXX.XXX port 22: Operation timed out
まあ、いわゆる SSH 接続エラーというかタイムアウトなのですが、Mac から Mac に接続する際は何も設定など不要で繋げられたのです。確認のため Windows から Mac に繋ぐ場合も問題なし。つまり、Windows の受信側に問題があることまでは早い段階で辿り着きました。
まず、IP アドレスが正しいかを確認。tailscale コマンドで確認できます。
> tailscale status
XXX.XXX.XXX.XXX macbookair googleusername@ macOS -
XXX.XXX.XXX.XXX macstudio googleusername@ macOS -
XXX.XXX.XXX.XXX windows googleusername@ windows active; direct ...
はまりポイントひとつめ。ここで自分の場合、Mac 側と Windows 側でユーザ名を変えていた。単に IP アドレスで繋ぐ場合は接続元のユーザ名を受け継いでしまうため、明示的に指定しなければならないことに気付くまでに時間がかかりました。
x: ssh XXX.XXX.XXX.XXX
o: ssh username@XXX.XXX.XXX.XXX
なんだあたりまえじゃんと言われるかもしれませんが、Mac から Mac に繋ぐ際はキーストローク数を減らしたいので IP アドレスのみで接続していたことが仇になりました。
いずれにせよこの繋ぎ方に辿り着いたとて根本的な解決策にはなりませんでした。
次に Mac でファイアウォールをオフにしているため、その部分かと Windows でもオフにしてみようと模索。
「ファイアウォールとネットワーク保護」より「ドメインネットワーク」「プライベートネットワーク」「パブリックネットワーク」のうち、Tailscale の表記のあった「プライベートネットワーク」のトグルをオフに。結果的にこの変更は無関係でした。
Google 検索をしても Windows 10 の情報が出てきたり、何も設定せずとも動いてしまった記事が数多くあったり、難儀しました。そこで藁にもすがる思いで Claude という魔法(?)の道具を使ってみました。
Prompt: tailscale で macbook air から windows に繋ぎたい。これにかなりの時間を溶かしてしまったので、できるだけどこで失敗しているかを特定しつつ進めたい。必要な情報を私から聞き出して、解決のステップを最小化してください。
Response: わかりました。Tailscaleを使ってMacBook AirからWindowsに接続する問題を効率的に解決しましょう。まずは現状を把握するために、いくつか質問させてください。
- MacBook AirとWindowsの両方にTailscaleはインストールされていますか?
- 両方のデバイスでTailscaleにログインはできていますか?
- Tailscaleの管理コンソールで両方のデバイスが表示されていますか?
- MacBook AirからWindowsのTailscale IPアドレスにpingを送信したことはありますか?結果はどうでしたか?
- WindowsのファイアウォールでTailscaleの通信を許可していますか?
- 具体的にどのような方法でMacBook AirからWindowsに接続しようとしていますか?(例:リモートデスクトップ、ファイル共有など)
これらの質問に答えていただければ、問題の所在をより明確に特定し、効果的な解決策を提案できると思います。
ひとつひとつ答えて実行結果を貼り付けて。
ありがとうございます。提供していただいた情報から、問題の所在がより明確になりました。Tailscaleの設定自体は正しく行われているようです。pingが通っていることから、基本的な接続は確立されています。問題はSSH接続ができないことのようです。
以下のステップで問題解決を進めましょう:
- Windowsで SSHサーバーの確認:
WindowsでSSHサーバーが実行されているか確認する必要があります。Windows 10/11では、「オプション機能」からOpenSSHサーバーを有効にできます。
a. Windowsの設定を開き、「アプリ」→「オプション機能」に移動します。
b. 「機能の追加」をクリックし、「OpenSSH サーバー」を探して追加します。- Windowsファイアウォールの設定:
SSHポート(通常は22番)がファイアウォールで開放されているか確認します。
a. Windowsのコントロールパネルを開き、「システムとセキュリティ」→「Windows Defender ファイアウォール」を選択します。
b. 「詳細設定」をクリックし、「受信の規則」を選択します。
c. 「新しい規則」をクリックし、ポート22を開放する規則を作成します。
...
なるほど。Tailscale 側でよしなに OpenSSH サーバーを起動してくれると思ったのが間違いだった。上記は Windows 10 の設定のようで、実際は「設定」「システム」「オプション機能」「オプション機能を追加する」「機能を表示」「OpenSSH サーバー」と進めてください。具体的な手順は下記の記事を参考にしました。ありがとうございます。
OpenSSH サーバーを起動するにはこれまた上記の記事に書かれている事そのままですが、ファイル名を指定して実行(Windows + R)から、services.msc
を実行、OpenSSH SSH Server を右クリックし、プロパティで「スタートアップの種類」を自動に、「サービスの状態」を開始にすると良いです。
ここまで進めると SSH 接続ができるようになっているはずです。おつかれさまでした。
ssh username@XXX.XXX.XXX.XXX
Discussion