一個系統管理員可能會同時管理多台伺服器,這些伺服器也許會放在不同的地方。要親自一台一台的去訪問來管理它們顯然不是最好的方法,透過遠端控制的方法應該是最有效的。
Linux系統的遠端管理工具大概有幾種:telnet,ssh,vnc等,其中ssh是最常用的管理方法,採用密文的傳輸方式,簡單安全。
Secure Shell
縮寫是SSH
, 由IETF的網路工作小組(Network Working Group
)所製定,SSH
是一項創建在應用層和傳輸層基礎上的安全協議,為電腦的shell
提供安全的傳輸和使用環境。
下面我們來介紹 SSH 的 7 大用法。
最簡單的用法就是不帶參數,只輸入ssh 再加上主機位址,例如:
ssh 192.168.0.116
這種形式登陸主機,會預設使用目前使用者進行登入。第一次連線的時候,SSH 會確認目標主機的真實性,如果沒有問題的話,輸入 yes 即可。
如果我們想要以指定使用者名稱登入主機,有兩種方法:
a. 使用-l 選項
ssh -l alvin 192.168.0.116
b. 使用user@hostname 格式
ssh alvin@192.168.0.116
這兩種方法,其中第二種特別常用。
SSH 預設使用的連接埠號碼是 22。大部分現代的 Linux 系統 22 連接埠都是開放的。如果你執行 ssh 程式而沒有指定連接埠號,它直接就是透過 22 連接埠發送請求的。
如果我們不想透過 22 連接埠登錄,那麼我們可以使用 -p
選項來指定連接埠。
ssh 192.168.0.116 -p 1234
引申話題:如何修改連接埠號碼?
只需修改/etc/ssh/ssh_config
,修改以下一行:
Port 22
使用 -C
選項,所有透過SSH 發送或接收的資料將會被壓縮,並且任然是加密的。
ssh -C 192.168.0.116
但是,這個選項在網速不是很快的時候比較有用,而當網速較快的時候,使用壓縮反而會降低效率,所以要視情況使用。
因為某些原因,我們想要追蹤偵錯我們建立的 SSH 連線情況。 SSH 提供的 -v
選項參數正是為此而設的。其可以看到在哪個環節出了問題。
[Alvin.Alvin-computer] ➤ ssh -v pi@192.168.0.116 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
如果你的客戶端有多於兩個以上的IP 位址,你就不可能分得清楚在使用哪一個IP 連接到SSH 伺服器。為了解決這種情況,我們可以使用 -b
選項來指定一個IP 位址。這個 IP 將會被使用來做建立連線的來源位址。
[Alvin.Alvin-computer] ➤ ssh -b 192.168.0.105 pi@192.168.0.116 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
如果我們想在目標主機執行一條指令,我們通常的做法是,先登入目標主機,執行指令,再登出。這樣做當然是可以,但比較麻煩。
如果我們只是想遠端執行一條指令,可以直接在後面跟上指令就好,如下:
[Alvin.Alvin-computer] ➤ ssh pi@192.168.0.116 ls -l Desktop Documents Downloads MagPi Music
另外一個很讚的基於SSH 的工具叫做sshfs
。 sshfs 可以讓你在本地直接掛載遠端主機的檔案系統。它的使用格式如下:
sshfs -o idmap=user user@hostname:/home/user ~/Remote
例如:
sshfs -o idmap=user pi@192.168.0.116:/home/pi ~/Pi
#更多Linux文章,請造訪Linux教學#欄位進行學習!
以上是Linux 下你所不知道的 7 個 SSH 指令用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!