Linux服务器设置免密登录
1. 在服务器上生成"密钥对"
shell
# 以RSA算法生成密钥对,然后一路回车就行了(如果你没啥讲究的话)
ssh-keygen -t rsa
加密方式
加密算法类型 安全性特点 典型密钥长度 兼容性 Ed25519 高安全性,性能最佳,抗侧信道攻击 256 较新的系统和SSH实现 ECDSA 安全性高,密钥短,效率高 256 主流现代系统 RSA(最常用) 经典可靠,应用广泛 至少 2048位(推荐3072或 4096) 最佳,几乎所有系统都支持 DSA 已不安全,密钥过短 1024 读者可以选择前三个任意一个,我觉得选用RSA最为稳妥
在用户家目录下会生成两个文件id_rsa、id_rsa.pub,这里的id_rsa是私钥,千万不能分发给任何设备。id_rsa.pub是公钥,可以分发给受信任的设备
2. 主机设置
2.1 Windows
用Windows的CMD执行以下命令(快捷键win+R,输入CMD)
shell
# 拷贝远程服务器上的公钥文件到本地,格式为 scp [登录用户名]@[服务器IP]:[公钥所存放的绝对路径] [本地路径]
scp pi@192.168.10.23:/home/pi/.ssh/id_rsa.pub ~/.ssh
# 拷贝到本地后,你可以在本地用户下的.ssh文件夹下找到id_rsa.pub文件,然后在.ssh文件夹下创建一个名为config的文件,文件内容如下
Host custom_server_name # 一个易于记忆的别名
HostName server_ip # 服务器的实际 IP 地址或域名
User username # 用于登录服务器的用户名
IdentityFile ~/.ssh/id_rsa # 指定私钥文件在 Windows 上的路径
保存文件!重新打开CMD,不出意外的话就可以顺利免密登录服务器了
2.2 Linux 或 Mac
用终端执行以下命令
shell
# 拷贝远程服务器上的公钥文件到本地,格式为 scp [登录用户名]@[服务器IP]:[公钥所存放的绝对路径] [本地路径]
scp pi@192.168.10.23:/home/pi/.ssh/id_rsa.pub ~/.ssh
# 创建authorized_keys文件,并把id_rsa.pub中内容追加进去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改权限
chmod 600 ~/.ssh/authorized_keys
# 修改sshd_config配置文件
vim /etc/ssh/sshd_config
# 修改内容如下
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 保存退出后,重启ssh服务
systemctl restart sshd
3.测试
使用CMD或终端连接远程服务器,如果不需要输入密码,则成功了
shell
ssh pi@192.168.10.23