OpenSSHçµç±ã§GUIã¢ããªãã·ã¹ãã ã¯ãªããããŒãã䜿ãããçç±
ååãWindowsã«OpenSSHçµç±ã§ãªã¢ãŒããã°ã€ã³ããæ®µéã§ã¯ãGUIã¢ããªã±ãŒã·ã§ã³ãèµ·åã§ããªããšèª¬æãããããããèµ·åãããã±ãŒã¹ã¯èããããã
äŸãã°ãWSL2ãHyper-Vãªã©ã®ä»®æ³ç°å¢ã§Linuxãã»ãã®OSãå®è¡ããŠããéããããããã¹ãåŽã®ãã¡ã€ã«ãšã¯ã¹ãããŒã©ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšããMicrosoft Edgeã§ç¹å®ã®URLããã¡ã€ã«ãéããããšãã£ãå Žåã ã
ãŸããã»ãã®OSããOpenSSHçµç±ã§Windowsãžãªã¢ãŒããã°ã€ã³ããŠãããã¹ãããŒã¿ã®ã³ããŒïŒããŒã¹ãè¡ãããããšãããã ãããOpenSSHçµç±ã§ã¯ãã·ã¹ãã ã¯ãªããããŒãã«ã³ããŒã§ããªãã®ã ãäœãšãããŠããããããšãã§ããããã«ããããããããã°ãè€æ°ã®PCã䜿ã£ãŠããå Žåãªã©ã¯ç¹ã«ããšãŠã䟿å©ã«ãªãã¯ãã ã
å®çŸæ¹æ³ïŒããããã»ã¹ãšããããã»ã¹ã®éã®éä¿¡
OpenSSHçµç±ã§Windowsã«ãªã¢ãŒããã°ã€ã³ããç¶æ ã§ãWindowsã§GUIã¢ããªã±ãŒã·ã§ã³ãèµ·åããããã·ã¹ãã ã¯ãªããããŒãã䜿ã£ããããã«ã¯ãGUIã¢ããªã±ãŒã·ã§ã³ãèµ·åããããã·ã¹ãã ã¯ãªããããŒãã«ã¢ã¯ã»ã¹ãããã§ããããã»ã¹ãå ã«èµ·åããŠããããã®ããã»ã¹ã«æäœãäŸé Œããã°ããã
å žåçãªæ¹æ³ãšããŠã¯ããµãŒãããµãŒãã¹ãããŒã¢ã³ãšåŒã°ãããããªãœãããŠãšã¢ãå®è¡ããŠããããããžä»äºãäŸé Œããããšã«ãªãã
OSã¯ããããã»ã¹ããå¥ã®ããã»ã¹ãžã¡ãã»ãŒãžãéãïŒããã»ã¹ééä¿¡ïŒæ¹æ³ãè€æ°æäŸããŠããããããã¯ãŒã¯ãäœ¿ãæ¹æ³ãããããå°çšã®éä¿¡æ¹æ³ãæäŸãããŠããããšããããããã¡ã€ã«ã·ã¹ãã ããšããå€éšãªãœãŒã¹ç©ºéã䜿ãã®ããããã»ã¹ééä¿¡ãå®çŸããæ¹æ³ã®äžã€ã ã
ã©ã®æ¹æ³ãæ¡çšããŠãè¯ãã®ã ããä»åã¯ãã¡ã€ã«ã·ã¹ãã ãä»ããŠããã»ã¹éã§éä¿¡ããæ¹æ³ã玹ä»ããããã®æ¹æ³ã¯å®¹æã«å®çŸã§ãããããã°ãè¡ãããããä»çµã¿ã¯ã·ã³ãã«ã ããå人ã䜿ããŠãŒãã£ãªãã£ã¬ãã«ãšããŠã¯ååã ãäŒæ¥ã§ã®å©çšã§ãã£ãŠããä»çµã¿ããã¡ããšæŽããŠããã°ãååå®çšã«è¶³ããã
ãã¡ã€ã«ã·ã¹ãã ã®åå空é
端æ«ããWindowsãžãµã€ã³ã€ã³ããå Žåãããªã¢ãŒããã¹ã¯ãããã§æ¥ç¶ããå ŽåããOpenSSHã§ãªã¢ãŒããã°ã€ã³ããå Žåããåºæ¬çã«ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªä»¥äžã«ã¯èªç±ã«ã¢ã¯ã»ã¹ã§ããããã¡ã€ã«ã·ã¹ãã ã®åå空éã¯ã°ããŒãã«ãªãªãœãŒã¹ã®äžã€ã§ãããçµæ§èªç±ã«ã¢ã¯ã»ã¹ã§ããã®ã ã
Linuxãªã©ã®UNIXç³»OSã§ã¯ãchroot(2)ãã§ãã¡ã€ã«ã·ã¹ãã ãåºç»åããŠåé¢ããããšãã§ãããFreeBSDã§ã¯jailã§ãã¡ã€ã«ã·ã¹ãã ã®ã¿ãªããããã»ã¹ç©ºéãªã©ã»ãã®ã·ã¹ãã ãªãœãŒã¹ãåºç»åã§ããã䌌ããããªæè¡ã¯Solaris Containersãªã©ããã€ãååšããŠãããããããæè¡ã䜿ããšãŠãŒã¶ãŒãéã蟌ããããšãã§ããã®ã ããWindowsãæäŸããŠããæ©èœãšããŠã¯Hyper-Vã䜿ãã®ãäžè¬çã§ãããHyper-Vã䜿ã£ãŠä»®æ³ç°å¢ãžåé¢ããªãéãããã¹ãã®ãªãœãŒã¹ã¯çµæ§èªç±ã«ã¢ã¯ã»ã¹ã§ããã®ã ã
ãµãŒãã¹ïŒããŒã¢ã³ïŒãšãªãããã»ã¹ã§ãã¡ã€ã«ã·ã¹ãã äžã®ãªãœãŒã¹ãã€ãŸããã¡ã€ã«ãŸãã¯ãã©ã«ããç£èŠããããã«äœããã®ã¢ã¯ã·ã§ã³ãçºçããå Žåã«ã€ãã³ããçºçããããã·ã³ãã«ã«ç¹å®ã®ãã¡ã€ã«ãã¢ãã¿ãªã³ã°ããŠããã®ãã¡ã€ã«ãžã®æžã蟌ã¿ãçºçãããã¢ã¯ã·ã§ã³ãèµ·ããä»çµã¿ã«ããã°ãããããŒã¿ã®ããåãã¯ããã®ãã¡ã€ã«ãžã®èªã¿æžãã§è¡ããã·ã³ãã«ã§ããããããæ¹æ³ã ã
UNIXç³»ã®ãã¡ã€ã«ã·ã¹ãã ã§ã¯ããã¡ã€ã«ã·ã¹ãã ã®æäŸããæ©èœã䜿ã£ãŠãã£ãšãããããªããšãã§ããã®ã ããWindowsã®ãã¡ã€ã«ã·ã¹ãã ã§ãç°¡åãªãã®ã§ããã°äŒŒããããªããšã¯ã§ããã䟿å©ãªæ¹æ³ãªã®ã§äžåºŠè©ŠããŠã¿ãŠããã ãããã
ç°¡åãªã¹ã¯ãªããã§åäœã確èªãã
ãã®ã¢ã€ãã¢ãæ©èœãããã©ããã確èªããã¹ã¯ãªãããäœæããåäœããã§ãã¯ããŠã¿ããã¹ã¯ãªããèªäœã¯ç°¡åã ããwhile ($true)ãã§ããããåããªããããã¡ã€ã«ã«æžã蟌ã¿ããã£ãããã®äžèº«ãèªã¿èŸŒãã§åºåããããšãã£ããããªãã®ãäœãã°ãããããã§ã¯ã次ã®ãããªã¹ã¯ãªãããsimple_server.ps1ããäœæããã
#!/usr/bin/env pwsh
#========================================================================
# ç¹å®ã®ãã¡ã€ã«ã«æžã蟌ãŸããæååãåºåãã
#========================================================================
#========================================================================
# æååãæžã蟌ãŸãããã¡ã€ã«
#========================================================================
$msgFilePath = "${HOME}/.simple_server_msg"
#========================================================================
# ãã¡ã€ã«ããã§ãã¯ããã€ã³ã¿ãŒãã«æé[ç§]
#========================================================================
$fileCheckInterval = 1.0
#========================================================================
# æååãæžã蟌ãŸãããã¡ã€ã«ãåæå
#========================================================================
Write-Output $null > $msgFilePath
#========================================================================
# ãã¡ã€ã«ãç£èŠããŠãæžã蟌ã¿ãè¡ãããå Žåã«ãäžèº«ã衚瀺ãã
#========================================================================
while ($true) {
# ãã¡ã€ã«ãååšãããã€ãäžèº«ããããšãã«äžèº«ã衚瀺ãã
if (Test-Path "$msgFilePath") {
if (0 -lt (Get-ChildItem "$msgFilePath").Length) {
# æå»ãä»å ããŠäžèº«ãåºå
$timestamp = Get-Date -format "yyyy/MM/dd HH:mm:ss"
$timestamp + " - " + (cat "$msgFilePath")
}
}
# ãã¡ã€ã«ã®äžèº«ãã¯ãªã¢
Clear-Content "$msgFilePath"
# 次ã®ãã§ãã¯ãŸã§æå®ç§éåŸ
æ©
Start-Sleep $fileCheckInterval
}
ã¹ã¯ãªãããèªãã°åäœå 容ã¯çè§£ã§ãããšæããã以äžã«ç°¡åã«èª¬æããŠããã
| ã¹ããã | å 容 |
|---|---|
| 1 | ãã¡ã€ã«ãåæåããïŒ0ãã€ãã§æ°èŠäœæïŒ |
| ã2 | ãã¡ã€ã«ãååšãããã€ããµã€ãºã0ãã€ãããã倧ããã£ãå Žåããã®äžèº«ãæå»ãä»å ããç¶æ ã§åºåãã |
| ã3 | ãã¡ã€ã«ãåæåããïŒ0ãã€ãåïŒ |
| ã4 | 1ç§éåŸ æ©ãã |
| ã5 | 2ãžæ»ã |
å®éã«åäœã確èªããŠã¿ããããŸããWindowsã§äžèšã¹ã¯ãªããïŒsimple_server.ps1ïŒãå®è¡ããã
次ã«ãWindows以å€ã®ãã¹ãããã¹ã¯ãªããsimple_server.ps1ãå®è¡ãããã¹ããžOpenSSHçµç±ã§ãªã¢ãŒããã°ã€ã³ããã
ãã®ç¶æ ã§ãOpenSSHã§ãã°ã€ã³ããŠãããšãããã~/.simple_server_msgãã¡ã€ã«ãžæååãæžã蟌ãã
-

