ECS服务器配置密钥登录

一、介绍

  SSH(22端口)是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。SSH服务支持安全认证机制,就是密钥登录,这种方式是比较安全的登入方式。本文将实际操作在服务器中创建新用户,同时使用密钥进行登录(免密码)。

  客户端使用iterm2 和 FinalShell进行远程连接,服务器系统为CentOS7。

二、步骤简介

  1、购买阿里ECS服务器,配置相关安全组,设置root密码等(这些过程省略介绍)。

  2、在服务器上创建其他用户。

  3、使用相应用户登录服务器,并创建密钥对。

  4、在服务器安装公钥,同时,将创建好的私钥,下载到本地保存。

  5、设置服务器ssh的配置文件。

  6、在本地的各类终端中加载私钥,实现远程(免密码)登录。

  注:如果已经从管理员处获得了密钥,则直接进行第6步。

三、详细步骤说明

  1、用户操作

  (1) 创建用户 ,/home 目录下会自动生成相应的用户文件夹

1 [[email protected]_server ~]# adduser new_user
2 [[email protected]_server ~]# passwd new_user
3 更改用户 new_user 的密码 。
4 新的 密码:
5 重新输入新的 密码:
6 passwd:所有的身份验证令牌已经成功更新。
7 [[email protected]_server ~]#

  (2)查看、删除用户

    <1> 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd

    <2> 查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

    <3> 用户列表文件:/etc/passwd 用户组列表文件:/etc/group

    <4> 查看登录用户:who    查看某一用户:w 用户名 

    <5> 查看用户登录历史记录:last

    <6> 删除用户:userdel -rf name

  (3)为用户分配root权限 (可选)

[[email protected]_server ~]# vim /etc/sudoers

或者,root用户下 直接输入命令 visudo 也即可修改
[[email protected]_server ~]# visudo

    找到该行:

##Allow root to run any commands anywhere
root     ALL=(ALL)     ALL

    在下面添加:

1 ## Allow root to run any commands anywhere
2 root    ALL=(ALL)       ALL
3 new_user ALL=(ALL)       ALL 

  2、生成密钥

  (1)确认服务器SSH服务

    <1> 检查ssh的安装 :service sshd status 或者 systemctl status sshd

    <2> 如果提示错误,则进行安装:yum install sshd 或者 yum install openssh-server

    <3> 启动:service sshd start 或者 systemctl start sshd

    <4> 重启:service sshd restart 或者 systemctl restart sshd

  (2)切换new_user登录,生成专属密钥

 1 [[email protected]_server /]$ ssh-keygen -t rsa
 2 Generating public/private rsa key pair.
 3 Enter file in which to save the key (/home/new_user/.ssh/id_rsa):
 4 Created directory /home/new_user/.ssh.
 5 Enter passphrase (empty for no passphrase):
 6 Enter same passphrase again:
 7 Your identification has been saved in /home/new_user/.ssh/id_rsa.
 8 Your public key has been saved in /home/new_user/.ssh/id_rsa.pub.
 9 The key fingerprint is:
10 SHA256:0KrowSHBBZ16tHjaQhr+2bcbEyqonlFvkjHxjrMfKCI [email protected]_server
11 The keys randomart image is:
12 +---[RSA 2048]----+
13 | .o..            |
14 |. .+   .         |
15 |..+.. . .        |
16 |.= +o  o         |
17 |=.*+ ...S        |
18 |.*o+O.. .        |
19 |E+*B+* o         |
20 |+.++*...o        |
21 |oo.....oo        |
22 +----[SHA256]-----+
23 [[email protected]_server /]$

  (3)上文注解

    ssh-keygen -t rsa 命令后一路回车即可:

    <1> Enter file in which to save the key (/home/new_user/.ssh/id_rsa):
      该命令提示的意思是:让我们定义私钥的存放路径,默认存在的路径是/home/new_user/.ssh/id_rsa (如果是root账号,路径在/root/.ssh/id_rsa)

    <2> Enter passphrase (empty for no passphrase):
      该命令提示的意思是:定义私钥的密码,一般为了免密默认的留空,直接的回车

    <3> Enter same passphrase again:
      该命令提示的意思是:确认密码设置

    经过上面三次回车后,最后在/home/new_user/.ssh/id_rsa下面生成了公钥和私钥


  (4)查看生成的密钥(.pub为公钥)

