SSH 技巧

SSH 是 Linux 下進行遠(yuǎn)程連接的基本工具。
一般情況下我們可以通過 ssh username@xxx.xxx.xxx.xxx 登錄遠(yuǎn)程服務(wù)器,如果要管理多臺服務(wù)器,這樣太長了。
可以在家目錄的 .ssh 中新建config文件,設(shè)置別名。
比如我有一臺個人的云主機。IP是120.163.163.163,端口是4722(一般都是22,這里為了安全我改為了其他),登錄用戶名是ubuntu,登錄方式是證書登錄。

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

這樣執(zhí)行 ssh cloudssh alias 就無密碼登錄云主機了

1. 執(zhí)行遠(yuǎn)程命令

ssh cloud "df -h"

image.png

2. 用分號分隔多個命令,用引號引起來

ssh cloud "df -h; ps;"

3. 遇到需要交互的命令,加 -t 參數(shù)

$ ssh -t cloud top

比如 sudo 開頭的可能需要用戶輸入密碼,需要 TTY。
添加 -t 參數(shù)后,ssh 會保持登錄狀態(tài),直到你退出需要交互的命令。

image.png

再舉個實際例子:
ssh -t flux sudo -u fueladminprd ssh 192.168.1.100
這句話實際執(zhí)行了兩步:

  1. ssh -t flux #登錄名為flux的服務(wù)器,因為需要交互式,加上-t
  2. sudo -u fueladminprd ssh 192.168.1.100 # 以 fueladminprd 用戶在 flux 上執(zhí)行 ssh 192.168.1.100
    為了安全,flux 就是跳板機,192.168.1.100 為實際測試服務(wù)器。

4. 執(zhí)行多行命令

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

可以用單引號或雙引號開頭,然后寫上幾行命令,最后再用相同的引號來結(jié)束。
> 開頭的就是輸入下一行命令
如果需要在命令中使用引號,可以混合使用單雙引號。

image.png

5. 在命令中使用變量

在遠(yuǎn)程服務(wù)器執(zhí)行 ls node,本地定義變量a,傳入到命令中。達(dá)到一樣的效果。
在下圖的命令中為 bash 指定了 -c 參數(shù)

$ a=node
$ ssh cloud bash -c " '
> ls $a
> ' "
image.png

6. 執(zhí)行本地腳本

本地創(chuàng)建demo.sh,內(nèi)容是:ls node
運行 ssh cloud < demo.sh
通過重定向 stdin,本地的腳本 demo.sh 在遠(yuǎn)程服務(wù)器上被執(zhí)行。

image.png

7. 為腳本傳入?yún)?shù)

修改 demo.sh 內(nèi)容為:

ls node
echo $0
echo $1
echo $2

執(zhí)行 ssh cloud 'bash -s'< demo.sh aa bb cc
bash 就是 $0 第一個參數(shù)。

image.png

想查看更多配置,打man ssh_config

參考:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容