學會配置ssh客戶端
一個局部或者全局的ssh配置能夠加速你通過訪問ssh server的速度,能夠為你的ssh client定製快捷登錄方式。讓我們來一起看一下openssh的配置例子吧。
系統級別的openssh client配置
1.0 /etc/ssh/ssh_config
: 這個文件是ssh client連接ssh server使用的配置,做個文件的許可權必須是所有用戶都能讀取的。
用戶級別的ssh client配置
1.0 $HOME/.ssh/config
: 這個是對當前用戶有效的ssh client的配置,它能夠覆蓋全局的ssh client配置。
~/.ssh/config規則
此文件配置規則如下:
- 每一行一條配置信息,分別對應的是配置項的名字和對應的值,語法如下:
config value
config1 value1 value2
- 你也可以使用等於號來替代上面的空格
config=value
config1=value1 value2
- 空行會被忽略
- 符號開頭的行會被忽略
- 配置項參數名字不分大小寫,但是配置項的值嚴格區分大小寫
一個小技巧:如果你從來沒有使用過ssh命令,沒有
~/.ssh
文件夾,你可以使用命令手動創建這個文件夾,mkdir -p $HOME/.ssh && chmod 0700 $HOME/.ssh
例子
我們接下來的例子配置如下: 本地客戶端是MAC OSX或者ubunutu linux 遠程服務端是unix-OpenBSD或者其他運行最新版本OpenSSH server的伺服器 遠程的OpenSSH server的地址是: 75.126.153.206 遠程的OpenSSH server的埠是: 4242 * 本地私鑰文件的地址是: /nfs/shared/users/nixcraft/keys/server1/id_rsa
基於以上條件,我們的ssh登錄命令如下:
ssh -i /nfs/shared/users/nixcraft/keys/server1/id_rsa -p 4242 nixcraft@server1.cyberciti.biz
或者是
ssh -i /nfs/shared/users/nixcraft/keys/server1/id_rsa -p 4242 -l nixcraft server1.cyberciti.biz
```
每次登錄都要敲這麼長的命令,是無法接受的。
要避免這種情況,需要配置本地ssh client的配置文件`~/.ssh/config`
```shell
vi ~/.ssh/config
```
或者
```shell
vi $HOME/.ssh/config
```
對於登錄每一台伺服器的配置,我們添加如下配置文件
```txt
Host server1
HostName server1.cyberciti.biz
User nixcraft
Port 4242
IdentityFile /nfs/shared/users/nixcraft/keys/server1/id_rsa
這個時候我們連接server1.cyberciti.biz
伺服器只需要在終端輸入:
ssh server1
添加其他機器
加入配置到~/.ssh.config
文件中:
Host nas01
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/nas01.key
快速的登錄:
ssh nas01
我的ssh client配置
### default for all ##
Host *
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
User nixcraft
Port 22
Protocol 2
ServerAliveInterval 60
ServerAliveCountMax 30
## override as per host ##
Host server1
HostName server1.cyberciti.biz
User nixcraft
Port 4242
IdentityFile /nfs/shared/users/nixcraft/keys/server1/id_rsa
## Home nas server ##
Host nas01
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/nas01.key
## Login AWS Cloud ##
Host aws.apache
HostName 1.2.3.4
User wwwdata
IdentityFile ~/.ssh/aws.apache.key
## Login to internal lan server at 192.168.0.251 via our public uk office ssh based gateway using ##
## $ ssh uk.gw.lan ##
Host uk.gw.lan uk.lan
HostName 192.168.0.251
User nixcraft
ProxyCommand ssh nixcraft@gateway.uk.cyberciti.biz nc %h %p 2> /dev/null
## Our Us Proxy Server ##
## Forward all local port 3128 traffic to port 3128 on the remote vps1.cyberciti.biz server ##
## $ ssh -f -N proxyus ##
Host proxyus
HostName vps1.cyberciti.biz
User breakfree
IdentityFile ~/.ssh/vps1.cyberciti.biz.key
LocalForward 3128 127.0.0.1:3128
理解~/.ssh/config
文件的配置
- Host: 定義遠程伺服器的匹配默認,如果匹配成功,那麼使用該選項的配置來登錄伺服器。
*
符號能匹配所有的伺服器,可以認為針對所有伺服器的全局配置。 - HostName: 登錄機器的域名或者是特定的ip地址
- User: 當前登錄ssh的用戶名
- IdentityFile: 當前登錄ssh使用的私鑰文件,對於ssh協議的第一版是默認是
~/.ssh/identity
,在第二版本ssh協議中是~/.ssh/id_dsa
文件 - ProxyCommand: 這是在目標機器上執行的條命令,
%h
表示遠程機器的地址,%p
表示遠程機器的ssh埠號,%r
表登錄遠程機器的用戶名,這個命令一般被用當做跳板機器的跳轉,這個功能功能通常和nc命令一起配置使用,例如:如下指令能夠連接HTTP proxy
ProxyCommand /usr/bin/nc -X connect -x 192.1.0.253:3128 %h %p
LocalForward: 他是用來安全轉發流量,連接一個特殊埠,第一個參數是本地綁定的地址,第二個參數是ip和地址 * Port: 遠程ssh server的埠號
LocalForward: ssh協議的版本號碼,必須是1或者是2 ServerAliveInterval: 設置ssh連接的超時時間緊 ServerAliveCountMax: 設置ssh的最大活躍連接數
加速ssh session
opensssh等在一個tcp連接上創建多個ssh同道,這個減少tcp創建的次數,更新本地~/.ssh/config
Host server1
HostName server1.cyberciti.biz
ControlPath ~/.ssh/controlmasters/%r@%h:%p
ControlMaster auto
參考https://www.cyberciti.biz/faq/linux-unix-osx-bsd-ssh-multiplexing-to-speed-up-ssh-connections/ ,https://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-passing-through-one-host-gateway-server/
alias配置
你可以創建bash的alias,這樣登錄的方式更加簡單,當然,這一切都是基於前面的配置
## create a new bash shell alias as follow ##
alias server1="ssh -i /nfs/shared/users/nixcraft/keys/server1/id_rsa -p 4242 nixcraft@server1.cyberciti.biz"
這樣使用server1
就能登錄服務了。
原文地址: https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/
推薦閱讀: