SSH详解(远程登陆协议)

2019-01-12  本文已影响0人  new_liziang

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 #试图登陆但没有成功的用户

上一篇下一篇

猜你喜欢

热点阅读