通常服務器爲安全禁止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"]