date: 2015-12-08

ssh 客户端详细配置文档可参考 man ssh_config, 服务器配置可参考 man sshd_config.

keychain 自动管理 ssh key

我们使用 ssh 时经常使用 publickey 自动登录, 但 key 有密码时每次要重新输入密码比较麻烦. ssh 提供了 ssh-agentssh-add 来管理 key, 但其操作仍然比较人肉(底层). 通常第一次登录时启动 ssh-agent, 然后 ssh-agent 常驻内存, 相关程序通过环境变量查找到 ssh-agent. 以后每次登录时要检查 ssh-agent 是否存在, 然后查找并设置相关的环境变量, 这些工作 keychain 可以帮我们来做, apt-get install keychain 安装 keychain 后在 .profile 添加如下一行代码即可.

eval "$(keychain --eval id_dsa)"

保持活动心跳, 不 hash 主机名

一些服务器会自动断开一些长时间没有活动的 ssh 连接, 可在 .ssh/config 添加 ServerAliveInterval 保持活动心跳. 另外 ubuntu 默认会对 .ssh/known_hosts 中的主机名做 hash, 导致 ssh 自动补全主机名不可用, 可设置 HashKnownHosts 禁止 hash 主机名.

Host *
	ServerAliveInterval 58
	HashKnownHosts no

自动复用 ssh 连接

一些不支持自动登录的 host, 如公司跳板机, 每次重复登录认证很麻烦, 可添加如下配置自动复用已存在的 ssh 连接, 避免重复登录认证.

Host login1.*
	ControlMaster auto
	ControlPath ~/.ssh/master-%r@%h:%p