2015年8月17日 星期一

登入 WinSCP 後切換 root 身份

執行putty,使用自己的帳號登入,透過 su - 切換成 root 身份。

找出 sftp-server 的路徑
[root@localhost ~]# cat /etc/ssh/sshd_config|grep Subsystem

Subsystem       sftp    /usr/libexec/openssh/sftp-server


[root@localhost ~]# visudo
下面這行原本沒有註解,將它註解起來。
#Defaults    requiretty
在下面這行的下面,再新增一行,並使用剛才那個路徑
root    ALL=(ALL)       ALL
ron        ALL=NOPASSWD: /usr/libexec/openssh/sftp-server

選擇SFTP,在 Environment 那邊
"Environment > SFTP > SFTP server:" 輸入 sudo /usr/libexec/openssh/sftp-server
"Environment > Shell > Shell:" 輸入 /bin/bash

這樣應該就可以連上去了。如果不行,重啟 ssh 看看
[root@localhost ~]# service sshd restart

有文章說 /etc/ssh/sshd_config 要加這一行:
ForceCommand /usr/libexec/openssh/sftp-server
這行不要加。加了反而有問題。

基本上,印象中… 系統安裝完之後就可以使用 ssh 登入,而 sftp 是建立在 ssh 之上。所以應該不需要額外設定防火牆或 selinux。如果不行的話,先把防火牆跟 selinux 關閉試試看。

關閉防火牆
[root@localhost ~]# service iptables stop
關閉 selinux
[root@localhost ~]# setenforce 0

設定防火牆
方式一,使用圖形介面。執行:
[root@localhost ~]# system-config-firewall
會開啟一個基本的圖形介面,選擇自訂,系統會顯示服務清單。選擇 ssh ,然後選擇關閉,這時候是關閉這個服務清單,會回到確定、自訂、取消。選擇確定,再按"是",退出。
方式二,直接編輯 iptables 設定檔。
[root@localhost ~]# vi /etc/sysconfig/iptables
在適當地方新增這一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
重新啟動防火牆
[root@localhost ~]# service iptables restart

設定 SELINUX
selinux 應該不用設,它對 ssh 本來就是開放的。據說 selinux 要關 ssh 也關不起來。
但是如果 ssh 改了 port ,可以參考這篇


其它參考文章
https://winscp.net/forum/viewtopic.php?t=2918
http://winscp.net/eng/docs/faq_su
http://dev.sopili.net/2010/04/winscpsudo.html

沒有留言:

張貼留言