OpenSSHã§ãã°ã€ã³ããŠãããšããããã~/.simple_server_msgãã¡ã€ã«ãžæååãæžã蟌ã¿
ã¹ã¯ãªãããå®è¡ããŠããWindowsåŽã®åºåã確èªãããšã次ã®ããã«æžã蟌ãŸããæååãåãåºããŠåºåããŠããããšã確èªã§ããã
-

simple_server.ps1ããã¡ã€ã«ãžã®æžã蟌ã¿ãæ€åºããŠäžèº«ãåãåºããŠããããšã確èª
ããäžåºŠOpenSSHã§ãªã¢ãŒããã°ã€ã³ããŠããæ¹ãžç§»åããããã«å¥ã®æååã~/.simple_server_msgãã¡ã€ã«ãžæžã蟌ãã§ã¿ãã
-

OpenSSHã§ãã°ã€ã³ããŠãããšããããã~/.simple_server_msgãã¡ã€ã«ãžæååãæžã蟌ã¿
ãããšWindowsã§å®è¡ããã¹ã¯ãªããåŽã§ãæ°ãã«æžã蟌ãŸããã¡ãã»ãŒãžãåºåãããããšã確èªã§ããã
-

simple_server.ps1ããã¡ã€ã«ãžã®æžã蟌ã¿ãæ€åºããŠäžèº«ãåãåºããŠããããšã確èª
ãã®ããã«ã·ã³ãã«ãªã¹ã¯ãªããã§ãOpenSSHçµç±ã§ãã°ã€ã³ããŠããç¶æ ãããWindowsã®GUIã¢ããªã±ãŒã·ã§ã³ãèµ·åã§ããç¶æ ã§åäœããŠããããã»ã¹ã«ã¡ãã»ãŒãžãéããããšã確èªã§ããããã®ã¹ã¯ãªãããæ¡åŒµããŠããã°ãç®çãšãããµãŒãã¹ãããã«äœããããšã«ãªãã
å°ããå§ããŠãå°ããã€è²ãŠã
simple_server.ps1ã«ããŸããŸãªããšããããããªããéä¿¡çšã«ãããã³ã«ãéçºããŠå©çšããã°ããããã³ãã³ãã ãå®è¡ããã°ãããªããéä¿¡çšã®ãã¡ã€ã«ã«å®è¡ãããã³ãã³ããæžã蟌ãã§ãããã ããã
ããã§å€§åãªã®ã¯ãã·ã³ãã«ãªã¹ã¯ãªããã§ãå®çšçãªä»çµã¿ãäœãããšããç¹ã«ããããŸãã¯ç°¡åãªã¹ã¯ãªãããäœã£ãŠãå¿ èŠã«å¿ããŠæ¡åŒµããŠããããããå®çšçãªã¹ã¯ãªããéçºã®ç¬¬1段éã ãæ¬é£èŒã§ã¯æ¬¡å以éããã®ã¹ã¯ãªããããã©ãã·ã¥ã¢ããããŠãããæ±çšçã«äœ¿ãããã®ã«ä»äžããŠããããšæãã

