美文网首页
SSH config使用

SSH config使用

作者: imjcw | 来源:发表于2019-10-17 10:32 被阅读0次

前言

最近看到了一篇关于 ssh 的文章,于是整理了一些常用操作。

如何登录一台服务器

一条命令解决(这里默认是 22 端口)

ssh root@0.0.0.0

如若修改了其中的一些配置,具体参数可以在命令行中手敲 ssh,查看参数列表。

imjcw@imjcw-PC:~$ ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]

指定证书所在位置

再举个经常用到的例子。

我们经常会在本地生成多个证书,对应不同的平台(一套走天下的请忽略)。那么我们在 ssh 的时候,可能需要直接指定证书所在的位置。

ssh -i ~/.ssh/id_XXX_rsa root@0.0.0.0

使用 ssh config 管理多台服务器的信息

在现实工作中,我们不可避免的会接触多套环境,比如测试环境就有多台服务器,每次都要记住每个服务所对应的 IP 地址,是非常麻烦的事情。

ssh config 给我们提供了便利,我们可以对每一个服务自定义别名,之后只需要通过别名登录就行。

参数列表

Host:值为通配符的模式(Pattern);该键之后的键值对,将用于匹配于该模式的主机。
HostName:值为真实的目标远程主机名;在值中,%h 可用于命令行接收到的主机名字的转义。
User:值为希望登录的远程主机的用户名。
IdentityFile:值为希望登录时使用的密钥文件。
Port:端口。

示例

编辑 ~/.ssh/config

Host web
  HostName web.xxx.com
  User root
  Port 22
  IdentityFile ~/.ssh/id_web_rsa

Host api
  HostName api.xxx.com
  User root
  IdentityFile ~/.ssh/id_api_rsa

配置好之后,我们可以用下列命令登录指定的服务器。

# 登录 web 服务器
ssh web

# 登录 api 服务器
ssh api

是不是方便多了?这样子我们只需要记住别名就行,不需要管这个服务在哪一台服务器上。

进阶

虽然有配置,方便了我们的操作,但是当服务太多的时候,我们发现需要配置一大堆,而且,他们的配置很多都很相似,面对这样的情况,ssh config 给我们提供了通配符和一些可变参数,这样我们可以总结出一套规则,大家按照规则来就OK。

# 通配符
*:代表0~n个非空白字符
?:代表一个非空白字符
!:表示例外通配

# 可变参数列表
%d:本地用户目录 ~
%u:本地用户
%l:本地主机名
%h:远程主机名
%r:远程用户名

举个例子:我们有四台服务器,分别是 web01.xxx.comweb02.xxx.comweb03.xxx.comweb04.xxx.com,我们需要加上配置。

原先的配置如下:

Host web01
  HostName web01.xxx.com
  User root
  Port 22
  IdentityFile ~/.ssh/id_web_rsa

Host web02
  HostName web02.xxx.com
  User root
  Port 22
  IdentityFile ~/.ssh/id_web_rsa

Host web03
  HostName web03.xxx.com
  User root
  Port 22
  IdentityFile ~/.ssh/id_web_rsa

Host web04
  HostName web04.xxx.com
  User root
  Port 22
  IdentityFile ~/.ssh/id_web_rsa

我们需要配置四次,可以讲比较麻烦了。

用通配符和变量,如下:

Host web??
  HostName %h.xxx.com
  User root
  Port 22
  IdentityFile ~/.ssh/id_web_rsa

OK,配置完成,一条代替N条。

当然,现实工作中会比这个复杂的多,定义一个规则,大家都遵守,会让配置变得方便的多。

相关文章

网友评论

      本文标题:SSH config使用

      本文链接:https://www.haomeiwen.com/subject/wfrmmctx.html