ssh使用密钥远程连接时,会因为各项原因导致无法连接
本文以本机(windows), 连接目标机(Ubuntu) 为例, 列出应该逐项排查的问题, 确保能够正确连接
1. 确保两机器能够相互ping通
- windows和linux都有防火墙, 双方ping不同大概率是因为防火墙的问题
- 还有一种可能是网卡IP设置不对。 有三种情况
第一, 与目标机通过网线连接, 那么就要检查windows以太网卡IP配置与目标机是同一网段
第二, 与目标机通过无线网连接, 那么就检查两边IP在同一网段
第三, 与目标机通过虚拟网卡连接, 一般虚拟网卡由虚拟机创建, 那么就在虚拟机中检查虚拟的以太网卡和windows主机的以太网卡配置在同一网段。
2. 密钥权限
- windows主机密钥的权限不能太open, 设置windows主机密钥的方式见我另一篇文章:
《windows下CMD中使用ssh登录远程服务器报Permissions for 'xxx' are too open.》- Linux 主机要检查用户家目录权限, 必须为
755
或者644
用户家目录权限太高,会导致openssh连接失效, 这很重要, 也很容易被忽略。- Linux主机其他目录权限主项检查:
.ssh : 700
authorized_keys: 600
3. 检查目标机sshd_config的如下几个配置项
Port 22 # 默认就是这个端口
PubkeyAuthentication yes # 打开公钥认证
AuthorizedKeysFile .ssh/authorized_keys # 指定认证公钥文件
4. 确保sshd正在运行
netstat -tln 看ipv4端口里有没有22端口