通常服务器为安全禁止ssh下root帐号登陆,此时使用sftp登陆管理服务器只能使用普通帐号登陆,给管理带来诸多不便,能够设置为特定普通SSH用户添加sudo权限,登陆到sftp时可sudo切换到root权限下。
查看sftp-server执行文件目录: html
1
2
|
cat /etc/ssh/sshd_config|grep sftp
Subsystem sftp /usr/libexec/openssh/sftp-server
|
编辑/etc/sudoers为特定用户添加执行sftp sudo权限: linux
1
2
|
#http://www.haiyun.me
user ALL=NOPASSWD: /usr/libexec/openssh/sftp-server
|
只要在root权限下visudo,添加以下一行便可取消sudu时的密码:
yourusername ALL=NOPASSWD: ALL
为了能够在非tty的环境下sudo,咱们还须要注释掉下面一行:
Defaults requiretty 安全
后续若是登陆失败日记显示: 服务器
1
|
sorry, you must have a tty to run sudo ; TTY=unknown
|
需在/etc/sudoers内注释此行: ssh
1
|
#Defaults requiretty
|
sftp客户端设置登陆以sudo权限执行sftp,下图以winscp为例: post
1
|
sudo /usr/libexec/openssh/sftp-server
|
此时用winscp登陆就是root权限了,对整个系统的文件都拥有生杀大权。。。 ui
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ spa
通常为了安全,都会禁止root登录ssh,可是用普通用户在打开winscp会话后没法经过su得到root权限,能操做的文件就颇有限了(固然你能够提升普通用户的权限,但并不推荐这样作)。因此在开始会话前就要经过sudo命令切换到root用户。 .net
首先,新建会话的时候协议要选择SFTP或SCP,由于FTP协议不支持这个功能。具体选择哪一个,要看你服务器的协议信息。 code
要看服务器的协议信息,能够进入“Commands” > “Server/protocol Information”.中文对应的是 “命令” > “服务器/协议信息”
能够看到:
可见我使用的是OpenSSH服务。
这里我用了简体中文语言包,因此设置项显示的是中文。协议我选择了SCP就没法登录,是否是由于我没装SCP服务呢?
以前查询过协议信息,使用了OpenSSH服务,因此我要为登录的普通用户指定SFTP服务的二进制文件。
在SFTP标签的SFTP服务器选项,填上:
sudo /bin/sftp-server
固然有的系统可能保存在别的目录,好比我填的就是:
sudo /usr/lib/openssh/sftp-server
若是第一步选择的是SCP协议,那就没有第二步的设置项了,能够直接在SCP/Shell标签,Shell栏填上
sudo -s
由于以前设置的目录对于普通用户是没有访问和执行的,而咱们也没法在会话创建后切换到root用户,因此必须给普通用户访问SFTP二进制文件的权限。
先用root用户登录终端并编辑/etc/sudoers文件。在root那一行下面添加普通用户yourusername,好比:
yourusername ALL=NOPASSWD: ALL
这样设置并不安全,该用户能够从任何主机链接,并不用输入root密码而使用任何命令。
因此须要限制该用户的命令,作以下修改:
yourusername ALL=NOPASSWD: /bin/sftp-server
后面的SFTP目录根据本身的状况填写,这样该用户执行SFTP服务的时候就不须要root密码了。
登录后,你就能够看到已经有权限来访问全部文件了。
转载请注明出处:www.aojgame.com
[related_posts limit="3"]