一、概述
SSH(Secure Shell)免密登录是一种机制,允许用户通过SSH协议连接到远程服务器,而无需在每次连接时输入密码。这种机制主要依赖于公钥和私钥的加密方法,通常使用RSA或DSA等加密算法。
二、生成密钥对
ssh-keygen
#ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_ssh_key
#-t rsa:指定密钥类型为 RSA
#-b 4096:指定密钥长度为 4096 位(这是一个常见的安全长度)
#-f ~/.ssh/my_ssh_key:指定私钥的输出文件名为 `my_ssh_key`,并保存在 `~/.ssh/` 目录下。公钥将自动保存为 `my_ssh_key.pub`。
三、配置ssh服务端
1、公钥写入配置
#方式一,会自动写入用户文件夹下.ssh/authorized_keys文件
ssh-copy-id -i my_ssh_key.pub user@host
#方式二,通过拷贝等方式上传至目标服务器后,追加进authorized_keys文件
cat my_ssh_key.pub >> ~/.ssh/authorized_keys
2、确保权限
#ssh文件夹(仅允许用户自己读写执行)
chmod 700 ~/.ssh
#公钥存储文件(仅允许用户自己读写执行)
chmod 600 ~/.ssh/authorized_keys
3、配置sshd
vi /etc/ssh/sshd_config
#...
PubkeyAuthentication yes
#...
四、重启sshd服务
sudo systemctl restart sshd
五、测试
ssh user@host <可选参数 i>
#-i 私钥
Comments NOTHING