■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はこちらに該当した。
• 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/