美文网首页
SSH详解(远程登陆协议)

SSH详解(远程登陆协议)

作者: new_liziang | 来源:发表于2019-01-12 00:52 被阅读0次

    SSH定义:简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

    注意:由于我用的是两台虚拟机,虚拟机没有ip,如果你是真机可以跳过第一步。

    1.首先给两台虚拟机配置ip,真机跳过此步骤

    命令行输入 nm-connetion-editor

    删除当前的条目delete->然后在添加add

    进入iPv4 Settings选项 ->选择Method :manual选项

    点击add->设置ip地址,子网掩码,网关默认可以不用设置

    保存

    查看ifconfig ->成功


    2.ssh的登陆

    我的两台虚拟机的ip分别为

    desktop:172.25.74.174

    server:172.25.74.124

    连接方式:

    现在我们用desktop连接server

    首先我更改一下主机名,便于识别desktop和server,可以不需要看过程,最后的结果是desktop的命令行[root@localhost ~]变成了[root@server ~]#,server的命令行[root@localhost ~]#变成了[root@desktop ~]#。

    修改主机名:

    [root@localhost ~]# hostnamectl set-hostname server       //设置主机名为server

    [root@localhost ~]# hostname              //查看主机名

    server

    ssh的连接:

    1.ssh 目标主机的ip    ##默认以目标主机的root身份登陆

    [root@desktop ~]# ssh 172.25.74.124              //以desktop的身份登陆server

    The authenticity of host '172.25.74.124 (172.25.74.124)' can't be established.

    ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.

    Are you sure you want to continue connecting (yes/no)? yes       //输入yes

    Warning: Permanently added '172.25.74.124' (ECDSA) to the list of known hosts.

    root@172.25.74.124's password:             //输入server端root用户的密码

    Last login: Sun Jan 13 21:18:34 2019 from 172.25.74.250

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

    2.ssh 用户名@目标主机的ip      ##指定目标主机的身份登陆

    下面用desktop登陆server端的普通用户

    [root@server ~]# cat /etc/passwd | grep student            

    student:x:1000:1000:Student User:/home/student:/bin/bash     //首先server端有一个student用户

    [root@desktop ~]# ssh student@172.25.74.124     //以student的身份登陆

    student@172.25.74.124's password:                   //刚刚已识别主机,只需要验证student的密码即可

    [student@server ~]$               //登陆成功


    3.ssh的免密登陆

    方式1:在desktop端生成公钥和私钥,把公钥发给server端,私钥自己保存。就可以免密连接,公钥相当于一把锁,私钥相当于那把锁对应的钥匙,一把锁对应一把钥匙,拥有钥匙的用户可以连接拥有对应锁的主机。

    desktop端:

    [root@desktop ~]# cd /root/.ssh        //进入 /root/.ssh目录,这是保存公钥和私钥的地方

    [root@desktop .ssh]# rm -rf *              //清空

    [root@desktop .ssh]# ssh-keygen         //生成公钥和私钥

    一直按回车...

    [root@desktop .ssh]# ls    

    id_rsa  id_rsa.pub                             //id_rsa 是私钥, id_rsa.pub  是公钥

    [root@desktop .ssh]# ssh-copy-id -i id_rsa.pub root@172.25.74.124           //将公钥发给server端

    [root@desktop .ssh]# ssh 172.25.74.124       //可以免密连接

    Last login: Sun Jan 13 21:58:25 2019 from 172.25.74.174

    [root@server ~]#

    如何实现双向免密?                

    在server端执行和desktop相同的操作。

    方式2:使用server端生成公钥和私钥,把公钥发给自己,把私钥发给desktop。公钥相当于一把锁,私钥相当于那把锁对应的钥匙,一把锁对应一把钥匙,拥有钥匙的用户可以连接拥有对应锁的主机

    server端:

    [root@server ~]# cd /root/.ssh        //进入 /root/.ssh目录,这是保存公钥和私钥的地方

    [root@server .ssh]# rm -rf *                //清空

    [root@server .ssh]# ssh-keygen               //生成公钥和私钥

    一直按回车...

    [root@server .ssh]# ls 

    id_rsa id_rsa.pub               //id_rsa 是私钥, id_rsa.pub  是公钥

    [root@server .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.74.124  //使用这个命令将公钥挂给自己,这条命令是把/root/.ssh/id_rsa.pub公钥,发给ip为172.25.74.124的root用户。

    [root@server .ssh]# scp /root/.ssh/id_rsa root@172.25.74.174:/root/.ssh //将私钥给到desktop端的/root/.ssh/目录下

    desktop端:

    [root@desktop .ssh]# ls

    id_rsa                      //存在server端发来的私钥

    [root@desktop .ssh]# ssh 172.25.74.124          //连接server端

    The authenticity of host '172.25.74.124 (172.25.74.124)' can't be established.

    ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.

    Are you sure you want to continue connecting (yes/no)? yes          //第一次连接需要识别主机

    Warning: Permanently added '172.25.74.124' (ECDSA) to the list of known hosts.

    Last login: Sun Jan 13 21:30:58 2019 from 172.25.74.250

    [root@server ~]# exit     //成功免密连接server端,退出在连

    logout

    Connection to 172.25.74.124 closed.

    [root@desktop .ssh]# ssh 172.25.74.124        //不需要密码直接连接成功

    Last login: Sun Jan 13 21:58:09 2019 from 172.25.74.174

    [root@server ~]#



    4.sshd的安全设定

    ssh服务的主配置文件在/etc/ssh/sshd_config下,可以通过修改此配置文件来达到控制ssh的效果。

    1.控制用户的登陆方式

    [root@server .ssh]# vim /etc/ssh/sshd_config

    78 PasswordAuthentication yes #       //yes:支持密码/密钥登陆。no:不能用密码登陆,只能用密钥登陆

    现在我在server端把PasswordAuthentication 的yes改为no,由于我修改了配置文件,所以要重起服务来加载新配置,重起配置代码来systemctl restart sshd.service。现在测试远程用户的两种登陆方式是否有效。

    [root@desktop .ssh]# rm -rf *         //清空desktop端的密钥

    [root@desktop .ssh]# ls

    [root@desktop .ssh]# ssh 172.25.74.124               //密码登陆

    ...

    Permission denied (publickey,gssapi-keyex,gssapi-with-mic).           //密码登陆失败

    结论:修改后,密码登陆失败,密钥登陆成功。

    2.控制不能以root身份登陆

    48 PermitRootLogin yes #     // 用户是否可以以root身份登陆

    修改server端的 PermitRootLogin yes为no,重起服务,测试两种用户登陆是否成功

    [root@desktop .ssh]# ssh 172.25.74.124                //以root用户的身份登陆

    root@172.25.74.124's password:

    Permission denied, please try again.                   //登录失败

    [root@desktop .ssh]# ssh student@172.25.74.124        //以普通用户的身份登陆

    student@172.25.74.124's password:

    Last login: Sun Jan 13 21:33:32 2019 from 172.25.74.174       //登陆成功

    [student@server ~]$

    3.设置黑白名单

    可以在配置文件的第79行加入以下代码

    Allowusers username(服务端存在的用户并且有锁) ##sshd用户的白名单,只允许该用户登陆,其他用户不可登陆

    Denyusers  username(服务端存在的用户并且有锁)#sshd用户的黑名单,该用户不可登陆,其他用户可以登陆


    5.添加sshd登陆信息

    通过给/etc/motd添加内容,我们可以控制登陆时显示的信息,如下

    [root@desktop .ssh]# ssh root@172.25.74.124

    Last login: Mon Jan 14 04:26:06 2019 from 172.25.74.174

    you are a stupid boy!!!             //手动添加的信息

    ##用户登陆审计

    w #查看正在使用当前系统的用户

    w -f#查看使用来源

    w -i#显示ip

    last #查看使用过并退出的用户信息

    lastb #试图登陆但没有成功的用户

    相关文章

      网友评论

          本文标题:SSH详解(远程登陆协议)

          本文链接:https://www.haomeiwen.com/subject/dizfdqtx.html