首先,在本地生成一对证书
cd ~/.ssh
ssh-keygen -t rsa
提示输入证书的名称,我们可以指定一下证书文件的名称;输入密码可以直接按回车。
假设我们指定证书名字为:myserver,则会生成以下两个文件
myserver
myserver.pub
其中带.pub
的是公钥。
我们需要把这个公钥文件放到服务器上,比如使用scp复制上去。
scp myserver.pub root@host_ip:/tmp
拷上去后,先用账号密码登陆到服务器。然后在服务器上操作,把公钥内容导入到authorized_keys文件中。
cd ~/.ssh/
cat /tmp/myserver.pub >> authorized_keys
在
.ssh
目录下有一个文件authorized_keys
; 这是用来存用户登陆公钥的。
然后,去修改/etc/sshd_config配置文件
RSAAuthentication yes
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
其中StrictModes本来是注释掉的,如果不取消注释并改为no,则只有root用户能通过证书免密登陆,普通用户还是需要输入密码。
修改好上面的配置文件后,重新一下sshd服务,服务端就算配好了。
systemctl restart sshd
接下来退出服务器,回到本地。
cd /etc/ssh
vi ssh_config
添加一行
IdentityFile = ~/.ssh/myserver
保存退出,试一下
ssh root@your_host_id