1 [[email protected]_server /]$ cd /home/new_user/.ssh
2 [[email protected]_server .ssh]$ ll
3 总用量 8
4 -rw------- 1 new_user new_user 1675 5月  21 13:06 id_rsa
5 -rw-r--r-- 1 new_user new_user  404 5月  21 13:06 id_rsa.pub
6 [[email protected]_server .ssh]$

 3、服务器上安装公钥

  注意:使用ssh-keygen -t rsa方式生成相关密匙信息,此时默认的会有对应的:/home/new_user/.ssh/这个目录存在,如果没有的话(使用其他ssh工具生成密钥的时候)就需要手动创建此目录。

  (1)安装公钥:主要是把 id_rsa.pub 内容复制到 /home/new_user/.ssh/authorized_keys

1 [[email protected]_server ~]$ cd /home/new_user/.ssh
2 [[email protected]_server .ssh]$ cat id_rsa.pub >> authorized_keys
3 [[email protected]_server .ssh]$ chmod 600 authorized_keys  (仅用户自身有读写权限)
4 [[email protected]_server .ssh]$ chmod 700 /home/new_user/.ssh  (仅用户自身有读写权限)
5 [[email protected]_server .ssh]$

  (2)查看安装

1 [[email protected]_server .ssh]$ ll
2 总用量 12
3 -rw------- 1 new_user new_user  404 5月  21 13:29 authorized_keys
4 -rw------- 1 new_user new_user 1675 5月  21 13:06 id_rsa
5 -rw-r--r-- 1 new_user new_user  404 5月  21 13:06 id_rsa.pub
6 [[email protected]_server .ssh]$

 

 4、下载私钥到本地,后面将使用此密钥进行登录(可以将id_rsa重命名为 new_user_ECS.pem,方便管理和区分)

  (1)使用scp命令从远程拷贝到本地

[[email protected]_server /]$ scp [email protected]39.xx.xx.xx:/home/new_user/.ssh/id_rsa /User/Cleven/Desktop

  (2)客户端使用FTP软件(FileZilla)

  5、在服务器上配置SSH

  (1)编辑配置文件。注意,是sshd_config(服务端配置文件) ,不是ssh_config(客户端配置文件)

[[email protected]_server ~]# vim  /etc/ssh/sshd_config

  (2)配置内容(几个关键处)

#root用户能否通过 SSH 登录,默认为yes
 PermitRootLogin yes 
  
#完成全部设置并以密钥方式登录成功后,可以禁用密码登录。为了安全,建议禁用,但是注意实在密钥登录可行之后禁用
 PasswordAuthentication yes 
 
#默认为yes,是否让 sshd 去检查用户家目录或相关档案的权限数据。如果设置成yes必需保证存放公钥的文件夹的拥有者与登陆用户名是相同的。
#这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入(设置成no可登录)
#这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。
 StrictModes no
  
#是否允许密钥登录,仅针对SSH第一代通信协议
#在CentOS7.4中被废除了,CentOS7开始预设使用第二代通讯协议
#第二代SSH通讯协议的密钥验证选项是
PubkeyAuthentication
RSAAuthentication yes
#允许公钥认证(密钥登录),自制的公钥数据就放置于用户家目录下的.ssh/authorized_keys 内
#替代了第一代协议中的
RSAAuthentication
PubkeyAuthentication yes
AuthorizedKeysFile
~/.ssh/authorized_keys

 6、本地使用密钥完成登录 ,如出现异常,可使用 ssh -v检查

  (1)iterm2

    <1> 配置描述文件

    

    <2> 本地添加密钥:第4步中下载到本地的密钥

?  / ssh-add -k /Users/cleven/Desktop/new_user_ECS.pem

    <3> 开启登录

    

  (2)FinalShell