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 key‘s 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