2015年8月30日 星期日

LNAMP 安裝 WordPress 與 Nginx Proxy 設定

LNAMP 安裝 WordPress 與 Nginx Proxy 設定

安裝步驟如下:

1. 下載 WordPress 正體中文版
2. 解壓縮並將主檔目錄 copy 到 /var/www/html/wp
3. 進入 wp 上層目錄
4. $ sudo chown -R www-data:www-data wp
5. $ sudo chmod -R 644 wp
6. $ sudo chmod -R a+X wp
7. MySQL 先建立一個名稱為 wordpress 的資料庫
8. 瀏覽器訪問 wp 主頁
9. 輸入相關資料開始安裝

安裝完後使用控制台或編寫文章都沒問題,但要瀏覽網誌時出現 頁面重新導向不正確 ERR_TOO_MANY_REDIRECTS 的錯誤! --- 將 WordPress 的網址加上 8080 port 就都沒問題了, 看起來 LNAMP 的 proxy 設定真的頭大呀! 嘗試了多種方法, 找到一種可暫用但感覺怪怪的方案, 請往下看 ....
在剛安裝好的 LNAMP 環境下, Nginx 當前端、Apache 當執行 php 的後端, 安裝好 WordPress 要執行時出現問題!

WordPress 的 wp-admin 執行沒問題, 但要檢視剛建好的 WordPress 網站主頁面時 Chrome 瀏覽器主頁直接顯示 "這個網頁含有重新導向迴圈" ERR_TOO_MANY_REDIRECTS 的錯誤而無法正確執行。

網上有很多類似的問題, 但對這個狀況好像沒啥解釋也不太實用!
猜測問題來源是 WordPress 本身的做法是每個 php 程序執行完後網址都轉跳回 WordPress 的根目錄。
試過 disable cache : 失敗!
試過 plugin disable xml-rpc : 失敗!
試過 alias root : 失敗!
試過複製 location / 成 /wp 和 /wp/ : 失敗!

最後成功的方法是加了以下一段設定:
location ~ ^/wp/$ {
      proxy_pass http://localhost:8080;
      include proxy_params;
   }
直接把 /wp/ 這個位址的 request 全轉給 apache 處理 (希望 document 中的非 php link 還是透過 Nginx 處理, 不然 LNAMP 架構就沒意義了) 怪的一點是 Nginx 的設定檔已經有以下這一段了呀:
location ~ .php$ {
      proxy_pass http://localhost:8080;
      include proxy_params;
   }
明明是已經知道網址給 /wp 時會自動試改為 /wp/ 然後讀取 /wp/index.php 所以才有半法轉 apache 處理完發現要重新轉址回 /wp/ ! 為啥處理一半又途然沒法處理 /wp/ 這個目錄, 要在 Nginx 設定檔中明確宣告才有辦法再轉? 搞不懂.....!!! 就暫時先這樣用了! 改天試試裝第二套 WordPress 並存看會不會有更多問題!
後來在 /wpdue/ 下試裝第二套 WordPress 並存也成功了, 不過 Nginx 設定要改一下, location ~ ^/wp/$ 把他暫改成 ^/wp.*/$ 另外多個 WordPress 可統合成 Network, 共享程序資源, 分管 Contnent Data / Attachement 就像建了一個 WordPress.com 網站, 這個還要再試試! http://codex.wordpress.org/Create_A_Network

Regular Expression 喜蝦密?! 來研究一下...

知識參考來源: Introducing Regular Expressions, by Michael Fitzgerald, O’Reilly
現今 Unix 系統及許多程式語言都使用 regular expression (常規表示式?) 當做字串對應或搜尋的 pattern。 pattern 中文不好翻譯, 使用實質上就如字面原意像布料的一小塊花色樣式一樣, 但說成花色, 樣式, 樣版, 模型感覺都不太搭! Regular Expression 範例:
 ^((d{3})|^d{3}[.-]?)?d{3}[.-]?d{4}$
.... 嗯嗯! 目前看起來是火星文  (聽說是北美電話號碼的規則... o_o!!!)
這個網址可以比較資料是否符合指定的 regular expression: regexpal.com
以下 regular expression 範例:
 [0-9]
