SSH远程访问与控制,ssh密钥对配置

余生长醉 提交于 2019-11-27 13:50:09

1、加快与X-shell的连接

请参考https://www.cnblogs.com/elin989898/p/11361866.html

2、用户登录控制

sshd服务默认允许root用户登录,但是在Internet中使用是非常不安全的。普遍的做法如下:先以普通用户远程登入,进入安全shell环境后,根据实际需要使用su命令切换为root 用户

 [root@localhost ~]# vi /etc/ssh/sshd_config

 

 

[root@localhost ~]# systemctl reload sshd 

[root@localhost ~]# useradd jll          创建用户

 

[root@localhost ~]# passwd -d jll             //清空密码

测试空密码用户是否能够登录。

 实验现象:

(1)超过系统设置的登陆时间,连接对话会直接断开

(2)连续输入3次错误密码时连接会话会直接断开

(3)通过root用户密码时反复提示输入密码

(4)测试用户空密码时不能登录系统的

3、OpenSSH 服务访问控制

AllowUsers   仅允许用户登录

DenyUsers  仅禁止用户登录

(1)AllowUsers   不要与 DenyUsers 同时使用

(2)当服务器在Internet时,控制包含的ip地址时是公司公网地址

 

 

 

4、登录验证方式

SSH服务支持两种验证方式

~密码验证

~密钥对验证

可以设置只使用其中一种方式,也可以两种方式都启用

密码验证:对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简单,但从客户端角度来看,正在连接的服务器有可能被假冒;从服务器角度来看,当遭遇穷举(暴力破解)攻击时防御能力比较弱。

密钥对验证:要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥。私钥)然后将公钥文件放到服务器中指定位置,远程登录时,系统将使用公钥私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在shell中被广泛使用。 

       当密码验证密钥对验证都启用时, 服务器将优先使用密钥对验证。对于安全性要求的服务器,建议将密码验证方式禁用只允许启用密钥对验证方式:若没有特殊要求,则两种方式都可启用。

 

[root@localhost ~]# vi /etc/ssh/sshd_config

64 PasswordAuthentication yes    //启用密码验证

47 AuthorizedKeysFile      .ssh/authorized_keys   //指定公钥库文件(用于保存多个客户端上传的公钥文本)

43 PubkeyAuthentication yes   //启用密钥对验证 (#去不去没关系,默认是开的)

[root@localhost ~]# systemctl reload sshd   //重启服务

 5、使用SSH客户端程序

openssh 客户端由openssh-clients软件包提供,默认已安装。其中包括(ssh远程登录命令、scp远程复制命令、sftp远程文件传输命令等)sftp

[root@localhost ~]# rpm -q openssh-clients
openssh-clients-7.4p1-16.el7.x86_64

5.1命令程序:

(1) ssh命令(远程安全登录)

 格式: ssh user@host    (若客户机登录用户与主机用户名相同,可省去user@)注意:涉及到用户权限归属的文件一定指定用户名在进行上传。)

格式: ssh user@host command

端口选项 :  -p 22

案例1:切换另一个操作系统,并创建文件,然后到另一台主机查看是否创建。

[root@localhost ~]# ssh root@192.168.116.66 touch /tmp/ddd.txt
The authenticity of host '192.168.116.66 (192.168.116.66)' can't be established.
ECDSA key fingerprint is SHA256:UT/IZdaaQQzRkB/4C8NNxwBKG88Xj7OW/A0BfYi0qyQ.
ECDSA key fingerprint is MD5:1c:ba:de:c1:ec:8f:08:50:14:98:79:f4:e8:5c:56:b9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.116.66' (ECDSA) to the list of known hosts.
root@192.168.116.66's password:

案例2:将本机的文件复制到另一主机中。然后去对方主机查看 

格式 :scp 源文件  目标位置 (两个主机可以互相传送)

[root@localhost ~]# scp 2.txt root@192.168.116.66:/22.txt
root@192.168.116.66's password:

案例3 :切换到另一个主机

[root@localhost ~]# ssh root@192.168.116.66

(2) scp命令

通过scp 命令可以利用SSH安全连接和远程主机相互复制文件。 使用scp命令时,除了必须指定复制源。目标以外还应指定目标主机地址、登录用户、执行后根据提示输入验证密码即可。

格式:scp [-r] user@host:file1 file2     //将另一台主机的文件复制到本机上

           scp [-r] file1  user@host:file2   //将文件复制到另一台主机上   -r 表示递归复制

特别注意的是:用户名代表了文件的所属权限问题

(3) rz -E 命令表示文件的上传和下载

(4)sftp 命令(安全FTP上传下载)

