ubuntu
カテゴリ
Windows 連携の覚書
2026/08/08 17時'install'
Ubuntu Server に少しは移行したとは言え、メイン使用は Windows なのだが、Ubuntu Server 関連の設定が増えているので、クリーンインストールした時に戸惑わないように覚書。

■SSH接続

あふWのファンクションキーに以下を登録してある。
[F1]「wt -p "Ubuntu Server (tmux)"」
[F2]「wt -p "Ubuntu Server"」

これはターミナルを呼び出すコマンドだが、ターミナルの設定がされていないとSSH接続できない。

C:\Users\vafee\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

[F1]プロファイル「Ubuntu Server (tmux)」に、背景を黒色にしてコマンドは以下
「ssh -t -o ServerAliveInterval=60 [email protected] "tmux a || tmux"」

[F2]プロファイル「Ubuntu Server」に、背景を黒色にしてコマンドは以下
「ssh -t -o ServerAliveInterval=60 [email protected]

Windowsのターミナルは背景を青色とした、これらの設定が「settings.json」に記載されているので、バックアップを取っておき、上書きすればOK。

■SSH接続パスワード

公開鍵認証機能を使ってパスワードを省略していたので、以下のフォルダー以下をバックアップして上書き。

C:\Users\vafee\.ssh

■Ubuntu Server のデータをwindowへ送るタスクマネージャーの登録

旧機種でタスクマネージャーのバックアップ。タスク名が amatsukaze_send _05、保存先C:\FSW_32\script\backup
Export-ScheduledTask -TaskName "amatsukaze_send_05" | Out-File -Encoding UTF8 "C:\FSW_32\script\backup\amatsukaze_task.xml"

新機種でインポート。
Register-ScheduledTask -Xml (Get-Content "C:\FSW_32\script\backup\amatsukaze_task.xml" | Out-String) -TaskName "amatsukaze_send_05"

実行ユーザーのパスワードは含まれないので、インポート後にタスクの「実行アカウントとパスワード」を再設定することで、テスト実行で移行できた。

■タスクマネージャーで、スリープ解除が出来ない

以前はWindows機を録画失敗を防ぐために常時稼働していたが、Ubuntu Server へ移行したので、未使用時はスリープ設定をしていた、毎朝4:15に上記のタスクマネージャーで、スリープ解除して、Ubuntu Server のバックアップ・画像・TVエンコードファイルを纏めてWindows機に送っているのだが、 OptiPlex7070 と同じ設定で、INTEL NUC11PAHi5ではスリープ解除出来なくて、キーボード操作でようやくスリープ解除となった。Windowsのスリープには大きく2系統ある

• 従来型のS1〜S3スリープ: RTC(リアルタイムクロック)のタイマーだけで自律的に電源復帰できる。旧OptiPlex7070はこちらで、タスクスケジューラーの「スリープを解除する」設定だけで指定時刻に自動復帰できていた。

• Modern Standby(S0 Low Power Idle): 近年のノートPC・NUC等で標準の省電力方式。ネットワーク接続を維持したまま低電力状態を保つ設計だが、機種・ドライバによってはタイマーだけでのフル復帰に対応しておらず、キーボード/マウス操作やネットワークからの明示的なウェイクパケット等、「人や外部要因のトリガー」がないと復帰しないことがある。NUC11PAHi5はこちらに該当した。

タスクマネジャーで NUC11PAHi5 のスリープ解除出来ないとなると、録画ファイルをエンコード終了後に、Ubuntu Server 側で、Windows機にコピーする様に、またスリープ開始時間を30分から2時間に変更し、夜の録画はほぼWindows機にコピー、ただし就寝2時間後もまだ残っていると、Ubuntu Server 側で失敗するので、1時間後に再トライ成功するまで繰り返す仕様変更する。

■Windows に OpenSSH Server セットアップ

今までは、WindowsからUbuntu Serverを操作してきたが、今度はUbuntu Serverからwindowsを操作するために、Windows に OpenSSH Server セットアップが必要となった。
# インストール
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
 
# 起動・自動起動化
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
 
# ファイアウォール(Publicプロファイルも含めて許可。TailscaleのI/FはPublic扱いされがち)
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' `
    -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Profile Any

導入確認
Get-Service sshd          # Status: Running であること
Get-NetFirewallRule -Name sshd | Select Name, Enabled, Profile

■SSH公開鍵認証の設定(ubuntu-sv → Windows方向)

push転送はubuntu-sv側が発信者(クライアント)になるため、通常のバックアップ(Windows→ubuntu-sv方向)とは逆向きの鍵設定が必要。鍵ペア自体は使い回せるので、機種変更時はWindows側への登録(ssh-copy-id相当)のみで済む。

鍵ペア生成(初回のみ・使い回し可)
# ubuntu-sv上で実行(既に作成済みなら不要)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_windows

公開鍵の登録【重要・管理者アカウント特有の落とし穴】:vafeeはWindows側でAdministratorsグループに所属している。

この場合、通常の C:\Users\vafee\.ssh\authorized_keys は無視され、OpenSSHは C:\ProgramData\ssh\administrators_authorized_keys だけを参照する。

ssh-copy-id はこの仕様に対応しておらず(cmd.exe向けのexec呼び出しで文字化けエラーを吐いて失敗する)、手動で管理者用ファイルに書き込む必要がある。

buntu-sv側で公開鍵の中身を表示してコピーする
cat ~/.ssh/id_ed25519_windows.pub

Windows機のPowerShell(管理者権限)で、コピーした内容を直接書き込む:
ew-Item -ItemType Directory -Force -Path C:\ProgramData\ssh | Out-Null
 
Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys `
    -Value "ssh-ed25519 AAAA...(ここに公開鍵の内容を貼り付け)... vafee@ubuntu-sv" `
    -Encoding ASCII
 
# 改行コードをLFに統一(Set-ContentのデフォルトCRLFはOpenSSHが嫌うことがある)
(Get-Content C:\ProgramData\ssh\administrators_authorized_keys -Raw) -replace "`r`n","`n" | `
    Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -NoNewline -Encoding ASCII

権限設定とサービス再起動:
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant SYSTEM:F
icacls C:\ProgramData\ssh\administrators_authorized_keys /grant Administrators:F
Restart-Service sshd

known_hosts の事前登録【重要・非対話実行でのハング防止】初回SSH接続時に出るホスト鍵確認プロンプト(yes/no)は、cron/systemd経由の非対話実行では誰も答えられず、プロセスが無期限にハングしたまま気づかれない、という事が発生している(4:15の定期バックアップでも、今回のリアルタイム転送でも同じ症状が出た)。

運用開始前に必ず手動で一度接続し、known_hostsに登録しておくこと。
 ubuntu-sv上で手動実行し、"yes" で承認する
ssh vafee@(WindowsのTailscale MagicDNS名) "echo test"
 
# パスワードなしで通ることも確認
ssh -i ~/.ssh/id_ed25519_windows [email protected](WindowsのMagicDNS名) "echo test"
 
# scpも同様に確認(TVフォルダへの書き込み権限も同時確認できる)
echo test > /tmp/scp_test.txt
scp -i ~/.ssh/id_ed25519_windows /tmp/scp_test.txt [email protected](WindowsのMagicDNS名):E:/TV/

記事一覧