代表0~9之間的任何單一數字, 其中左右中括號(square bracket) 是 metacharacters, 而 metacharacter 在 regular expression 中是有特殊用法的保留字。範例 [0-9] 在 regular expression 中稱為 character class, 有時也稱做 character set。 由此引申其他用法, 如下例:
 [012589]
代表符合 0,1,2,5,8,9 之中的任一數字的單一數字。 前面講的是單一數字的對應, 那要對應很多數字如電話號碼可能會想到要這樣寫:
 [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]
此時填入 555-12345 就符合規則了, 不過這樣 regular expression 就變得冗長, 所以又提供一種寫法叫 character shorthand, 可以用 d 來代表 [0-9], regular express 就可改寫為
 ddd-ddddd
對應於 d 代表單一數字, D 被設定為代表單一非數字字元, 如果電話號碼規則寫成
 dddDddddd
那原先 555-12345 是沒問題的, 不過如果輸入 555a12345 也是算是符合規則的而 555812345 就不合規則了。 另外一個常用的特殊字元是句點 . (dot) 代表任合字元 (非特殊情況下通常不包含換行字元 u000A), regluar expression 寫成:
 ddd.ddddd
那不論 555-12345, 555a12345, 555812345, 555%12345, 555|12345, ... 都算符合規則。
Capturing Groups 和 Back References:
 (d)d1
以上寫法, 加了小括號 (parentheses) 的 (d) 為 capturing group; 1 則為 back reference 代表 (d) 所捕獲的數字。 所以 707 符合以上規則, 而 706 因為第三個數字與第一個數字不同所以不符合規則。
Quantifiers:
 d{3}-?d{3}-?d{4}
包了數字的大括號(curly braces) {3} 是一種 quantifier, 代表前面的字元重複3次; 問號 ? 則代表前面的那個字元是 optional 可有可無的。 所以這樣的表示式為334數字組合的電話號碼, 中間有沒有加 - (hyphen) 都沒關係。 其他常用的 quantifiers 還有: +: 加號(plus sign), 代表至少一個 *: 星號(asterisk), 代表沒半個或很多個都可以 應用 quantifier, 以下 regular expression:
 (d{3,4}[.-]?)+
+ 號控制 capturing group (d{3,4}[.-]?) 的內容至少要填入一次, {3,4} 控制 d 要填入最少3字最多4字, ? 號控制僅能填入 . 或 - 字元但不填也可。 以下更複雜的一個例子展示電話區域號碼可加或不加括號的寫法, 也說明特殊保留字元的括號如何當成文字字元處理:
 ^((d{3})|^d{3}[.-]?)?d{3}[.-]?d{4}$
稍微拆開來看 ^ ((d{3})  |  ^d{3} [.-]?)?  d{3}  [.-]?  d{4}  $
最前面的 ^ 號代表只找字串頭符合的, 最後面的 $ 號代表只找字串尾符合的; 兩者並用則表示整個字串要完全符合規則, (...)? 為區域號部份, 其中 ? 號代表區域號可有可無, d{3} 代表區號後要接3個數字, [.-]? 代表3個數字後只能接 . 或 - 字元, 其後的 ? 號代表不填也可, d{4} 代表號碼最後要再填4個數字 區號 capturing group 中間的 | 號代表符合 (d{3}) 或 ^d{3}[.-]? 其中之一即可, (d{3}) 代表用小括號刮起來的3個數字 ^d{3}[.-]? 代表這個 group 內開頭要3個數字,然後可選填 . 或 - 或字元不填
Negated Class 在 character class 的中括號後面第一個字元填入 ^ 號, 表示是要找不符合的, 例如
 [^d] 等同於 [^0-9] 等同於 D

Matching Word and Non-Word Characters Word 的 shorthand 為 w 用起來和 D 似乎有點像, 差別在於 w 只包含大小寫和數字, 而 D 是涵蓋數字以外的所有符號, 連空白字元也算。
 w 等同於 [a-zA-Z0-9]
 W 等同於 [^w] 等同於 [^a-zA-Z0-9]

Character Shorthand 列表
Character Shorthand 說明
aAlert
bWord boundary
[b]Backspace character
BNon-word boundary
cxControl character
bWord boundary
dDigit character
DNon-digit character
dxxxDecimal value for a character
fForm feed character
rCarriage return
nNewline character
oxxxOctal value for a character
sSpace character   (等於[ tnr])
SNon-space character
tHorizontal tab character
vVertical tab character
wWord character
WNon-word character
Null character
xxxHexadecimal value for a character
uxxxxUnicode value for a character

