19 Oct 2018
ssh
ssh代理
详情参见文章
简单总结:
- 不同服务器用不同的密钥对,而不需要人为指定。
- 私钥被密码加密,可以避免重复输入。
SSH 参数配置有3个层次
- 命令行参数,如-p 10086, -i /path/to/identity_file 等选项来设置SSH的端口号或认证证书位置
- 针对某个用户的配置文件,所在路径为~/.ssh/config,默认是不存在的,需要手动创建
- 针对系统所有用户的配置文件,所在路径为/etc/ssh/ssh_config参数重要性的顺序也是1>2>3,即越近的配置重要性越高。这里主要讲述第2种情况下的配置方式,即针对~/.ssh/config文件的写法进行说明。
~/.ssh/config文件
一个示例的文件如下:
# configuration 1
Host cluster
HostName 192.168.11.11
User tom
# configuration 2
Host=aliyun
Hostname=202.44.2.2
User tom
我们想要ssh连接到上例中的#1配置的主机,则在命令行执行如下命令即可:ssh cluster
一个最有用的场景是使用scp在不同主机间传数据。没有配置之前,你得写很长的参数,如scp a.txt tom@192.168.11.11:~/
配置过上例中的文件后,这个任务可以简化成这样:scp a.txt cluster:~/
常见参数类型:
- Host
- HostName
- User
- Port
- IdentityFile
- AddKeysToAgent // 只有使用了密钥之后才会把它存储到agent。
- UseKeychain // 记录密钥
- StrictHostKeyChecking // 跳过yes回答
- UserKnownHostsFile=/dev/null //避免host key fingerprint 修改后验证失败
/etc/ssh_config
在通过ssh登录到服务器上查看日志的时候,得到中文乱码,通过切换终端测试得到异常,通过以下的解决办法最终解决。
通过终端ssh登录到服务器时,得到异常:
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
解决办法是:
注释掉 /etc/ssh_config
文件中的一行信息:
# SendEnv LANG LC_*
Til next time,
at 20:42