Winscp使用密鑰登錄
背景:通常我們使用winscp
通過密碼認證去連接服務器進行文件的ftp操作,但是為了安全,我們服務器上經常會禁止使用密碼連接,而改用密鑰認證。而且服務器上經常會禁止root用戶直接登錄。所以接下來我們就講下怎么用winscp去使用密鑰認證,以及登入后如何從普通用戶su到root用戶。
一、使用OpenSSH密鑰連接
Winscp使用的是putty作為SSH登錄工具,而puttygen所生成的是以.ppk結尾的密鑰文件,所以你使用xshell生成的密鑰會提示添加失敗,此時你有兩種選擇,
1、使用putty重新生成putty格式的密鑰,並添加到服務器上。
2、將openssh格式的私鑰轉換成winscp支持的.ppk格式。
這里,我們選擇第二種方式。如下:
1、嘗試用winscp直接導入xshell的密鑰報錯
Winscp--》高級--》SSH--》驗證--》密鑰文件
接着我們導入之前xshell生成的密鑰,就報錯了,彈出如下窗口:
此時報錯了,因為之前用xshell導出的密鑰是OpenSSH格式的,而winscp不支持這種格式,所以我們要將該密鑰轉換成winscp支持的.ppk格式。
2、OpenSSH轉換成ppk格式
參考:https://www.cnblogs.com/Waterclouds/p/4768768.html
打開winscp--》工具--》運行PuTTYgen(G)
打開puttygen 選擇-Load 找到你之前用xshell生成的open-ssh格式的密鑰文件,選擇所有格式然后加載你的私鑰
輸入之前open-ssh密鑰的口令:
然后就是導入成功,保存私鑰文件為.ppk格式。
格式轉換完畢,最后重新導入ppk文件,即可。
此時,密鑰文件導入成功,重新登錄即可通過winscp用密鑰認證連接了。
二、sftp后sudo成root用戶
參考:https://www.cnblogs.com/liangzai-cool/p/5956090.html
一般服務器為了安全禁止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用戶了,對系統有生殺大權。