2015年8月28日 星期五

Ubuntu LNAMP 環境下安裝 Discuz! X3.2

Ubuntu LNAMP 環境下安裝 Discuz! X3.2


簡述

Discuz! X3.2 的方便安裝介面讓安裝過程很容易, 要注意的部份大概只有檔案權限是否正確設定, 還有是不是有必需的元件未安裝。在 Ubuntu LNAMP 環境下安裝 Discuz! X3.2 方法和在 LAMP 環境下安裝的過程差不多。


安裝前的設定

Nginx 要添加 index.php 為 index Ubuntu 的 tar 無法像 FreeBSD tar 解開 .zip 檔; Ubuntu 要先安裝  unzip 工具
$ sudo apt-get install unzip

FreeBSD 中若少安裝一些程序會造成安裝或使用時的問題, Ubuntu 的 LAMP tasksel 都有完整安裝, 無此問題, 不過還是記錄一下: FreeBSD:
$ pkg install php56-mysqli   # 安裝過程錯誤: mysqli_connect()           不支持
$ pkg install php56-xml      # 安裝過程錯誤: xml_parser_create()        不支持
$ pkg install php56-mysql    # 安裝過程無提示錯誤,顯示安裝成功, 但訪問主頁面時一片空白
另外不確定安裝 php56-mysql 時會不會自動安裝  php56-mysqli (猜想是會, 因為 mysqli 是 mysql 的子套件吧?!)
安裝步驟如下:
1. wget 下載 Discuz! 3.2 繁體中文 UTF-8 版本
2. unzip 解壓縮, 其中 upload 目錄為 Discuz! X3.2 主目錄, 將其 copy 成 /var/www/html/dz
3. 進入 dz 上層目錄
4. $ sudo chown -R www-data:www-data dz    # 檔案目錄改由 www-data 服務帳號管理
5. $ sudo chmod -R 644 wp                  # (把 dz 及其下所有的檔案及目錄先改成唯讀)
6. $ sudo chmod -R a+X wp                  # (把 dz 及其下所有的目錄加上可執行的權限)
7. 瀏覽器訪問 dz 主頁
8. 執行 Discuz 的安裝程序, 檢查需要開放寫入權限的目錄依序將其權限改為 777
如果安裝畫面提示系統內未安裝 GD 庫, 則先執行以下程序安裝:
$ sudo apt-get install php5-gd

安裝好重啟 apache2 服務
$ sudo service apache2 restart
GD庫安裝好後再繼續 Discuz! X3.2 的安裝。

2015年8月27日 星期四

Ubuntu LAMP 架構轉 LNAMP

Ubuntu LAMP 架構轉 LNAMP


簡述

聽得許多描述: Nginx 處理靜態資料快速又省系統資源; Apache 處理動態 PHP 網頁可靠又效率高, 合併兩者的優點將 Ubuntu LAMP 架構轉 LNAMP 架構也許是高流量動態網頁比較好的選擇。


轉換步驟

將 Nginx 設定為 port 80, Apache 改用8080; Nginx 處理靜態網頁,將動態 PHP 的 request 轉往 Apache 處理。
Ubuntu 的 apache2 設定與之前的有些不同,  Ubuntu 將 apache2 所使用的 ports 定義在 /etc/apache2/ports.conf 這個檔案中; 而每個 ports 應到的 VirtualHost 則定義在 /etc/apache2/sites-enabled/ 之下的設定檔。/etc/apache2/sites-enabled/ 之下的檔案均為 symbolic-link 連結到 ../sites-available/ 之下的同名檔案, 所以要改設定時是要改 /etc/apache2/sites-available/ 之下的檔案; 而要 enable 或 disable 設定時則在 /etc/apache2/sites-enabled/ 之下建立或移除 symblic-links.
根據以上規則, 若要更改 apache2 的預設 port, 就要更動到 /etc/apache2/ports.conf 及 /etc/apache2/sites-available/000-default.conf 兩個檔案。先行對兩個檔案備份再進行以下修改:
修改檔案: /etc/apache2/ports.conf
將檔案中 Listen 80 改為 Listen 8080
修改檔案: /etc/apache2/sites-available/000-default.conf
將 <VirtualHost *:80> 改為 <VirtualHost *:8080>
修改完畢, 重新啟動 apache2
$ sudo service apache2 restart

