Winscp使⽤密钥登录
Winscp使⽤密钥登录
背景:通常我们使⽤winscp通过密码认证去连接服务器进⾏⽂件的ftp操作,但是为了安全,我们服务器上经常会禁⽌使⽤密码连接,⽽改⽤密钥认证。⽽且服务器上经常会禁⽌root⽤户直接登录。所以接下来我们就讲下怎么⽤winscp去使⽤密钥认证,以及登⼊后如何从普通⽤户su到root⽤户。
⼀、使⽤OpenSSH密钥连接
Winscp使⽤的是putty作为SSH登录⼯具,⽽puttygen所⽣成的是以.ppk结尾的密钥⽂件,所以你使⽤xshell⽣成的密钥会提⽰添加失败,此时你有两种选择,
1、使⽤putty重新⽣成putty格式的密钥,并添加到服务器上。
2、将openssh格式的私钥转换成winscp⽀持的.ppk格式。
这⾥,我们选择第⼆种⽅式。如下:ssh工具windows
1、尝试⽤winscp直接导⼊xshell的密钥报错
Winscp--》⾼级--》SSH--》验证--》密钥⽂件
接着我们导⼊之前xshell⽣成的密钥,就报错了,弹出如下窗⼝:
此时报错了,因为之前⽤xshell导出的密钥是OpenSSH格式的,⽽winscp不⽀持这种格式,所以我们要将该密钥转换成winscp⽀持的.ppk 格式。
2、OpenSSH转换成ppk格式
打开winscp--》⼯具--》运⾏PuTTYgen(G)
打开puttygen 选择-Load 到你之前⽤xshell⽣成的open-ssh格式的密钥⽂件,选择所有格式然后加载你的私钥
输⼊之前open-ssh密钥的⼝令:
然后就是导⼊成功,保存私钥⽂件为.ppk格式。
格式转换完毕,最后重新导⼊ppk⽂件,即可。
此时,密钥⽂件导⼊成功,重新登录即可通过winscp⽤密钥认证连接了。
⼆、sftp后sudo成root⽤户
⼀般服务器为了安全禁⽌ssh下root账号登录,此时使⽤sftp登录管理服务器只能使⽤普通账号登录,所以访问路径的时候,经常会碰到权限不⾜的问题,如下图:
1、获取sftp-server的路径
[root@localhost ~]# cat /etc/ssh/sshd_config | grep sftp
Subsystem sftp /usr/libexec/openssh/sftp-server
这个/usr/libexec/openssh/sftp-server路径,后⾯⼏步都要⽤到。
2、配置能够sudo的⽤户
步骤⼀⾥⾯我们配置了可以⽤sftp通过密钥登录。所以,这⾥针对同⼀个⽤户,要配置sudo权限。
[root@localhost doubles]# vim /etc/sudoers
doubles ALL=(root)  NOPASSWD:  ALL
或者
doubles ALL=(root)  NOPASSWD:/usr/libexec/openssh/sftp-server
3、配置winscp
Winscp--》⾼级--》sftp,选择SFTP服务器,选择sudo su -c ...,并且将路径改为上⾯获取到的sftp-server路径:/usr/libexec/openssh/sftp-server,如下图
点击确定,保存,然后登录即是root⽤户了,对系统有⽣杀⼤权。