碎碎念:原本以为配置ssh免密网上资料那么多应该手到擒来,没想到也会踩大坑,差点逼出强迫症来。。。写个小文章备忘一下,关键是步骤3!有可能你也像我一样折腾了很久,死活没法免密,最后才发现放置公钥keys的路径被别人修改了
1.在 Windows 上生成 SSH 密钥对
使用 ssh-keygen
命令生成公私钥对。
打开命令行工具(例如 PowerShell),运行以下命令:
ssh-keygen -t rsa
然后一路按回车,这将生成RSA 密钥对,并保存在 C:\Users\yourusername.ssh\ 目录下,私钥为 id_rsa,公钥为 id_rsa.pub
配置config文件
vim ~/.ssh/config
打开文件进行IP和用户名修改
# 主机名字AAA可以根据需要改
Host AAA
HostName 49.235.66.200 # 改成自己的IP
User ubuntu #改成自己的Linux用户
Port 22 #端口号按照需要给
# Mac上可能需要下面这些内容
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
2.上传公钥到服务器
登录到 Ubuntu 服务器,并将公钥(id_rsa.pub)里的内容复制到远程服务器的Ubuntu 服务器的 ~/.ssh/authorized_keys 文件中(没有这个文件手动生成一个),如果有多个keys则换行再添加
vim ~/.ssh/authorized_keys
检查权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3.确保Ubuntu 服务器的 SSH 配置正确
编辑 /etc/ssh/sshd_config 文件(这个步骤很少被提到,但它可能是个巨坑!)
sudo vim /etc/ssh/sshd_config
确认下面配置是正确的
PubkeyAuthentication yes
AllowTcpForwarding yes
AllowAgentForwarding yes
GatewayPorts yes
PermitTunnel yes
CLientAliveCountMax 10
# 这行很重要!配置了服务器端的公钥keys的保存路径
AuthorizedKeysFile .ssh/authorized_keys
刷新一下配置
systemctl start sshd
4.验证ssh免密
ssh AAA #设置成功则可以直接回车登录