重新導向 apache2 的 listen port 之後, 接著就安裝 nginx:
$ sudo apt-get update
$ sudo apt-get install nginx -y
Nginx 的安裝過程如下:
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0
libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx-common
nginx-core
Suggested packages:
libgd-tools fcgiwrap nginx-doc
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0
libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx
nginx-common nginx-core
0 upgraded, 14 newly installed, 0 to remove and 6 not upgraded.
Need to get 2,656 kB of archives.
After this operation, 8,941 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty/main fonts-dejavu-core all 2.34-1ubuntu1 [1,024 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main fontconfig-config all 2.11.0-0ubuntu4.1 [47.4 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libfontconfig1 i386 2.11.0-0ubuntu4.1 [124 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ trusty/main libjpeg-turbo8 i386 1.3.0-0ubuntu2 [107 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu/ trusty/main libjpeg8 i386 8c-2ubuntu8 [2,188 B]
Get:6 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libjbig0 i386 2.0-2ubuntu4.1 [25.1 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libtiff5 i386 4.0.3-7ubuntu0.3 [142 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu/ trusty/main libvpx1 i386 1.3.0-2 [518 kB]
Get:9 http://us.archive.ubuntu.com/ubuntu/ trusty/main libxpm4 i386 1:3.5.10-1 [38.2 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu/ trusty/main libgd3 i386 2.1.0-3 [142 kB]
Get:11 http://us.archive.ubuntu.com/ubuntu/ trusty/main libxslt1.1 i386 1.1.28-2build1 [140 kB]
Get:12 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main nginx-common all 1.4.6-1ubuntu3.3 [18.1 kB]
Get:13 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main nginx-core i386 1.4.6-1ubuntu3.3 [322 kB]
Get:14 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main nginx all 1.4.6-1ubuntu3.3 [5,452 B]
Fetched 2,656 kB in 7s (333 kB/s)
Selecting previously unselected package fonts-dejavu-core.
(Reading database ... 87692 files and directories currently installed.)
Preparing to unpack .../fonts-dejavu-core_2.34-1ubuntu1_all.deb ...
Unpacking fonts-dejavu-core (2.34-1ubuntu1) ...
Selecting previously unselected package fontconfig-config.
Preparing to unpack .../fontconfig-config_2.11.0-0ubuntu4.1_all.deb ...
Unpacking fontconfig-config (2.11.0-0ubuntu4.1) ...
Selecting previously unselected package libfontconfig1:i386.
Preparing to unpack .../libfontconfig1_2.11.0-0ubuntu4.1_i386.deb ...
Unpacking libfontconfig1:i386 (2.11.0-0ubuntu4.1) ...
Selecting previously unselected package libjpeg-turbo8:i386.
Preparing to unpack .../libjpeg-turbo8_1.3.0-0ubuntu2_i386.deb ...
Unpacking libjpeg-turbo8:i386 (1.3.0-0ubuntu2) ...
Selecting previously unselected package libjpeg8:i386.
Preparing to unpack .../libjpeg8_8c-2ubuntu8_i386.deb ...
Unpacking libjpeg8:i386 (8c-2ubuntu8) ...
Selecting previously unselected package libjbig0:i386.
Preparing to unpack .../libjbig0_2.0-2ubuntu4.1_i386.deb ...
Unpacking libjbig0:i386 (2.0-2ubuntu4.1) ...
Selecting previously unselected package libtiff5:i386.
Preparing to unpack .../libtiff5_4.0.3-7ubuntu0.3_i386.deb ...
Unpacking libtiff5:i386 (4.0.3-7ubuntu0.3) ...
Selecting previously unselected package libvpx1:i386.
Preparing to unpack .../libvpx1_1.3.0-2_i386.deb ...
Unpacking libvpx1:i386 (1.3.0-2) ...
Selecting previously unselected package libxpm4:i386.
Preparing to unpack .../libxpm4_1%3a3.5.10-1_i386.deb ...
Unpacking libxpm4:i386 (1:3.5.10-1) ...
Selecting previously unselected package libgd3:i386.
Preparing to unpack .../libgd3_2.1.0-3_i386.deb ...
Unpacking libgd3:i386 (2.1.0-3) ...
Selecting previously unselected package libxslt1.1:i386.
Preparing to unpack .../libxslt1.1_1.1.28-2build1_i386.deb ...
Unpacking libxslt1.1:i386 (1.1.28-2build1) ...
Selecting previously unselected package nginx-common.
Preparing to unpack .../nginx-common_1.4.6-1ubuntu3.3_all.deb ...
Unpacking nginx-common (1.4.6-1ubuntu3.3) ...
Selecting previously unselected package nginx-core.
Preparing to unpack .../nginx-core_1.4.6-1ubuntu3.3_i386.deb ...
Unpacking nginx-core (1.4.6-1ubuntu3.3) ...
Selecting previously unselected package nginx.
Preparing to unpack .../nginx_1.4.6-1ubuntu3.3_all.deb ...
Unpacking nginx (1.4.6-1ubuntu3.3) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for ufw (0.34~rc-0ubuntu2) ...
Processing triggers for ureadahead (0.100.0-16) ...
Setting up fonts-dejavu-core (2.34-1ubuntu1) ...
Setting up fontconfig-config (2.11.0-0ubuntu4.1) ...
Setting up libfontconfig1:i386 (2.11.0-0ubuntu4.1) ...
Setting up libjpeg-turbo8:i386 (1.3.0-0ubuntu2) ...
Setting up libjpeg8:i386 (8c-2ubuntu8) ...
Setting up libjbig0:i386 (2.0-2ubuntu4.1) ...
Setting up libtiff5:i386 (4.0.3-7ubuntu0.3) ...
Setting up libvpx1:i386 (1.3.0-2) ...
Setting up libxpm4:i386 (1:3.5.10-1) ...
Setting up libgd3:i386 (2.1.0-3) ...
Setting up libxslt1.1:i386 (1.1.28-2build1) ...
Setting up nginx-common (1.4.6-1ubuntu3.3) ...
Processing triggers for ufw (0.34~rc-0ubuntu2) ...
Processing triggers for ureadahead (0.100.0-16) ...
Setting up nginx-core (1.4.6-1ubuntu3.3) ...
Setting up nginx (1.4.6-1ubuntu3.3) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
查看 Nginx 預設啟動的程序:
$ ps aux | grep nginx
root      5521  0.0  0.5  14908  2552 ?        Ss   01:03   0:00 nginx: master process /usr/sbin/nginx
www-data  5522  0.0  0.5  15052  2836 ?        S    01:03   0:00 nginx: worker process
www-data  5523  0.0  0.7  15052  3704 ?        S    01:03   0:00 nginx: worker process
www-data  5524  0.0  0.5  15052  2836 ?        S    01:03   0:00 nginx: worker process
www-data  5525  0.0  0.5  15052  2836 ?        S    01:03   0:00 nginx: worker process

修改 Nginx 的設定檔, 設定啟始路徑及設定 .php 導向 apache
修改檔案: /etc/nginx/sites-available/default, 更改 root 位置並增加 index.php 索引檔:
root /var/www/html;
index index.php index.html index.htm;

接著在原來的 location 設定之下新增以下設定, 啟用 php 轉址並轉達原 Host 和 真實 IP 資料
location ~ .php$ {
    proxy_pass  http://localhost:8080;
    include proxy_params; 
    # proxy_set_header Host $http_host;
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # proxy_set_header X-Forwarded-Proto $scheme;
}
設定完後重新啟動 nginx:
$ sudo /etc/init.d/nginx restart 或
$ sudo service nginx restart
完成之後, 基本上外部連接 httpd 的通道就由 Nginx 接管, 且當有 .php 的請求時就會自動導向給 apache 處理!

Ubuntu 安裝 SSH 支援 - OpenSSH

Ubuntu 安裝 SSH 支援 - OpenSSH


簡述

在 VM 中安裝完 Ubuntu Server 後, 原本的 tty 是在英文模式下, 要檢視或是編輯含中文內容或檔名的文件會有問題。在 Ubuntu 安裝 SSH 支援, 讓系統可以從外部透過 ssh 連線工具連線, 不但解決的中文顯示和編輯的問題, 還有可調整大小的純文字視窗環境且不用再按鍵來切換 VM 和 Windows 環境!

安裝指令:

$ sudo apt-get update
$ sudo apt-get install openssh-server -y

安裝過程:

Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libck-connector0 ncurses-term openssh-client openssh-sftp-server
  python-requests python-urllib3 ssh-import-id
Suggested packages:
  ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard
The following NEW packages will be installed:
  libck-connector0 ncurses-term openssh-server openssh-sftp-server
  python-requests python-urllib3 ssh-import-id
The following packages will be upgraded:
  openssh-client
1 upgraded, 7 newly installed, 0 to remove and 6 not upgraded.
Need to get 935 kB/1,280 kB of archives.
After this operation, 3,898 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main openssh-client i386 1:6.6p1-2ubuntu2.3 [576 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main openssh-sftp-server i386 1:6.6p1-2ubuntu2.3 [35.6 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main openssh-server i386 1:6.6p1-2ubuntu2.3 [324 kB]
Preconfiguring packages ...
Fetched 935 kB in 3s (251 kB/s)
Selecting previously unselected package libck-connector0:i386.
(Reading database ... 84931 files and directories currently installed.)
Preparing to unpack .../libck-connector0_0.4.5-3.1ubuntu2_i386.deb ...
Unpacking libck-connector0:i386 (0.4.5-3.1ubuntu2) ...
Preparing to unpack .../openssh-client_1%3a6.6p1-2ubuntu2.3_i386.deb ...
Unpacking openssh-client (1:6.6p1-2ubuntu2.3) over (1:6.6p1-2ubuntu2) ...
Selecting previously unselected package ncurses-term.
Preparing to unpack .../ncurses-term_5.9+20140118-1ubuntu1_all.deb ...
Unpacking ncurses-term (5.9+20140118-1ubuntu1) ...
Selecting previously unselected package openssh-sftp-server.
Preparing to unpack .../openssh-sftp-server_1%3a6.6p1-2ubuntu2.3_i386.deb ...
Unpacking openssh-sftp-server (1:6.6p1-2ubuntu2.3) ...
Selecting previously unselected package openssh-server.
Preparing to unpack .../openssh-server_1%3a6.6p1-2ubuntu2.3_i386.deb ...
Unpacking openssh-server (1:6.6p1-2ubuntu2.3) ...
Selecting previously unselected package python-urllib3.
Preparing to unpack .../python-urllib3_1.7.1-1ubuntu3_all.deb ...
Unpacking python-urllib3 (1.7.1-1ubuntu3) ...
Selecting previously unselected package python-requests.
Preparing to unpack .../python-requests_2.2.1-1ubuntu0.3_all.deb ...
Unpacking python-requests (2.2.1-1ubuntu0.3) ...
Selecting previously unselected package ssh-import-id.
Preparing to unpack .../ssh-import-id_3.21-0ubuntu1_all.deb ...
Unpacking ssh-import-id (3.21-0ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
Processing triggers for ufw (0.34~rc-0ubuntu2) ...
Setting up libck-connector0:i386 (0.4.5-3.1ubuntu2) ...
Setting up openssh-client (1:6.6p1-2ubuntu2.3) ...
Setting up ncurses-term (5.9+20140118-1ubuntu1) ...
Setting up openssh-sftp-server (1:6.6p1-2ubuntu2.3) ...
Setting up openssh-server (1:6.6p1-2ubuntu2.3) ...
Setting up python-urllib3 (1.7.1-1ubuntu3) ...
Setting up python-requests (2.2.1-1ubuntu0.3) ...
Setting up ssh-import-id (3.21-0ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for ufw (0.34~rc-0ubuntu2) ...

Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
Creating SSH2 ED25519 key; this may take some time ...
ssh start/running, process 2103
查看執行程序:
$ ps aux | grep ssh
root 2103 0.0 0.9 7804 4968 ? Ss 03:15 0:00 /usr/sbin/sshd -D

安裝後可用 PieTTY 執行 SSH 連線: Ubuntu_SSH_OpenSSH_Install_PieTTY

另外可使用 WinSCP 來執行 SFTP 連線: Ubuntu_SSH_OpenSSH_Install_WinSCP

參考連結:

PieTTY
WinSCP