【翻译】OpenSSH Client 配置指南
一个局部或者全局的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
vi ~/.ssh/config
或者
vi $HOME/.ssh/config
对于登录每一台服务器的配置,我们添加如下配置文件
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/
aliases配置
你可以创建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/