Linux中國

10個 ssh 簡單命令選項

SSH 是什麼

SSH(全稱 Secure Shell)是一種加密的網路協議。使用該協議的數據將被加密,如果在傳輸中間數據泄漏,也可以確保沒有人能讀取出有用信息。要使用 SSH,目標機器應該安裝 SSH 服務端應用程序,因為 SSH 是基於客戶-服務模式的。 當你想安全的遠程連接到主機,可中間的網路(比如網際網路)並不安全,通常這種情況下就會使用 SSH。

安裝 SSH

的 Linux 系統默認已經安裝了 SSH。如果碰巧你的機器沒裝(譯註:我能吐槽么?沒有不裝ssh的Linux伺服器吧,不過,大家要記得升級你的ssh伺服器),我們可以手工來安裝一下。最簡單的方式就是使用 Linux 包管理器。

基於 Debian / Ubuntu 的系統 :

安裝 ssh-client

$ sudo apt-get install openssh-client

安裝 ssh-server

$ sudo apt-get install openssh-server

基於 RedHat / CentOS 的系統 :

# yum install openssh-server openssh-clients

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

An ssh client

使用 SSH

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

1. 無選項參數運行 SSH

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

$ ssh 192.168.0.103

SSH connecti confirmation

第一次連接目標主機時,ssh 會讓你確認目標主機的真實性。如果你回答的是 NO,SSH 將不會繼續連接,只有回答 Yes 才會繼續(譯註:會加入RSA key的指紋作為記錄,如果下次連接發現指紋變化,會提示你)。

Connecting to SSH

下一次再登陸此主機時,SSH 就不會提示確認消息了。對此主機的真實驗證信息已經默認保存在每個用戶的 /home/user/.ssh 文件里。

2. 指定登陸用戶

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

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

$ ssh -l leni 192.168.0.103

Ssh using -l option

我們也可以這樣輸入:

$ ssh leni@192.168.0.0103

Another way to supply username

3. 指定埠

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 服務。

4.對所有數據請求壓縮

有了這個選項,所有通過 SSH 發送或接收的數據將會被壓縮,並且任然是加密的。要使用 SSH 的壓縮功能,使用 -C 選項。

$ ssh -C 192.168.0.103

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

5. 指定一個加密演算法

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

SSH cipher configuration example

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

Cipher blowfish

默認的,SSH 會使用 3des 演算法。

6. 打開調試模式

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

$ ssh -v 192.168.0.103

debug ssh connection

7. 綁定源地址

如果你的客戶端有多於兩個以上的 IP 地址,你就不可能分得清楚在使用哪一個 IP 連接到 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 的連接已經建立。

Bind address using SSH

8. 使用其他配置文件

默認情況下,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

Specify your ssh_config

9. 使用 SSH X11 Forwarding

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

在伺服器端,你需要使 /etc/ssh/ssh_config 文件中的行設置成 ForwardX11 yes 或者 X11Forwad yes,以啟用 X11 Forwarding,重啟 SSH 服務程序。

然後在客戶端,輸入 ssh -X user@host:

$ ssh -X leni@192.168.0.101

一旦登陸,可以輸入:

$ echo $DISPLAY

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

localhost:10:0

隨後就可以運行應用了,僅僅只能輸入應用程序的命令。讓我們試試,比如想運行 xclock 程序,輸入:

$ xclock

Use X11 Formading

它就運行起來了,xclock 確實是運行在遠端系統的,但它在你的本地系統里顯示了。

xclock

10. 可信任的 X11 轉發

如果你敢肯定你的網路是安全的,那麼你可以使用可信任的 X11 轉發機制。這意味著遠程的 X11 客戶端可以完全的訪問源 X11 顯示內容。要使用此功能,可以使用 -Y 選項。

$ ssh -Y leni@192.168.0.101

SSH _Y for trusted connection

結論

我們相信 SSH 的使用範圍非常之廣。SSH 給用戶提供了網路連接的極大安全性和靈活性。通常我們都會輸入 man sshman ssh_config 來顯示它的用戶手冊及查看更多的細節。

(譯註補充:建議使用ssh的協議版本2,因此請修改 ssh_config 文件的 Protocol 欄位為:2,而將對協議1的支持取消。)

via: http://linoxide.com/linux-command/learn-ssh-connection-options/

譯者:runningwater 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國