程式狂想筆記

一個攻城師奮鬥史

0%

sshconfig 設定小記

一般我們在 ssh 連線都會用 putty,但是在多台機器管理上不是很方便,所以回換成 xshell 相關工具做連線查詢,最近在做Bastion Host,發現ssh 也可以做到簡單管理設定,這邊就做個筆記。

首先,可以在 .ssh/config 做多個 ssh 連線設定,裡面設定值不分大小寫,可看官網文件。SSH config file syntax and how-tos for configuring the OpenSSH client

The possible keywords and their meanings are as follows (note that keywords are case-insensitive and arguments are case-sensitive):

常用設定

1
2
3
4
5
6
7
8
9
10
11
12
13
# - master
Host master # 代號
Hostname 192.168.11.24 # IP or Domain name
Port 2222 # 指定埠口
User jonny # 使用者名稱
identityfile ~/.ssh/id_rsa_24 # 指定金鑰

# - slave
Host slave # 代號
Hostname 192.168.11.25 # IP or Domain name
Port 2223 # 指定埠口
User jonny # 使用者名稱
identityfile ~/.ssh/id_rsa_25 # 指定金鑰

參考:增進 SSH 使用效率 - ssh_config · 完全用 GNU/Linux 工作

有看到有人會做編排,在排版上面會比較好處理。

1
2
3
4
5
Host            slave                # 代號
Hostname 192.168.11.25 # IP or Domain name
Port 2223 # 指定埠口
User jonny # 使用者名稱
identityfile ~/.ssh/id_rsa_25 # 指定金鑰

詳細設定

有做過ControlMaster 設定,可以參考 這篇。

官網其他設定可以看SSH config file syntax and how-tos for configuring the OpenSSH client

其他應用

有看到How to setup SSH config :使用 SSH 設定檔簡化指令與連線網址 | by awonwon | 浦島太郎的水族缸 | Medium,這篇可以用設定 ssh 連線,在做 git 不需要打那麼長。

剩下有看到什麼在補這邊

金鑰管理

我一直在想為什麼 ssh 連線會自動吃.ssh/id_rsa檔案,但是雖然可以產生別的 key,但我最近在想是不是使用 Linux帳號去管理這件事會比較好?因為切換帳號可以直接ssh 連線,然後正常安裝程式也會建議使用該程式帳號去做建置,這可能是我目前想到比較好作法。

ssh autocomplete

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
_complete_ssh_hosts ()
{
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
comp_ssh_hosts=`cat ~/.ssh/known_hosts | \
cut -f 1 -d ' ' | \
sed -e s/,.*//g | \
grep -v ^# | \
uniq | \
grep -v "\[" ;
cat ~/.ssh/config | \
grep "^Host " | \
awk '{print $2}'
`
COMPREPLY=( $(compgen -W "${comp_ssh_hosts}" -- $cur))
return 0
}
complete -F _complete_ssh_hosts ssh

上面加在 .profile 就可以開心始用。:D

參考:Add auto complete to your ssh, put into your .bash_profile

相關連結
教你高效使用SSH 的16 个技巧_shinepaopao-CSDN博客