centos使用 SSH-Key 登录远程服务器vps

1,446次阅读
没有评论

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。如果使用弱密码,也是最容易致使服务器受到攻击威胁的,甚至直接成为“肉鸡”。

ssh 提供两种级别的安全认证:

  1. 基于口令的安全认证
  2. 基于密钥的安全认证

一.基于口令的安全认证,即通常说的root和root密码

centos使用 SSH-Key 登录远程服务器vps
远程主机的 /etc/ssh/sshd_config 中的使用密码登录都是默认

需要知道用户名和密码即可登录,该连接是加密的,但客户端不能确认目标主机是否为“伪造的”,也不能保证口令安全。任何只要知道用户名和密码的人都可以登录远程主机(在没有限制登录IP的情况下)

修改远程主机的 /etc/ssh/sshd_config 为:

PasswordAuthentication yes

重启 sshd 使改动生效:

systemctl restart sshd.service

二. 基于密钥的安全认证

用户持有“公钥/私钥对”,远程服务器持有公钥(public key),本地持有私钥(private key)。

使用公私钥登录时,客户端向服务器发出请求。服务器收到请求之后,先在用户的主目录下找到该用户的公钥,然后对比用户发送过来的公钥。如果一致,服务器用公钥加密“质询”并发送给客户端。客户端收到“质询”后用私钥解密,再发还给服务器。认证结束。

服务器上生成 ssh-key,选加密算法(rsa,dsa等),给秘钥命名(可选):

$ ssh-keygen -t rsa -C "name"

输出类似:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:tDVwRr0qXXXXXXXXXXXXXXXXX8xm8YQ jxcn2

passphrase是证书口令,最少需要5个字符,以加强安全性,避免证书被恶意复制(默认为空)。

会在 ~.ssh 下生成 id_rsa, id_rsa.pub 两个文件,分别是 私钥/公钥。

公钥需保存到远程服务器 ~/.ssh/authorized_keys 里,私钥由客户端本地留存。

要保证 .sshauthorized_keys 都只有用户自己有写权限。否则验证无效:

$ chmod -R 700 ~/.ssh/
$ chmod 600 ~/.ssh/authorized_keys
#写入公钥
cat id_rsa.pub >>authorized_keys

最后需要将私钥保存到本地。可以安装lrzsz,使用命令 sz id_rsa 保存私钥到本地。最好先看下能否使用密钥登录,然后在禁用密码登录。

centos7 ssh key登录 配置具体实践:

$ vi /etc/ssh/sshd_config

# 禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~/.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

# 有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no
#重启ssh服务
service sshd restart

使用xshell登录时

填写用户名 和ssh 端口,并选择public key登录,导入保存的私钥,密码若创建的时候没有填写passphrase,则默认为空。

centos使用 SSH-Key 登录远程服务器vps
正文完
 
评论(没有评论)