一個系統管理員可能會同時管理著多臺服務器,這些服務器也許會放在不同的地方。要親自一臺一臺的去訪問來管理它們顯然不是最好的方法,通過遠程控制的方法應該是最有效的。
linux系統的遠程管理工具大概有幾種:telnet,ssh,vnc等,其中ssh是最常用的管理方法,采用密文的傳輸方式,簡單安全。
Secure Shell縮寫是SSH, 由IETF的網絡工作小組(Network Working Group)所制定,SSH是一項創建在應用層和傳輸層基礎上的安全協議,為計算機的shell提供安全的傳輸和使用環境。
下面我們來介紹 SSH 的 7 大用法。
1. 基本用法
最簡單的用法就是不帶參數,僅輸入 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
這兩種方法,其中第二種尤為常用。
2. 指定端口登錄
SSH 默認使用的端口號是 22。大多現代的 Linux 系統 22 端口都是開放的。如果你運行 ssh 程序而沒有指定端口號,它直接就是通過 22 端口發送請求的。
如果我們不想通過 22 端口登錄,那么我們可以使用 -p 選項來指定端口。
ssh?192.168.0.116?-p?1234
引申話題:如何修改端口號?
只需修改 /etc/ssh/ssh_config ,修改如下一行:
Port?22
3. 對所有數據請求壓縮
使用 -C 選項,所有通過 SSH 發送或接收的數據將會被壓縮,并且任然是加密的。
ssh?-C?192.168.0.116
但是,這個選項在網速不是很快的時候比較有用,而當網速較快的時候,使用壓縮反而會降低效率,所以要視情況使用。
4. 打開調試模式
因為某些原因,我們想要追蹤調試我們建立的 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
5. 綁定源地址
如果你的客戶端有多于兩個以上的 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
6. 遠程執行命令
如果我們想在目標主機執行一條命令,我們通常的做法是,先登錄到目標主機,執行命令,再退出來。這樣做當然是可以,但是比較麻煩。
如果我們僅僅是想遠程執行一條命令,可以直接在后面跟上命令就好,如下:
[Alvin.Alvin-computer]???ssh?pi@192.168.0.116?ls?-l Desktop Documents Downloads MagPi Music
7. 掛載遠程文件系統
另外一個很贊的基于 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教程欄目進行學習!