WinSCP 中普通用戶以 root 身份登錄 Linux


版本說明:
Windows 10
CentOS 7
WinSCP 5.7.7 (Build 6257)

問題背景

使用 WinSCP 登錄 CentOS 上傳文件,使用的是普通用戶,且已加入 sudoers ,向 /usr/local 目錄上傳文件時,提示沒有權限。

解決方案

  1. 首先確保你的目標主機的 sshd 服務正在運行

  2. 用來在 WinSCP 登錄的普通用戶已加入 sudoers

  3. 獲取 sftp-server 的位置

    1. /etc/ssh/sshd_config 文件中獲取:
    sudo cat /etc/ssh/sshd_config | grep sftp
    

    結果:

    Subsystem sftp /usr/libexec/openssh/sftp-server

    1. 直接查找:
    sudo updatedb
    
    locate sftp-server
    
      結果:
    

    /usr/libexec/openssh/sftp-server
    /usr/share/man/man8/sftp-server.8.gz

  4. 以管理員方式運行 WinSCP,打開對應帳戶的Advanced Site Settings 對話框中,選中 EnvironmentSFTP 節點,在右邊的 Protocol options - SFTP server 輸入框中,填入 sudo -s /usr/libexec/openssh/sftp-server ,這里的 /usr/libexec/openssh/sftp-server 換成在你的系統中,由第 3 步得到的路徑,之后保存。

  5. 在 CentOS 中執行 sudo visudo 以編輯 /etc/sudoers 文件

    1. 找到需要在 WinSCP 登錄的賬戶名配置信息,大概在第 98 行,將:myloginname ALL=(ALL) ALL 改為: myloginname ALL=(ALL) NOPASSWD: ALL 。這一步的目的是切換為 root 角色時不需要輸入密碼,因為 WinSCP 只能執行不需要請求用戶輸入其他信息(比如:密碼等)的命令。
      切記:記得使用完后,將這一行的內容恢復到修改前的樣子!
    2. 找到 Defaults requiretty 這一行,在前面加一個 # 號注釋掉這一行,這一步的目的是關閉控制終端。

到此,即可以 root 角色登錄系統啦!

解決方案優化

也許你擔心由於上述解決方案的第 5 步,在切換為 root 時不需要輸入密碼,會造成系統不安全。
確實是這樣,如果你系統安全要求較高,我建議你新建一個帳戶,專門用於 WinSCP 中以 root 角色登錄。

原文鏈接:http://xueliang.org/article/detail/20160926003344351


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM