Windows - HowardWhile/2023_note GitHub Wiki
Windows
讓bat檔要求管理權限的方法
https://stackoverflow.com/questions/1894967/how-to-request-administrator-access-inside-a-batch-file
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
<YOUR BATCH SCRIPT HERE>
OpenSSH Offline install
參考
https://blog.miniasp.com/post/2021/12/11/How-to-setup-OpenSSH-Server-in-Windows
http://www.coolsun.idv.tw/modules/xhnewbb/viewtopic.php?topic_id=1493
第1步 下載安裝包
https://github.com/PowerShell/Win32-OpenSSH/releases
可以直接用資料夾裡面載好的...
這邊有個坑,最新版的V8.9.1.0p1-Beta,隨然ssh可以連線但是sftp一連上就會斷線。所以還是選擇與線上安裝一致的v8.1版本。
第2步 解壓縮
解壓縮到C:\
並將資料夾重新命名成OpenSSH
。資料夾的內容長這樣:
不一定要解壓縮到這個路徑,只是這個路徑比較好記,之後的終端機操作時比較方便。
第3步 安裝
這邊的安裝步驟比較特別不是透過setup.msi
或是setup.exe
安裝,而是透過終端機執行install-sshd.ps1安裝
,是具有管理員權限的powershell終端機。
具體方法如下:
用管理員身分執行powershell
執行下列指令
cd C:\OpenSSH\
.\install-sshd.ps1
此時在透過Get-Service ssh
powershell的service中就可以看到sshd的服務(Stopped)出現。
如果要反安裝只要執行uninstall-sshd.ps1,
第4步 啟動
安裝完成後執行下列指令來啟動openssh-server先用預設的配置來啟動
# 啟動 sshd 服務
Start-Service sshd
# 設定 sshd 服務自動啟動
Set-Service -Name sshd -StartupType 'Automatic'
嘗試登入這台 Windows 的 OpenSSH Server
ssh localhost
第5步 配置
有關使用者帳戶
建立一個帳號名稱為 ar
的使用者,使用 net user
命令快速建立使用者:
#net user ar * /ADD
net user ar emotion /ADD /EXPIRES:NEVER /PASSWORDCHG:NO
net accounts /maxpwage:unlimited
WMIC USERACCOUNT WHERE "Name='ar'" SET PasswordExpires=FALSE
多設定了兩個 /EXPIRES:NEVER W參數與另一個 /PASSWORDCHG:NO 參數,帳戶建立好之後其設定屬性定義如下圖示:
快速鍵Win + R
輸入 lusrmgr.msc
快速鍵Win + R
輸入secpol.msc
可以看到密碼最常使用期限由42天變為0(沒有限制)
有關ssh配置
初始化的配置檔將會出現在這個路徑當中C:\ProgramData\ssh\sshd_config
用附件中的sshd_config
覆蓋後重新啟動openssh-server
Restart-Service sshd
這個配置檔的內容修改了兩處為了達成2功能
- Port
因為port 22太敏感所以改成2222
- 限制特定使用者的權限
這裡的 Match User ar
就是只針對單一使用者 ar
進行設定,最後的 ForceCommand internal-sftp
就是為了讓該 ar
使用者無法使用SSH遠端登入主機,只能使用 SFTP 傳檔而已。這裡最重要的當然就是 ChrootDirectory
設定,他會把使用者「關在」特定一個目錄下,遠端透過 SFTP 操作檔案時,是完全看不到 Windows 電腦中的任何其他資料夾!
有關防火牆
方法1 用指定應用程式的方式配置方法如下:
從控制台進入控制台\系統及安全性\Windows Defender 防火牆\允許的應用程式
方法2 用指定port的方式
開通port 2222
# 設定新的 OpenSSH Server 防火牆規則
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 2222
第6步 測試
用filezilla的sftp連線看看,主機的開頭一定要打sftp://
才能指定使用sftp
的通訊協定,記得從本機連線成功後,也要試試從另外一台電腦連線測是防火牆的配置是否妥當。
ffmpeg 轉檔筆記
mov 轉 mp4
ffmpeg -i input.mov output.mp4
mov 轉 720p mp4
ffmpeg -i input.mov -s hd720 output.mp4
mov 轉 720p mp4 10 FPS
ffmpeg -i input.mov -s hd720 -r 10 output.mp4