工作中遇到的问题
ssh_exchange_identification: Connection closed by remote host
原因是proxy设置的不对,应该用prc-proxy.intel.com:1080
什么是SSH配置?
SSH config是Linux系统下针对SSH客户端的一个参数配置方案,可以将一些关于SSH命令的参数放到配置文件中去,执行ssh命令的时候从文件中读取,简化命令行的操作。
基本用法
(1)、使用某个用户(例如user)登录远程主机host
命令:ssh user@host
(2)、如果本地用户名和远程用户名一致,则登录时可以省略用户名
命令:ssh host
(3)、ssh的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用-p参数,可以修改这个端口
命令:ssh –p 端口号 user@host
SSH 参数配置的3个层次
- 命令行参数,如
-p 10086
,-i /path/to/identity_file
等选项来设置SSH的端口号或认证证书位置 - 针对某个用户的配置文件,所在路径为
~/.ssh/config
,默认是不存在的,需要手动创建 - 针对系统所有用户的配置文件,,所在路径为
/etc/ssh/ssh_config
参数重要性的顺序也是1>2>3,即越近的配置重要性越高。这里主要讲述第2种情况下的配置方式,即针对~/.ssh/config
文件的写法进行说明。
一个示例的文件如下:
# configuration 1 Host cluster HostName 192.168.11.11 User tom # configuration 2 Host=aliyun Hostname=202.44.2.2 User tom
主要的规则如下:
- 每项配置都是
参数名 参数值
或参数值=参数名
的形式,其中参数名不区分大小写,而参数值区分大小写,如上面的参数名HostName
和Hostname
是同一个参数 - 不同主机的配置通过
Host
参数来区分,一个配置文件里面可以有针对多个Host的配置 - 以
#
开头的是注释,会被忽略 - 同一个Host的配置内部,
参数名 参数值
和参数值=参数名
的形式可以混用,如上例#2配置所示
下面详细展开常见的参数类型。
常见参数类型
Host
类似昵称,用于标识某个特定的配置,在ssh命令中使用,例如我们想要ssh连接到上例中的#1配置的主机,则在命令行执行如下命令即可:
ssh cluster
一个最有用的场景是使用scp在不同主机间传数据。没有配置之间,你得写很长的参数,如
scp a.txt tom@192.168.11.11:~/
尤其是IP地址记忆起来好麻烦啊。配置过上例中的文件后,这个任务可以简化成这样:
scp a.txt cluster:~/
省略了用户名和IP地址,方便多了。
HostName
需要ssh连接过去的主机名,一般是IP地址,也可以用%h
来替代命令行参数,这种情况由于我用的不多,所以没有深入了解,具体情况可以参考参考链接。
User
登录主机的用户名
IdentityFile
认证证书文件,默认位置是~/.ssh/id_rsa
, ~/ssh/id_dsa
等,如果采用默认的证书,可以不用设置此参数,除非你的证书放在某个自定义的目录,那么你就需要设置该参数来指向你的证书
Port
SSH访问主机的端口号,默认是22端口,同上,只有在非默认情况下才需要设置该值
其他
貌似常用的参数就这些,别的参数可以在命令行通过man ssh_config
来查看,其实涉及的参数还是非常多的。
ssh配置文件详解
1、/etc/ssh/ssh_config配置文件
2、/etc/ssh/sshd_config配置文件
参考链接:
https://zhuanlan.zhihu.com/p/35922004
https://blog.51cto.com/3381847248/2066599
https://www.cnblogs.com/hangj/p/11506686.html