版本说明: 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

    2. 直接查找:

      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

更多相关文章

  1. Media-S 简介(一个开源的DRM解决方案)
  2. AppScan安全问题解决方案
  3. PLSQL乱码解决方案
  4. 数据库不支持中文解决方案(mysql)
  5. Mysql替代解决方案Cassandra
  6. [置顶] Android屏幕适配解决方案
  7. 物流货运移动APP解决方案
  8. 转:Android Studio Error:Connection timed out: connect.解决方
  9. android.os.NetworkOnMainThreadException的解决方案

随机推荐

  1. 【教程连载】ArcGIS Runtime for Android
  2. 谷歌Android为何掉队?
  3. 如何离线安装android的sdk
  4. Android 虚拟多开系列二——技术原理
  5. Android的多媒体(Media Sever Framework )
  6. Android Studio上非常棒的插件
  7. Android 热敏打印机打印二维码
  8. 《Android移动应用基础教程》(Android Stu
  9. Android(安卓)版本兼容 — Android(安卓)
  10. Android kotlin学习之----kotlin+recycle