天天看點

SSH 技巧

SSH 是 Linux 下進行遠端連接配接的基本工具。

一般情況下我們可以通過

ssh [email protected]

登入遠端伺服器,如果要管理多台伺服器,這樣太長了。

可以在家目錄的 .ssh 中建立config檔案,設定别名。

比如我的個人雲主機,

# Host 可跟多個表示别名
Host cloud  alias
    HostName 120.163.xxx.323
    User ubuntu
    Port 4722
    # 私鑰路徑
    IdentityFile ~/.ssh/id_rsa
           

這樣執行

ssh cloud

ssh alias

就無密碼登入雲主機了

1. 執行遠端指令

ssh cloud "df -h"

SSH 技巧
image.png

2. 用分号分隔多個指令,用引号引起來

ssh cloud "df -h; ps;"

3. 遇到需要互動的指令,加 -t 參數

$ ssh -t cloud top
           

比如

sudo

開頭的可能需要使用者輸入密碼,需要 TTY。

添加 -t 參數後,ssh 會保持登入狀态,直到你退出需要互動的指令。

SSH 技巧

再舉個實際例子:

ssh -t flux sudo -u fueladminprd ssh 192.168.1.100

這句話實際執行了兩步:

  1. ssh -t flux #登入名為flux的伺服器,因為需要互動式,加上-t
  2. sudo -u fueladminprd ssh 192.168.1.100 # 以 fueladminprd 使用者在 flux 上執行 ssh 192.168.1.100

    為了安全,flux 就是跳闆機,192.168.1.100 為實際測試伺服器。

4. 執行多行指令

$ ssh cloud "echo 'haha'
> pwd
> ls "
           

可以用單引号或雙引号開頭,然後寫上幾行指令,最後再用相同的引号來結束。

>

開頭的就是輸入下一行指令

如果需要在指令中使用引号,可以混合使用單雙引号。

SSH 技巧

5. 在指令中使用變量

在遠端伺服器執行

ls node

,本地定義變量a,傳入到指令中。達到一樣的效果。

在下圖的指令中為 bash 指定了 -c 參數

$ a=node
$ ssh cloud bash -c " '
> ls $a
> ' "
           
SSH 技巧

6. 執行本地腳本

本地建立demo.sh,内容是:

ls node

運作

ssh cloud < demo.sh

通過重定向 stdin,本地的腳本 demo.sh 在遠端伺服器上被執行。

SSH 技巧

7. 為腳本傳入參數

修改 demo.sh 内容為:

ls node
echo $0
echo $1
echo $2
           

執行

ssh cloud 'bash -s'< demo.sh aa bb cc

bash 就是 $0 第一個參數。

SSH 技巧

參考:

http://www.openssh.com/ https://www.cnblogs.com/sparkdev/p/6842805.html https://www.zcfy.cc/article/top-20-openssh-server-best-security-practices