通过sftp命令可以利用SSH安全连接与远程主机上传,下载文件,采用了与FTP类似的登录过程和交互式环境,以便目录资源管理

格式:sftp user@host

案例1  在68主机上实现对66主机文件的上传与下载

68主机:

[root@localhost ~]# sftp root@192.168.116.66
root@192.168.116.66's password:
Connected to 192.168.116.66.
sftp> put 2.txt
Uploading 2.txt to /root/2.txt
2.txt                               100%    0     0.0KB/s   00:00   
sftp> ls
2.txt                  anaconda-ks.cfg        initial-setup-ks.cfg  
下载                 公共                 图片                
文档                 桌面                 模板                
视频                 音乐                
sftp> ls
1.txt                  2.txt                  anaconda-ks.cfg       
initial-setup-ks.cfg   下载                 公共                
图片                 文档                 桌面                
模板                 视频                 音乐                
sftp> get 1.txt
Fetching /root/1.txt to 1.txt
sftp> quit
[root@localhost ~]# ls
1.txt  2.txt  anaconda-ks.cfg

66主机

[root@localhost ~]# ls
2.txt            initial-setup-ks.cfg  模板  图片  下载  桌面
anaconda-ks.cfg  公共                  视频  文档  音乐
[root@localhost ~]# touch 1.txt

5.2  常见的远程访问工具:  Xshell    SecureCRT   Putty   Smanager (远程图形化界面)等

6、构建密钥对验证的SSH体系

密钥对验证整个过程包括四步:

a: 首先要在SSH客户端以root用户身份创建密钥对

b: 客户端将创建的公钥文件上传至SSH服务端

c: 服务端将公钥信息导入用户root的公钥数据库文件中

d:  客户端以root用户身份连接服务器端root用户测试

6.1在客户端创建密钥对

在Linux客户端中通过ssh-keygen命令工具为当前登录用户创建密钥对文件,可用的加密算法:ECDSA、RSA、DSA ,通过  - t  选项指定

案例:将server与client两台主机之间进行密钥对连接  这里介绍两种方法分别将主机当作服务端和客户端,实现两台主机之间的互相免密登录

方法一:

(1)首先在client主机中执行以下操作,其中  root 身份 地址为192.168.116.66  root密码123456

[root@1111 ~]# ssh-keygen -t rsa     //创建密钥对   rsa为算法

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:lXdbtLwpUd1jgh7/y+Rn2qUaNzVt9rzHqMoouL2+Dmo root@1111
The key's randomart image is:
+---[RSA 2048]----+
|            .  .+|
|           + .o++|
|          + +.+oo|
|         . o o.o+|
|        S    .o+=|
|              .Bo|
|    ..      . *o=|
|  E..o.  o   o.BB|
| .. .+*+. o.ooo++|
+----[SHA256]-----+

[root@localhost ~]# ls .ssh    //查看 .ssh 文件是否有两个文件   id_rsa 是私钥文件   id_rsa.pub 是公钥文件
id_rsa  id_rsa.pub

[root@localhost ~]# scp .ssh/id_rsa.pub root@192.168.116.68:/tmp      //将公钥复制到 服务器 的 192.168.116.68 的一个文件中
The authenticity of host '192.168.116.68 (192.168.116.68)' can't be established.
ECDSA key fingerprint is SHA256:nOug2TzzVJZysB+hBvgEnxvaOESr6XmI28kFoJIbfVc.
ECDSA key fingerprint is MD5:80:57:a3:0f:10:58:25:d9:94:4b:e8:ef:31:94:c8:9f.
Are you sure you want to continue connecting (yes/no)? yes  
Warning: Permanently added '192.168.116.68' (ECDSA) to the list of known hosts.
root@192.168.116.68's password:   //输入IP为192.168.116.68 主机root身份的密码
id_rsa.pub                          100%  408   266.2KB/s   00:00 

 

 

 (2) 在server主机中操作 root身份,密码123456 IP地址192.168.116.68

[root@client ~]# ls /tmp    //查看公钥是否存在
id_rsa.pub
ks-script-YL7_Bo
systemd-private-6723e85d6a6a42d5bb417f690b0e993e-chronyd.service-E1cRvH
systemd-private-c6d528254e314241bb2b1dfb5ab308bc-chronyd.service-EHk4EK
vmware-root_5915-1991519414
vmware-root_6042-692291496
yum.log
[root@client ~]# mkdir .ssh    //系统中可能没有 . ssh文件 可创建一个 

