本文基于 ubuntu 12.04 .

同一个局域网中的两台机器, 可通过 ${HOSTNAME}.local 相互访问. 如:

ssh ali-59375n.local

参考: https://help.ubuntu.com/community/HowToZeroconf , http://www.zeroconf.org/ .

局域网中的机器通常使用 DHCP 动态获取 IP 地址, 为了避免 ssh 经常提示主机 IP 变化的警告, 可在 ~/.ssh/config 文件添加如下配置:

Host *.local
	CheckHostIp no

ubuntu 需要以 hostname 访问 windows 机器, 可安装 samba 和 winbind, 并配置 /etc/nsswitch.conf, 在 "hosts: " 一行 "dns" 前添加 "wins". 参考: http://askubuntu.com/questions/266265/access-windows-machines-from-ubuntu-on-local-network-by-hostname

wins 实际由 libnss-winbind 提供, ubuntu 16.04 中安装 winbind 时不会安装该包, 需要独立安装。