这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战
秘钥登录步骤
ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式。其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法。
使用密钥登录分为3步:
- 生成密钥(公钥与私钥);
- 放置公钥到服务器
~/.ssh/authorized_key文件中; - 配置ssh客户端使用密钥登录。
生成密钥公钥与私钥
linux下输入ssh-keygen -t rsa,输入密钥的名称,如:id和私钥加密密码,既完成密钥生成。生成的两个文件中,“id”为私钥,“id.pub”为公钥。
上传公钥到服务器
使用到Xshell登录到服务器,进入到~/.ssh/目录,运行rz命令(如果没有rz命令,运行apt install lrzsz安装),将公钥文件(id.pub)发送到服务器,然后运行如下命令,将公钥导入到authorized_keys文件:
[root@localhost ~]# cd ~/.ssh/
[root@localhost .ssh]# rz
rz waiting to receive.
[root@localhost .ssh]# cat id.pub >> authorized_keys
[root@localhost .ssh]# chmod 600 authorized_keys
配置Xshell使用密钥认证方式登录到服务器
打开Xshell,点击“新建”按钮,在“连接”栏目中,输入刚刚配置好公钥的IP地址和端口。
点击左侧的“用户身份认证”,切换到认证栏目,在“方法”选择“Public Key”认证,输入用户名(公钥所在的用户目录),在“用户秘钥”中选择上一步生成的私钥,“密码”中输入私钥的加密密码。
点击确定,ssh免密码登录配置完成
服务器的配置
查看ssh的配置文件
sudo vim /etc/ssh/sshd_config
要确保下面这三个项目前面没有#
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
#为了安全性,可以修改SSH端口
Port 222
#禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no
#有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no
重启一下ssh服务,这样ssh配置才能生效
sudo service ssh restart