[root@client ~]# ll /tmp/id_rsa.pub    //查看公钥文件的权限   
-rw-r--r-- 1 root root 408 8月  16 20:07 /tmp/id_rsa.pub
[root@client ~]# chmod 700 /tmp/id_rsa.pub    //修改权限为700   可执行文件 
[root@client ~]# cat /tmp/id_rsa.pub >> .ssh/authorized_keys   //将公钥添加到 .ssh 中的authorized_keys(数据库)文件中, 可用" >> "符号,表示追加 , “>" 表示覆盖
[root@client ~]# cat .ssh/authorized_keys    //查看公钥是否存在
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIfAvBJOniBlxKh7/4xYEvtgDl+uN0AkILFwMg4hlRqyx2Xp9DRFRlQXt1FeMVn1kM7oZpw330Nc/Nng5FlinPmQBWOKnEV0yNPxyrNsmwGp6bgq2ui0tFPZd1oeUoQYlkuhdQPLQcV0/v5a+NvcNxDTNiZauuZinvNUNrqx1lYHIy9/XIWPoqFPcfkk4z+zGXf1G0V+lKLajyxto+YeAtLWZi7NfWqadnmnZmPX6r8wHBfx9FvTcHQmOVlpJ2hK/miqDNrTQYS/Ac9myrD0oPrsxIAldNDR6Og4Ww/uCNKJPBniEFGT/bJtXtqLH0M/K/if2J2H0dHPE+wSYC2vkd root@localhost.localdomain   //看这个地方文件的名字

(3) 在client 操作

[root@localhost ~]# ssh root@192.168.116.68     //在客户端登录服务器端
Last login: Fri Aug 16 20:05:16 2019 from 192.168.116.1

[root@client ~]#    //登陆成功

这里可以查看以下 IP   使用ip a 命令

方法二

 (1)在client 主机中 root身份  IP地址为192.168.116.68  密码123456

[root@client ~]# ssh-keygen -t rsa        //创建公钥私钥  rsa算法     (以下操作同上,不做讲解)
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:qjK/9ThKB7qDHn03QXw32U9aJT19HUmddZ2A2uWWfhM root@client
The key's randomart image is:
+---[RSA 2048]----+
|            ..++#|
|      .    .o. *X|
|       o .o+o..oo|
|      . .....+=E |
|    .  .S   o. ..|
|  .. . ..    . o |
| o....+o      . .|
|. =o.+oo.        |
|...==o...        |
+----[SHA256]-----+
[root@client ~]# ls .ssh
authorized_keys  id_rsa  id_rsa.pub
[root@client ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.116.66    // 使用ssh-copy-id -i 命令直接copy到目标主机的   .ssh/authorized_keys文件中
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.116.66 (192.168.116.66)' can't be established.
ECDSA key fingerprint is SHA256:UT/IZdaaQQzRkB/4C8NNxwBKG88Xj7OW/A0BfYi0qyQ.
ECDSA key fingerprint is MD5:1c:ba:de:c1:ec:8f:08:50:14:98:79:f4:e8:5c:56:b9.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.116.66's password:     //输入对方主机密码
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@192.168.116.66'"
and check to make sure that only the key(s) you wanted were added.

(2)在sever root身份 IP192.168.116.66 密码123456

[root@client ~]# ll .ssh/    //查看权限
总用量 16
-rw-r--r-- 1 root root  408 8月  16 20:12 authorized_keys
-rw------- 1 root root 1679 8月  16 20:21 id_rsa
-rw-r--r-- 1 root root  393 8月  16 20:21 id_rsa.pub
-rw-r--r-- 1 root root  176 8月  16 20:23 known_hosts
[root@client ~]# cat .ssh/authorized_keys    //查看文件是否存在 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIfAvBJOniBlxKh7/4xYEvtgDl+uN0AkILFwMg4hlRqyx2Xp9DRFRlQXt1FeMVn1kM7oZpw330Nc/Nng5FlinPmQBWOKnEV0yNPxyrNsmwGp6bgq2ui0tFPZd1oeUoQYlkuhdQPLQcV0/v5a+NvcNxDTNiZauuZinvNUNrqx1lYHIy9/XIWPoqFPcfkk4z+zGXf1G0V+lKLajyxto+YeAtLWZi7NfWqadnmnZmPX6r8wHBfx9FvTcHQmOVlpJ2hK/miqDNrTQYS/Ac9myrD0oPrsxIAldNDR6Og4Ww/uCNKJPBniEFGT/bJtXtqLH0M/K/if2J2H0dHPE+wSYC2vkd root@localhost.localdomain

(3) 在client端登录测试

[root@client ~]# ssh root@192.168.116.66      //进行切换 
Last login: Fri Aug 16 20:05:05 2019 from 192.168.116.1 

[root@localhost ~]#   //切换成功

//可用 ip a 进行检测

 

 

 

结束!!!!!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!