zoukankan      html  css  js  c++  java
  • SSH远程访问与控制,ssh密钥对配置

    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 进行检测

    结束!!!!!

  • 相关阅读:
    优化windows7硬盘操作文件的速度
    Google 开源API汇总
    兼容IE和FF:复制本页地址 收藏本页地址 复制当前页地址和标题
    暂时中断一段时间
    Silverlight C# 游戏开发:绚丽的粒子特效颜色粒子(一)
    任天堂模拟器Silverlight版开发,POPNes Emulator!
    Silverlight C# 游戏开发:资源的处理,图像算法(一)
    Silverlight C# 游戏开发:绚丽的粒子特效粒子效果(二)
    吐血的有道谜题
    Silverlight C# 游戏开发:Flyer09扇动翅膀的蝴蝶
  • 原文地址:https://www.cnblogs.com/elin989898/p/11363149.html
Copyright © 2011-2022 走看看