OpenSSH配置文件示例
如何创建和设置OpenSSH配置文件来为在Linux或Unix桌面操作系统下经常访问的服务器创建快捷方式?
SSH客户端的全局或本地配置文件可以为sshd服务器创建快捷方式,包括高级ssh客户端选项。
您可以使用以下各种文件来配置OpenSSH ssh客户端,以节省时间并执行常用的ssh客户端命令行选项,例如端口,用户,主机名,标识文件等:让我们使用一些常见的OpenSSH配置文件示例。
系统范围内的OpenSSH配置文件客户端配置
/etc/ssh/ssh_config
:此文件为该台式机/笔记本电脑上的OpenSSH客户端的所有用户设置默认配置,并且系统上的所有用户都必须可读。
用户特定的OpenSSH文件客户端配置
~ .ssh/config或$HOME/.ssh/config
:这是用户自己的配置文件,将覆盖全局客户端配置文件/etc/ssh/ssh_config中的设置。
~/.ssh/config文件规则
创建ssh配置文件的规则如下:
- 您需要使用文本编辑器(如vi)编辑
~/.ssh/config
。 - 配置文件中每行允许一个配置参数,参数名称后跟一个或多个值。语法为:
config value config1 value1 value2
- 您可以在参数名称和值之间使用等号(=)代替空格。
config=value config1=value1 value2
- 所有空行都将被忽略。
- 所有以井号(#)开头的行都将被忽略。
- 所有值均区分大小写,但参数名称不区分大小写。
提示:如果这是全新的Linux,Apple OS X/Unix机器,或者在使用以下语法首先创建~/.ssh /
目录之前从未使用过ssh:mkdir -p $HOME/.ssh chmod 0700 $HOME/.ssh
例子
为了演示起见,我的示例设置如下:
- 本地桌面客户端Apple OS X或Ubuntu Linux。
- 运行最新的OpenSSH服务器的远程Unix服务器OpenBSD服务器。
- 远程OpenSSH服务器IP /主机:75.126.153.206(server1.theitroad.local)
- 远程OpenSSH服务器用户:theitroad
- 远程OpenSSH端口:4242
- 本地ssh私钥文件路径:/nfs/shared/users/theitroad/keys/server1/id_rsa
根据以上信息,我的ssh命令如下:
$ ssh -i /nfs/shared/users/theitroad/keys/server1/id_rsa -p 4242 [email protected]
或者
$ ssh -i /nfs/shared/users/theitroad/keys/server1/id_rsa -p 4242 -l theitroad server1.theitroad.local
您可以避免在登录到远程计算机和/或在远程计算机上执行命令时执行所有ssh命令参数。
您要做的就是创建一个ssh配置文件。
打开终端应用程序,并通过执行以下命令来创建配置文件:
## edit file in $HOME dir vi ~/.ssh/config
或者
## edit file in $HOME dir vi $HOME/.ssh/config
根据我们的示例设置,为服务器1的快捷方式添加/追加以下配置选项:
Host server1 HostName server1.theitroad.local User theitroad Port 4242 IdentityFile /nfs/shared/users/theitroad/keys/server1/id_rsa
保存并关闭文件。
通过执行以下命令来打开到server1.theitroad.local的新SSH会话:
$ ssh server1
添加其他主机
将以下内容添加到您的~/.ssh/config文件中:
Host nas01 HostName 192.168.1.100 User root IdentityFile ~/.ssh/nas01.key
您可以简单地输入:
$ ssh nas01
全部放在一起
这是我的示例~/.ssh/config文件,该文件说明和创建,设计和评估使用ssh客户端进行远程访问的不同需求:
### default for all ## Host * ForwardAgent no ForwardX11 no ForwardX11Trusted yes User theitroad Port 22 Protocol 2 ServerAliveInterval 60 ServerAliveCountMax 30 ## override as per host ## Host server1 HostName server1.theitroad.local User theitroad Port 4242 IdentityFile /nfs/shared/users/theitroad/keys/server1/id_rsa
了解~/.ssh/config条目
- 主机:定义配置部分适用于哪台主机。该部分以新的Host部分或文件结尾结束。单个*模式可用于为所有主机提供全局默认值。
- HostName:指定要登录的真实主机名。也允许使用数字IP地址。
- 用户:定义SSH连接的用户名。
IdentityFile
:指定从中读取用户DSA,ECDSA或DSA身份验证身份的文件。协议版本1的默认值为~/.ssh/identity,协议版本2的默认值为~/.ssh/id_dsa,~/.ssh/id_ecdsa和~/.ssh/id_rsa。- ProxyCommand:指定用于连接服务器的命令。命令字符串延伸到该行的末尾,并通过users shell执行。在命令字符串中,任何出现的%h都将由连接的主机名代替,%p则由端口替换,%r则由远程用户名替换。该命令基本上可以是任何命令,并且应该从其标准输入读取并写入其标准输出。该指令与nc(1)及其代理支持一起使用非常有用。例如,以下指令将通过位于192.1.0.253的HTTP代理进行连接:
ProxyCommand/usr/bin/nc -X connect -x 192.1.0.253:3128%h%p
- LocalForward:指定将本地计算机上的TCP端口通过安全通道转发到远程计算机上的指定主机和端口。第一个参数必须为[bind_address:] port,第二个参数必须为host:hostport。
- Port:指定要在远程主机上连接的端口号。
Protocol
:指定ssh(1)应该按照优先顺序支持的协议版本。可能的值为1和2。- ServerAliveInterval:设置超时间隔(以秒为单位),如果没有从服务器接收到任何数据,则ssh(1)将通过加密的通道发送消息以请求服务器的响应。请参阅博客文章。闲置几分钟或N分钟后,Open SSH Server连接断开,以获取更多信息。
ServerAliveCountMax
:设置服务器活动消息的数量,这些消息可以在ssh(1)没有从服务器返回任何消息的情况下发送。如果在发送服务器活动消息时达到此阈值,则ssh将与服务器断开连接,从而终止会话。
加快SSH会话
复用不过是通过单个连接发送多个ssh连接而已。
OpenSSH可以将现有的TCP连接重用于多个并发的SSH会话。
这样可以减少创建新的TCP连接的开销。
更新您的~/.ssh/config:
Host server1 HostName server1.theitroad.local ControlPath ~/.ssh/controlmasters/%r@%h:%p ControlMaster auto
有关更多信息,请参见Linux/Unix:OpenSSH Multiplexer加快OpenSSH连接速度。
在此示例中,我通过一台主机到达另一台服务器,即使用ProxyCommand跳转主机:
## ~/.ssh/config ## Host internal HostName 192.168.1.100 User Hyman ProxyCommand ssh [email protected] -W %h:%p ControlPath ~/.ssh/controlmasters/%r@%h:%p ControlMaster auto
有关shell别名的说明(过时的方法)
警告!这个基于bash shell别名的设置可能对您有用。
但是,我建议您长期使用~/.ssh/config文件以获得更好的结果。
SSH配置文件是更高级,更优雅的解决方案。
alias命令仅在此处用于演示目的,并且由于历史原因而在此处使用。
别名不过是命令的快捷方式,您可以在~/.bashrc文件中使用以下语法创建别名:
## create a new bash shell alias as follow ## alias server1="ssh -i /nfs/shared/users/theitroad/keys/server1/id_rsa -p 4242 [email protected]"
然后,要通过SSH进入server1,无需执行完整的ssh -i/nfs/shared/users/theitroad/keys/server1/id_rsa -p 4242 theitroad @ server1.theitroad.local
命令,
只要输入命令server1,然后按[ENTER]键:
$ server1