워드프레스 플러그인 업데이트를 FTP 대신 SSH/SCP 로 하기

Wordpress 관리자 화면에서 plugin 설치와 update를 수행할 수 있다.

 

설치와 업데이트시 FTP 를 사용하려면 vsftpd 나 기타 ftp 서버를 설치해야 하며 보안때문에 SFTP 를 사용할 경우 SSL 설정도 해야 하는 번거로움이 있다.

 

서버가 리눅스라면 기본적으로 SSH/SCP 를 지원하므로 업데이트를 SCP 를 이용해서 안전하게 하는 방법을 알아 보자.

 

플러그인 설치

  1. 먼저 SSH SFTP Updater Support 을 다운로드한다. 현재 버전은 0.4 이다.
  2. 다운로드한 파일을 서버의 워드프레스 설치 경로(Ex: /var/www/wordpress/wordpress-3.9.1/wp-content/plugins) 에 이동한다.
  3. 압축을 해제한다.

    unzip ssh-sftp-updater-support.0.4.zip 
  4. 워드프레스 관리자 기능으로 들어간다.
  5. Plugins 메뉴에서 SSH SFTP .. 를 선택한후 Activate 를 클릭한다.
     

 

SELinux 설정

SElinux 를 사용한다면 httpd 는 ssh 에 연결하지 못하므로 플러그인이 정상 동작하지 않는다. SELinux 에 신규 정책을 추가(추천)해 주거나 httpd 가 네트웍에 연결 가능하게 설정해야 한다.(비추)

신규 정책 추가

  1. 다음 파일을 http-wordpress.te 로 저장한다.

    module http-wordpress  1.0;
    require {
        type httpd_t;
        type ssh_port_t;
        class tcp_socket name_connect;
    }
    #============= httpd_t ==============
    #!!!! This avc is allowed in the current policy
    allow httpd_t ssh_port_t:tcp_socket name_connect;
  2. checkmodule 로 policy module 을 컴파일한다.

    checkmodule -M -m -o http-wordpress.mod http-wordpress.te 
  3. 모듈을 패키징한다.

     semodule_package -o /etc/selinux/targeted/modules/active/modules/http-wordpress.pp -m http-wordpress.mod 
  4. 패키징한 모듈을 설치한다.

    semodule -i http-wordpress.pp 
  5. 아파치 웹서버를 재구동한다.

    service httpd restart

httpd 네트웍 허용

  1. 다음 SELinux boolean 을 설정한다.

    setsebool -P httpd_can_network_connect on
  2. 아파치를 재구동한다.

 

사용

  1. 관리자 기능으로 로그인한후에 Plugin 메뉴로 들어간다.
  2. 설치할 플러그인을 선택한 후에 Install Now 를 클릭한다.
  3. 서버의 정보와 계정을 넣고 하단의 Conenction TypeSSH2 로 선택하고 Proceed 를 클릭한다.
     
  4. Proceed 를 클릭한다.