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

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

問題背景

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

解決方案

  1. 首先確保你的目標主機的 sshd 服務正在運行
  2. 用來在 WinSCP 登陸的普通用戶已加入 sudoers
  3. 獲取 sftp-server 的位置優化

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

    結果:ui

    Subsystem sftp /usr/libexec/openssh/sftp-servercode

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

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

  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 文件get

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

到此,便可以 root 角色登陸系統啦!it

解決方案優化

也許你擔憂因爲上述解決方案的第 5 步,在切換爲 root 時不須要輸入密碼,會形成系統不安全。
確實是這樣,若是你係統安全要求較高,我建議你新建一個賬戶,專門用於 WinSCP 中以 root 角色登陸。io

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

相關文章
相關標籤/搜索