OpenSSH配置文件示例

时间:2020-01-09 10:37:54  来源:igfitidea点击:

如何创建和设置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