这里的密钥对是
Public key
,具体请参考 公开密钥加密
将密钥保存到远程服务器
1.如果是通过ssh-keygen生成的密钥对,那么我们需要将id_rsa.pub文件放置到你要进行远程登陆的用户主目录下,比如这里的用户名为centos,主目录为/home/centos,那么我们需要将id_rsa.pub公钥放置到/home/centos/.ssh目录下,然后执行以下操作:
使用命令
ssh-keygen -t rsa
接下来会提示让你输入一个路径来保存密钥对,默认在 ~/.ssh/id_rsa
下面生成 id_rsa
(私钥)和 id_rsa.pub
(公钥),如果没什么特殊需求就直接默认就好。
- 将
id_rsa.pub
文件,重命名为 authorized_keys; - 执行chmod 600 ./authorized_keys 命令,修改权限;
- 执行命令 sudo vi /etc/ssh/sshd_config进行配置,将RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes ,保存;
- 重启sshd服务,Debian/Ubuntu执行sudo /etc/init.d/ssh restart ;CentOS执行:sudo /etc/init.d/sshd restart。
注:centos7重启服务方式与以前不同,请执行systemctl restart sshd.service
2.如果是通过xshell方式生成的密钥对,那么将xshell生成的id_rsa.pub文件放置到用户的主目录下的.ssh目录(比如/home/centos/.ssh
),接下来执行的操作跟上述操作[1 ] 是一样的。
然后提示你输入密码(即本机使用 SSH
连接时的密码 #和服务器密码无关),也是直接回车默认为空即可。
将公钥上传到服务器上
这里以使用 SCP
为例,上传公钥 id_rsa.pub
到服务器上
scp ~/.ssh/id_rsa.pub [email protected]:~
将公钥追加到服务器的认证密钥中
将上传到服务器上的 id_rsa.pub
公钥追加到 authorized_keys
文件中,命令是
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
修改服务器的配置以启用公钥认证
修改 vi /etc/ssh/sshd_config
配置文件(如果有的话就进行修改,没有的话就添加进来)
RSAAuthentication yes # 启用 RSA 认证(默认是注释掉的,将注释去掉,如果不是 yes,改为 yes)
PubkeyAuthentication yes # 启用公钥认证(默认是注释掉的,将注释去掉,如果不是 yes,改为 yes)
PasswordAuthentication no # 禁止密码认证 (改为 no, 默认为 yes 是用密码认证)
StrictModes no # 修改为 no, 默认为 yes. 如果不修改用 key 登陆是出现 server refused our key(如果 StrictModes 为 yes 必需保证存放公钥的文件夹的拥有与登陆用户名是相同的.“StrictModes” 设置 ssh 在接收登录请求之前是否检查用户家目录和 rhosts 文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。)
重启 SSH
服务
service sshd restart
# 或者
/etc/init.d/ssh restart
最后验证一下
连接服务器,这里以 SSH
客户端为例
ssh [email protected]
然后,就直接连上了,不需要输入密码了呢 O(≧▽≦)O