前言
最近看到了一篇关于 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.com
、web02.xxx.com
、web03.xxx.com
、web04.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条。
当然,现实工作中会比这个复杂的多,定义一个规则,大家都遵守,会让配置变得方便的多。
网友评论