Linux之SSH安全,使用密钥对验证
Q:A服务器登录到B服务器,但为了安全起见,不想输入B服务器的用户帐号密码,该如何实现?
A:可以使用密钥对验证,实现在A服务器无需B服务器的用户帐号密码即可登录到B服务器。
登录验证对象:服务器中的本地用户帐号
登录验证方式:
密码验证:核对用户名、密码是否匹配
密钥对验证:核对客户的私钥、服务端公钥是否匹配
# vim /etc/ssh/sshd_config
PasswordAuthentication yes // 密码验证
PubkeyAuthentication yes //密钥对验证
AuthorizedKeysFile .ssh/authorized_keys // 密钥保存地方
# systemctl restart ssh.service
构建密钥对验证的SSH体系:
第一步:创建密钥对(在客户端创建,创建后包含私钥和公钥,形成一个密钥对)
私钥文件:id_rsa
公钥文件:id_rsa.pub
# ssh-keygen -t rsa
// 设置密钥保存位置
// 设置密钥口令
【私钥权限为:600
公钥权限为:644
此加密方式为非对称加密,私钥文件一定不能公开】
第二步:上传公钥文件到服务端
第三步:导入公钥文件
以下命令把第二步和第三步合成一起实现上传并导入:
# ssh-copy-id remote_user_name@remote_ip_address
例子:
导入公钥文件前,使用guest用户切换到user001用户:
guest@debian:~$ ssh user001@192.168.9.119
user001@192.168.9.119's password:
开始上传并导入公钥文件:
使用guest用户上传并导入公钥文件到user001用户,上传并导入成功后,使用guest用户切换到user001用户,无需user001的密码即可登录到user001(如果guest用户创建密钥对时候创建了密码,则需输入密钥口令):
guest@debian:~$ ssh-copy-id user001@192.168.9.119
// 输入user01的密码
// 上传并导入成功,在user001用户的 ~/.ssh 目录下有一个文件 authorized_keys ,即上传并导入后的公钥文件
// 使用guest用户切换到user001,无需user001的密码即可登录
guest@debian:~$ ssh user001@192.168.9.119
Enter passphrase for key '/home/guest/.ssh/id_rsa':