我们常常需要远程登录我们的linux服务器
从客户端来看,SSH提供两种级别的安全验证
- 第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。 - 第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。
秘钥创建流程
- 创建一个用于远程登录的用户(不建议使用root直接登录)
# 创建一个用户userdemo
useradd userdemo
- 制作密钥对
# 我们要使用userdemo进行远程登录,需要为userdemo这个用户制作秘钥
# 切换用户
su userdemo
# 建立密钥对
ssh-keygen
# 一路回车,秘钥对就建立好了,当然中间也可以输入秘钥锁码,这样你的私钥需要配合一个密码才能使用
- 在服务器上安装公钥
# 安装公钥
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
# 设置文件权限,否则可能无法连接成功
chmod 600 authorized_keys
chmod 700 ~/.ssh
- 设置 SSH,打开密钥登录功能
# 编辑文件sshd_config
vi /etc/ssh/sshd_config
# 打开秘钥登录
RSAAuthentication yes
PubkeyAuthentication yes
# 是否允许root用户登录,可以先开启,等以秘钥测试登录成功后,建议关闭
PermitRootLogin yes
# 是否允许以口令方式登录,一样,先开启,等秘钥登录成功后,建议关闭
PasswordAuthentication no
# 重启ssh服务,使配置生效
service sshd restart
- 下载私钥,使用秘钥方式远程连接
# 保存私钥
sz ~/.ssh/id_rsa
# 使用xshell等客户端使用秘钥方式登录
# 验证方式选择PublicKey, 秘钥选择上面保存的私钥即可连接