Ubuntu开启SSH免密登录
要实现SSH免密登录,首先需要准备一组公钥和私钥。将公钥放到服务器上,将私钥放到客户机上。当客户机连接服务器时,服务器会根据自身的公钥校验客户机的私钥,如果校验通过则允许连接。
一、创建密钥
在客户机上输入以下命令创建一组公钥和私钥
ssh-keygen
- 密钥生成位置:默认会将密钥生成到当前登录用户的主目录下的.ssh文件夹中,如:/home/master/.ssh,建议使用默认位置,以便后续操作
- 私钥密码:默认无密码,如果设置了私钥密码,在进行免密登录时需要输入私钥密码
- 确认私钥密码:默认无密码
命令执行成功后将会在指定位置生成密钥
- 左边的id_rsa为私钥,需要留在客户机。建议保持其默认存放位置和默认文件名,在SSH连接时会自动使用,如果存放到其他位置或修改为其他文件名,在SSH连接时需要手动指定私钥位置。
- 右边的的id_rsa.pub为公钥,需要上传到服务器。上传到需要进行免密登录的用户的主目录下的.ssh文件夹中,并且重命名为authorized_keys,如:/master/.ssh/authorized_keys。
二、上传公钥
在客户机上输入以下命令将公钥上传到服务器
ssh-copy-id master@ubuntu
- ssh-copy-id - 将公钥发送到远程主机指定账户下
- master - 要进行免密登录的远程主机账户,默认为本地主机当前登录账户
- ubuntu - 远程主机地址
如果修改了密钥的默认存放位置或默认文件名,需要使用-i参数手动指定密钥位置。
上传公钥时公钥与私钥必须位于同一目录下,并且公钥与私钥的文件名必须对应,如:私钥文件名为x,则公钥文件名为x.pub。
输入远程账户密码完成公钥上传
三、登录测试
在客户机上输入以下命令登录远程服务器
ssh master@ubuntu
- ssh - 远程登录
- master - 进行免密登录的远程主机账户,默认为本地主机当前登录账户
- ubuntu - 远程主机地址
连接服务器时,会发现在没有输入密码的情况下成功连接
私钥需要存放到当前登录用户的主目录下的.ssh文件夹中,并且设置文件名为id_rsa,如果私钥存放到其他位置或使用其他文件名,远程登陆时需要使用-i参数指定私钥位置。
如果为私钥设置了密码,远程登陆时需要输入私钥密码。