在 Linux 的環境下最常使用的檔案分享方式不是 nfs , ftp 也不是 samba 而是 scp(Secure copy),只要簡單的使用是 #scp 指令就能將對方的檔案複製到本地端.但是這僅僅限制在 Linux 的環境下,Windows 無法使用這安全又方便的遠端檔案交換.
這邊介紹一下在 Windows 下可以執行的 scp 程式 winscp – http://winscp.net/eng/docs/lang:cht 的免費軟體.winscp 的安裝上也很簡單就直接跳過去了不做詳細安裝說明.
SSH 主要是用來取代 Telnet 這種以明碼為傳遞基礎的遠端登入服務,所有的過程都是基於加密的方式進行傳輸,scp 主要也是透過 SSH 的方式加密檔案來進行傳送,所以對方 Linux 的 SSH 的服務必須開啟.
root@ubuntu:~# systemctl status sshd
或是
root@ubuntu:~# service sshd status
WinSCP 需要輸入對方 Linux 主機名稱 (IP 或是 Hostname 皆可), SSH 固定使用 Port 22,還需要輸入 Linux 的帳號以及密碼.
會比較感到困惑是什麼叫做 私人金鑰檔案(K) !!! 以及 檔案協定 [F] SFTP / SCP.
先來說一下 SSH 的加密機制,目前 SSH 有兩種版本的連線模式.
- SSH protocol version 1:
首先 SSH client 與 SSH server 會交換公開主機金鑰 (SSH 在安裝時會產生一支用 RSA 加密方式產生 768-bit 的主機金鑰).
如果 SSH client 機器以前沒見過這個公開金鑰.則會詢問是否接受這個未被信任的金鑰,情況如: Windows (SSH Client) 是第一次與 Linux SSH Server 請求連線服務的
然後會使用這把公開主機金鑰來協調出一隻 session 金鑰 (在 SSH Client 接受這個 768-bit 的公開主機金鑰之後,Client 自己也會隨機產生一支 256-bit 的私鑰,並且以加密的方式將公開主機金鑰與私鑰整合成一支完整的 Key ,並且將這支 Key 也傳送給 server ),用來將所有後續的 session 資料都使用這支 session 金鑰作為 3DES(Triple-DES),blowfish 或 IDEA 等對稱加密(symmetric encryption)的鑰匙來加密.由於 SSH Client 端每次的 256-bit 的 Key 是隨機取得的,所以你這次的連線與下次的連線的 Key 就不會一樣. - SSH protocol version 2(WinSCP 預設的方式)
與 version 1 不同的是,在 version 2 當中將不再產生公開主機金鑰了,所以,當 SSH Client 端連線到 SSH Server 端時,兩者將藉由 Diffie-Hellman key (非對稱式加密的一種) 的演算方式來產生一個分享的 Key ,之後兩者將藉由類似 Blowfish (對稱式加密的一種) 的演算方式進行同步解密的動作!
每一個 sshd 都提供這兩個版本的連線,而決定這兩種模式連線的,就必需要在 SSH client 端連線時選擇連線的模式才能確認。目前預設情況下,會自動使用 version 2 的連線模式喔!而由於我們的連線資料中,經過了這個 Public 與 Private Key 的加密、解密動作,所以在中間的傳送過程中,當然就比較安全的多
在進階選項裡面會出現關於 SSH 的設定,不過我們只是要用 SCP 的服務就不用懂這麼多了!!如果對於加解密又興趣的可以參考一下
SSH (Secure SHell) – https://benjr.tw/301
SSH 應用 – https://benjr.tw/304
PKI – https://benjr.tw/310
私人金鑰檔案(K)
回來繼續說明 "私人金鑰檔案(K) 這到底要不要輸入!!這要看當初設定時 SSH Client 有沒有將自己個公鑰交給 SSH Server 保存.
SSH Server 會檢查 SSH Client 指定的使用者是否有儲存公開金鑰在 $HOME/.ssh/authorized_key 檔案中.
- 沒有 – 基於密碼的安全驗證,SSH Server 會提示使用者輸入使用者密碼. (不需要輸入 私人金鑰檔案)
- 有 – 基於金鑰的安全驗證.
- SSH Server 會請求 SSH Client 作身份驗證.
- 這邊就需要輸入 私人金鑰檔案.
- 如果私鑰有設定過通行證 passphrase ,這時還需要輸入 passphrase 密碼,接下來會使用這私鑰來建立簽章並傳給 SSH Server.
- 如果 SSH Server 用 SSH Client 公鑰驗證,驗證成功就不需要使用者輸入密碼了.
檔案協定[F]
還有檔案協定[F] SFTP / SCP 這兩種服務不一樣嗎??
SSH 本身就提供 ftp 的功能 (SFTP),它還是使用 22 port (22 port 走的是 SSH 加密的傳輸,而不是使用 ftp 預設的 21 port) ,而 SCP 的功能類似於 rcp.不過這兩種方式都是透過 SSH 去連接,也因為 WinSCP 使用 Windows 介面的關係這兩種方式變的很類似了.
One thought on “WSCP – windows Secure copy”