11.24 Linux 下你所不知道的 7 個 SSH 命令用法

Linux 下你所不知道的 7 個 SSH 命令用法

Linux 下你所不知道的 7 個 SSH 命令用法

☞ 程序員進階架構師必備資源免費送 ☜

一個系統管理員可能會同時管理著多臺服務器,這些服務器也許會放在不同的地方。要親自一臺一臺的去訪問來管理它們顯然不是最好的方法,通過遠程控制的方法應該是最有效的。

Linux系統的遠程管理工具大概有幾種:telnet,ssh,vnc等,其中ssh是最常用的管理方法,採用密文的傳輸方式,簡單安全。

<code>Secure Shell/<code>縮寫是<code>SSH/<code>, 由IETF的網絡工作小組(<code>Network Working Group/<code>)所制定,<code>SSH/<code>是一項創建在應用層和傳輸層基礎上的安全協議,為計算機的<code>shell/<code>提供安全的傳輸和使用環境。

下面我們來介紹 SSH 的 7 大用法。

1. 基本用法

最簡單的用法就是不帶參數,僅輸入 ssh 再加上主機地址,比如:

<code>ssh 192.168.0.116
/<code>

這種形式登陸主機,會默認使用當前用戶進行登錄。第一次連接的時候,SSH 會確認目標主機的真實性,如果沒有問題的話,輸入 yes 即可。

Linux 下你所不知道的 7 个 SSH 命令用法

如果我們想要以指定用戶名來登錄主機,有兩種方法:

a. 使用 <code>-l/<code>選項

<code>ssh -l alvin 192.168.0.116
/<code>

b. 使用 user@hostname 格式

<code>ssh [email protected]
/<code>

這兩種方法,其中第二種尤為常用。

2. 指定端口登錄

SSH 默認使用的端口號是 22。大多現代的 Linux 系統 22 端口都是開放的。如果你運行 ssh 程序而沒有指定端口號,它直接就是通過 22 端口發送請求的。

如果我們不想通過 22 端口登錄,那麼我們可以使用 <code>-p/<code>選項來指定端口。

<code>ssh 192.168.0.116 -p 1234
/<code>

引申話題:如何修改端口號?

只需修改 <code>/etc/ssh/ssh_config/<code>,修改如下一行:

<code>Port 22
/<code>

3. 對所有數據請求壓縮

使用 <code>-C/<code>選項,所有通過 SSH 發送或接收的數據將會被壓縮,並且任然是加密的。

<code>ssh -C 192.168.0.116
/<code>

但是,這個選項在網速不是很快的時候比較有用,而當網速較快的時候,使用壓縮反而會降低效率,所以要視情況使用。

4. 打開調試模式

因為某些原因,我們想要追蹤調試我們建立的 SSH 連接情況。SSH 提供的 <code>-v/<code>選項參數正是為此而設的。其可以看到在哪個環節出了問題。

<code>[Alvin.Alvin-computer] ➤ ssh -v [email protected]
OpenSSH_7.1p2, OpenSSL 1.0.1g 7 Apr 2014
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to 192.168.0.116 [192.168.0.116] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Raspbian-10+deb9u4
debug1: match: OpenSSH_7.4p1 Raspbian-10+deb9u4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 192.168.0.116:22 as 'pi'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
/<code>

5. 綁定源地址

如果你的客戶端有多於兩個以上的 IP 地址,你就不可能分得清楚在使用哪一個 IP 連接到 SSH 服務器。為了解決這種情況,我們可以使用 <code>-b/<code>選項來指定一個IP 地址。這個 IP 將會被使用做建立連接的源地址。

<code>[Alvin.Alvin-computer] ➤ ssh -b 192.168.0.105 [email protected]
Linux raspberrypi 4.14.71-v7+ #1145 SMP Fri Sep 21 15:38:35 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Feb 24 08:52:29 2019 from 192.168.0.105
/<code>

6. 遠程執行命令

如果我們想在目標主機執行一條命令,我們通常的做法是,先登錄到目標主機,執行命令,再退出來。這樣做當然是可以,但是比較麻煩。

如果我們僅僅是想遠程執行一條命令,可以直接在後面跟上命令就好,如下:

<code>[Alvin.Alvin-computer] ➤ ssh [email protected] ls -l
Desktop
Documents
Downloads
MagPi
Music
/<code>

7. 掛載遠程文件系統

另外一個很讚的基於 SSH 的工具叫 <code>sshfs/<code>。sshfs 可以讓你在本地直接掛載遠程主機的文件系統。它的使用格式如下:

<code>sshfs -o idmap=user user@hostname:/home/user ~/Remote
/<code>

比如:

<code>sshfs -o idmap=user [email protected]:/home/pi ~/Pi
/<code>

這個命令可以將遠程主機 pi 用戶的主目錄掛載到本地主目錄下的 Pi 文件夾。

煩請動動手指頭將本號置頂/標星,

Linux 下你所不知道的 7 个 SSH 命令用法

本公眾號全部博文已整理成一個目錄,請在公眾號裡回覆「m」獲取!

5T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內回覆「1024」,即可免費獲取!!


分享到:


相關文章: