天天看點

10個 ssh 簡單指令選項

一個系統管理者可能會同時管理着多台伺服器,這些伺服器也許會放在不同的地方。要親自一台一台的去通路來管理它們顯然不是最好的方法,通過遠端控制的方法應該是最有效的。遠端通路最通用的一款應用程式就是ssh(什麼?你還用telnet?....$%@%&w@$##)。

10個 ssh 簡單指令選項

<a target="_blank"></a>

ssh(全稱 secure shell)是一種加密的網絡協定。使用該協定的資料将被加密,如果在傳輸中間資料洩漏,也可以確定沒有人能讀取出有用資訊。要使用 ssh,目标機器應該安裝 ssh 服務端應用程式,因為 ssh 是基于客戶-服務模式的。 當你想安全的遠端連接配接到主機,可中間的網絡(比如網際網路)并不安全,通常這種情況下就會使用 ssh。

的 linux 系統預設已經安裝了 ssh。如果碰巧你的機器沒裝(譯注:我能吐槽麼?沒有不裝ssh的linux伺服器吧,不過,大家要記得更新你的ssh伺服器),我們可以手工來安裝一下。最簡單的方式就是使用 linux 包管理器。

$ sudo apt-get install openssh-client

$ sudo apt-get install openssh-server

# yum install openssh-server openssh-clients

ssh 一旦安裝上,我們就可以在終端下輸入 ssh 來檢查下安裝的是否正常。

10個 ssh 簡單指令選項

an ssh client

提供了許多可使用的選項。這篇文章會介紹一些我們在日常操作中經常使用的選項。

通常使用 ssh 的方式就是不加任何選項參數,僅僅輸入 "ssh"。下面是示例:

$ ssh 192.168.0.103

10個 ssh 簡單指令選項

ssh connecti confirmation

第一次連接配接目标主機時,ssh 會讓你确認目标主機的真實性。如果你回答的是 no,ssh 将不會繼續連接配接,隻有回答 yes 才會繼續(譯注:會加入rsa key的指紋作為記錄,如果下次連接配接發現指紋變化,會提示你)。

10個 ssh 簡單指令選項

connecting to ssh

下一次再登陸此主機時,ssh 就不會提示确認消息了。對此主機的真實驗證資訊已經預設儲存在每個使用者的 /home/user/.ssh 檔案裡。

預設的,ssh 會嘗試用目前使用者作為使用者名來連接配接。在上面的示例指令中,ssh 會嘗試用使用者名叫 pungki 的使用者身份來登入伺服器,這是因為使用者 pungki 正在客戶機上使用 ssh 用戶端軟體。

假如目标主機上沒有叫 pungki 的使用者呢?這時你就必須提供一個目标主機上存在的使用者名。從一開始就要指定使用者名的,可以使用 -l 選項參數。

$ ssh -l leni 192.168.0.103

10個 ssh 簡單指令選項

ssh using -l option

我們也可以這樣輸入:

$ ssh [email protected]

10個 ssh 簡單指令選項

another way to supply username

ssh 預設使用的端口号是 22。大多現代的 linux 系統 22 端口都是開放的。如果你運作 ssh 程式而沒有指定端口号,它直接就是通過 22 端口發送請求的。

一些系統管理者會改變 ssh 的預設端口号。讓我們試試,現在端口号是 1234.要連上那主機,就要使用 -p 選項,後面在加上 ssh 端口号。

$ ssh 192.168.0.103 -p 1234

要改變端口号,我們需要修改 /etc/ssh/ssh_config 檔案,找到此行:

port 22

把它換成其他的端口号,比如上面示例的 1234 端口,然後重新開機 ssh 服務。

有了這個選項,所有通過 ssh 發送或接收的資料将會被壓縮,并且任然是加密的。要使用 ssh 的壓縮功能,使用 -c 選項。

$ ssh -c 192.168.0.103

如果你的連網速度很慢的話,比如用 modem 上網,這個選項非常有用。但如果你使用的是像 lan 或其它更進階網絡的話,壓縮反而會降低你的傳輸速度。可以使用 -o 選項加上壓縮級别參數來控制壓縮的級别,但這個選項僅僅隻在 ssh-1 下起作用。

ssh 提供了一些可用的加密算法。可以在 /etc/ssh/ssh_config 或 ~/.ssh/config 檔案中看到(如果存在的話)。

10個 ssh 簡單指令選項

ssh cipher configuration example

讓我們試試比如你想使用 blowfish 算法來加密你的 ssh 會話,那麼你隻要把這一行加入你的/etc/ssh/ssh_config 或 ~/.ssh/config 檔案就可以:

cipher blowfish

預設的,ssh 會使用 3des 算法。

因為某些原因,我們想要追蹤調試我們建立的 ssh 連接配接情況。ssh 提供的 -v 選項參數正是為此而設的。

$ ssh -v 192.168.0.103

10個 ssh 簡單指令選項

debug ssh connection

如果你的用戶端有多于兩個以上的 ip 位址,你就不可能分得清楚在使用哪一個 ip 連接配接到 ssh 伺服器。

10個 ssh 簡單指令選項

more than 1 ip address

為了解決這種情況,我們可以使用 -b 選項來指定一個ip 位址。這個 ip 将會被使用做建立連接配接的源位址。

$ ssh -b 192.168.0.200 -l leni 192.168.0.103

服務端,我們可以使用 netstat 指令來檢查到服務的連接配接是否建立。可以看到 ip 為 192.168.0.200 的連接配接已經建立。

10個 ssh 簡單指令選項

bind address using ssh

預設情況下,ssh 會使用位于 /etc/ssh/ssh_config 的配置檔案。這個配置檔案作用于系統的所有使用者。但你想要為特定的使用者指定特殊的設定的話,可以把配置放入 ~/.ssh/config 檔案中。如果此檔案不存在,可以手工建立一個。

下面是一個通用 ssh_config 檔案配置的例子。這配置檔案位于 /home/pungki 目錄下。

host 192.168.0.*

forwardx11 yes

passwordauthentication yes

connecttimeout 10

ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

protocol 2

hashknownhosts yes

要使用指定的配置檔案,可以使用 -f 選項。

$ ssh -f /home/pungki/my_ssh_config 192.168.0.101

10個 ssh 簡單指令選項

specify your ssh_config

某些時候,你可能想把服務端的 x11 應用程式顯示到用戶端計算機上,ssh 提供了 -x 選項。但要啟用這功能,我們需要做些準備,下面是它的設定:

在伺服器端,你需要使 /etc/ssh/ssh_config 檔案中的行設定成 forwardx11 yes 或者 x11forwad yes,以啟用 x11 forwarding,重新開機 ssh 服務程式。

然後在用戶端,輸入 ssh -x user@host:

$ ssh -x [email protected]

一旦登陸,可以輸入:

$ echo $display

來檢查,你應該可以看到向如下所示的

localhost:10:0

随後就可以運作應用了,僅僅隻能輸入應用程式的指令。讓我們試試,比如想運作 xclock 程式,輸入:

$ xclock

10個 ssh 簡單指令選項

use x11 formading

它就運作起來了,xclock 确實是運作在遠端系統的,但它在你的本地系統裡顯示了。

10個 ssh 簡單指令選項

xclock

如果你敢肯定你的網絡是安全的,那麼你可以使用可信任的 x11 轉發機制。這意味着遠端的 x11 用戶端可以完全的通路源 x11 顯示内容。要使用此功能,可以使用 -y 選項。

$ ssh -y [email protected]

10個 ssh 簡單指令選項

ssh _y for trusted connection

我們相信 ssh 的使用範圍非常之廣。ssh 給使用者提供了網絡連接配接的極大安全性和靈活性。通常我們都會輸入man ssh 和 man ssh_config 來顯示它的使用者手冊及檢視更多的細節。

(譯注補充:建議使用ssh的協定版本2,是以請修改 ssh_config 檔案的 protocol 字段為:2,而将對協定1的支援取消。)

原文釋出時間為:2014-04-27

本文來自雲栖社群合作夥伴“linux中國”