學會配置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

參考cyberciti.biz/faq/linux ,cyberciti.biz/faq/linux

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就能登錄服務了。

原文地址: cyberciti.biz/faq/creat


推薦閱讀:

TAG:Linux | SSHServer | Linux運維 |