0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsでTailscaleを使用したリモートSSH接続手順

Last updated at Posted at 2025-04-28

概要

普段自宅のデスクトップPCで趣味開発をしているが、長期で実家に帰るときにクソ雑魚ノートPCでしか作業できないのはしんどいのでノートPCからデスクトップPCにリモートログインできるようにしたい
Chromeリモートデスクトップを使えば簡単に潜れるがコーディングしたいだけの割りには重たいので、VSCodeでSSH接続することを目指す
ネットワークなんもわからず、以前ZeroTierを使った接続を試したがうまくいかなかったため、Tailscaleを使った方法を試した

参考文献:Tailscaleと言う恐ろしく簡単なVPNを見つけたんだが。。。

環境

デスクトップPC:Windows11
ノートPC:Windows11、VSCodeインストール済み
Wi-Fiルータ:マンションの壁に埋め込まれている。これのせいでルータのグローバルIPが取得できなくて困った

Tailscaleの設定

デスクトップPCとノートPCが同じネットワーク(同じ部屋で同じWi-Fiに)に接続していた場合のSSH接続は簡単にできたが、外出先でノートPCが自宅デスクトップPCと異なるネットワークに接続していた場合そうもいかないらしい。
そこでTailscaleを使うと、2つのPCが同じ仮想ネットワークに接続することで外出先でも同じネットワークに接続しているかのようにふるまえるらしい(?)

1. セットアップ
Tailscaleのセットアップ方法を参考に公式サイトでアカウントを作成し、デスクトップとノートの両方にクライアントアプリをインストールする
私はGitHubアカウントで登録しました

2. IPアドレスと接続の確認
Machines - Tailscaleにアクセスすると以下のような画面が出てくるデスクトップ側とノート側のLAST SEENがConnectedになっていることを確認し、デスクトップ側のIPアドレス(赤く囲った部分)をメモしておく

タイトルなし.png

デスクトップ側の設定

1. OpenSSHサーバのインストール
この記事を参考にしました

OpenSSHサーバがインストールされてるかは以下のコマンドでも確認できる

powershell(管理者権限)
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

OpenSSH.ServerStateInstalledと表示されていればOK

2. ファイアウォールの許可
設定>プライバシーとセキュリティ>ファイアウォールとネットワーク保護>ファイアウォールによるアプリケーションの許可
OpenSSH Serverのプライベート、パブリック両方にチェックを入れる

3. SSHの設定ファイル編集
VSCode(じゃなくてもいいが)でC:\ProgramData\ssh\sshd_configを開く
ファイルが存在しない場合は、C:\Windows\System32\OpenSSH\sshd_config_defaultにあるデフォルト設定をコピーして作成
以下の項目を確認、修正する

sshd_config
Port 22
PermitRootLogin prohibit-password
PasswordAuthentication yes
ListenAddress <IPアドレス>

<IPアドレス>はさっきメモったIPアドレス
設定を反映させるため、SSHサーバを再起動する

powershell(管理者権限)
Restart-Service sshd

SSHサーバーが起動していることを確認

powershell(管理者権限)
netstat -an | findstr ":22"

LISTENINGが表示されていれば成功

ノート側(VSCode)の設定

1. 拡張機能のインストール
VSCodeに拡張機能Remote-SSHをインストールする
image.png

2. configファイルの設定
~/.ssh/configファイル(ない場合は作成)を編集し、以下を追加

powershell(管理者権限)
Host <Host Name>
    HostName <IPアドレス>
    User <username>
    Port 22
  • <Host Name>は表示されるホスト名なのでなんでもいい
  • <username>はデスクトップPCで使用しているWindowsアカウント名
  • <IPアドレス>はさっきメモったIPアドレス

3. リモートエクスプローラーから接続

左のバーにある拡張機能Remote-SSHを開くとSSHのところに先ほどの <Host Name>が書いてあるので、右矢印から「現在のウィンドウで接続」or その右をクリックして「新しいウィンドウで接続」
image.png
真ん中上のほうに出てくるのでWindowsを選択
image.png
Windowsアカウントのパスワードを入力
image.png
エクスプローラーを開いて、リモートに接続しましたと書いてあればOK
「フォルダーを開く」から好きなフォルダを開いて作業できる
image.png
作業を終了するときは左下の青い部分をクリックして真ん中上に出てくるやつの一番上に「リモート接続を終了する」とあるのでそれを押せばリモート接続を切断できる
image.png
image.png

接続テスト

1. pingテスト
ノートPCで

powershell(管理者権限)
ping <IPアドレス>

を実行してIPアドレスからの応答を確認できる
応答があれば

powershell(管理者権限)
<IPアドレス> に ping を送信しています 32 バイトのデータ:
<IPアドレス> からの応答: バイト数 =32 時間 <1ms TTL=128
<IPアドレス> からの応答: バイト数 =32 時間 <1ms TTL=128
<IPアドレス> からの応答: バイト数 =32 時間 <1ms TTL=128
<IPアドレス> からの応答: バイト数 =32 時間 <1ms TTL=128
<IPアドレス> の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

と返ってくる

2. SSH接続テスト
ノートPCのpowershellからメモったIPアドレスにSSH接続する

powershell(管理者権限)
ssh <username>@<IPアドレス>
  • <username>はデスクトップPCで使用しているWindowsアカウント名
  • パスワード入力を求められるので、Windowsアカウントのパスワードを入力

接続できなかった場合

powershell(管理者権限)
ssh: connect to host <IPアドレス> port 22: Connection timed out

などと出る。接続できた場合はexitと入力してEnterで抜けられる

3. SSHポートの開放状況を確認
デスクトップPCのSSHポートが解放されているかノートPCから確認できる

powershell(管理者権限)
Test-NetConnection -ComputerName <IPアドレス> -Port 22

接続できなかった場合

powershell(管理者権限)
ComputerName           : <IPアドレス>
RemoteAddress          : <IPアドレス>
RemotePort             : 22
InterfaceAlias         : Tailscale
SourceAddress          : <ノートPCのIPアドレス>
PingSucceeded          : True
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded       : False

などと出る。接続できた場合

powershell(管理者権限)
ComputerName     : <IPアドレス>
RemoteAddress    : <IPアドレス>
RemotePort       : 22
InterfaceAlias   : Tailscale
SourceAddress    : <ノートPCのIPアドレス>
TcpTestSucceeded : True

と出る

運用

実家に帰る前にデスクトップPCで

powershell(管理者権限)
Restart-Service sshd

を実行して電源を切らずに放置しておく
実家に帰ったあと、VSCodeを開きリモートエクスプローラーから接続の手順をこなせばOK

おわりに

SSHキー認証にした方がセキュリティ的には安全らしいので試しましたが、よくわからずうまくいかなかったので一旦断念しました。誰か教えてください。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?