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

相关文章
相关标签/搜索