【Linux】Ubuntu 24.04 以root權限使用SCP (透過WinSCP)

在Windows上要將檔案上傳到Linux Server通常會透過圖形化介面WinSCP,支援 SCP、SFTP、FTP、FTPS 等多種協定,然而唯一不便的就是「權限」問題

一般使用者帳戶無法上傳 重要檔案至特定目錄(到需要root權限許可的地方)



錯誤訊息:權限不足 Permission denied





作法一(偷懶作法)


開一個 root account
但是這作法不安全,畢竟暴露root帳戶讓駭客猜密碼
(不需要先猜帳號,只要不停暴力猜密碼,一旦成功入侵,就能完全控制整台伺服器)


修改 SSH 設定允許 root 登入
$ sudo passwd root

$ sudo nano /etc/ssh/sshd_config

將以下
PermitRootLogin prohibit-password 
改為 
PermitRootLogin yes 

接著就可以在WinSCP上以root登入




作法二(推薦作法)


不開root帳戶,而是讓使用者的帳戶擁有root權限

$ sudo visudo

會開啟一個設定檔,離開時按Ctrl+X記得儲存


在檔案行末加入以下

your_name 改為自己的 account)

your_name ALL=(ALL:ALL) NOPASSWD: ALL

允許使用者執行全部root操作,方便但權限過大
更推薦以下

your_name ALL=(root) NOPASSWD: /usr/lib/openssh/sftp-server


僅授權特定 root 功能(最小權限原則),只開放scp功能的root權限



儲存立即生效,不用重新載入或者重開機
可透過查看 /etc/sudoers 檢視最底下是否有剛剛新增的那行




回到WinSCP
要做一些設定,否則登入還是以一般使用者的權限



需要進入 編輯 > 進階 > 進階設定
環境 > SFTP > 協定選項 > SFTP 伺服器

預設參數改為 sudo /usr/lib/openssh/sftp-server



儲存好後,接著就可以在WinSCP上以 your_name 登入

就能自由進出root目錄啦!!






錯誤排除


如果出現 無法初始化 SFTP 協定。主機是否正在執行 SFTP 伺服器? 錯誤訊息的話


先確認sftp-server 路徑 是否在 "/usr/lib/openssh/sftp-server" 



---


順帶一提

這套 WinSCP 我們都是用SFTP進行傳輸,而非SCP (也可支援SCP) 

SFTP功能比SCP來得更多,包括瀏覽資料夾、刪除、修改、拖曳... 

SCP 只能"傳檔" 而沒有檔案管理能力

沒有留言:

張貼留言