WinSCP下su切换到root的技巧(禁止root远程ssh登陆时)

通常服务器为安全禁止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.png
此时用winscp登陆就是root权限了,对整个系统的文件都拥有生杀大权。。。 ui



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ spa

通常为了安全,都会禁止root登录ssh,可是用普通用户在打开winscp会话后没法经过su得到root权限,能操做的文件就颇有限了(固然你能够提升普通用户的权限,但并不推荐这样作)。因此在开始会话前就要经过sudo命令切换到root用户。 .net

首先,新建会话的时候协议要选择SFTP或SCP,由于FTP协议不支持这个功能。具体选择哪一个,要看你服务器的协议信息。 code

要看服务器的协议信息,能够进入“Commands” > “Server/protocol Information”.中文对应的是 “命令” > “服务器/协议信息”

能够看到:

可见我使用的是OpenSSH服务。

第一步:选择协议

这里我用了简体中文语言包,因此设置项显示的是中文。协议我选择了SCP就没法登录,是否是由于我没装SCP服务呢?

第二步:指定SFTP目录

以前查询过协议信息,使用了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密码了。

登录后,你就能够看到已经有权限来访问全部文件了。

官方FAQ

转载请注明出处:www.aojgame.com

[related_posts limit="3"]

相关文章
相关标签/搜索