免密登录远程服务器
通常使用ssh
、scp
等命令登录远程服务器需要用户名和密码,使用密钥的方式可以避免这种复杂的方式,直接登录远程服务器。
密钥认证原理
假设 当前服务器A
需要登录登录 远程服务器B
首先在A
服务器生成公钥和私钥,将公钥上传至远程服务器B
中,在远程服务器建立连接通信时,远程服务器会首先验证服务器上是否包含请求服务器的公钥,若不包含则需要远程登录的用户输入密码。
生成公钥和私钥
在生成之前,请检查本服务器是否已经生成过密钥对:
- 在
windows
中的用户根目录下检查.ssh
文件夹,检查是否有密钥文件; - 在
linux
服务器中~/.ssh
检查是否存在密钥文件。
若不存在,按以下方式进行生成:
生成密钥:ssh-keygen -t rsa
,该命令产生三个交互:
- 第一个交互是文件名,需要则输入文件名;
- 第二个和第三个是密码与密码确认,之后使用公钥时需要输入密码确认,一般不设置
回车完成后会产生两个文件,私钥:id_rsa
,公钥:id_rsa.pub
将公钥保存至服务器
上传公钥到远程服务器,
scp ~/.ssh/id_rsa.pub root@10.112.1.1:~/
,即将公钥存放在:~/id_rsa.pub
将公钥内容添加到
authorized_keys
文件中:cat ~/id_rsa.pub >> ~./.ssh/authorized_keys
- 或者使用
ssh-copy-id
命令:ssh-copy-id -i ~/.ssh/id_rsa.pub <服务器用户名>@<服务器地址>
,该命令会将公钥内容添加到远程服务器的authorized_keys
中,并给予远程服务器用户目录适当的权限
之后即可使用以下方式直接登录远程服务器:
ssh <服务器用户名>@<服务器地址>