首页 > 编程知识 正文

ssh密钥认证,ssh密钥登录

时间:2023-05-04 16:32:47 阅读:243517 作者:3805

ssh密钥验证 SSH远程管理服务1,定义2,SSH支持的客户端和服务端3,配置文件 SSHD服务验证两种验证方式1.密码验证2.密钥对验证 公钥和私钥的关系1.开启密钥和密码验证2.使用SSH客户端程序3.scp远程复制 sftp(安全ftp) 配置密钥对验证1,在客户端创建密钥对2.查看密钥位置3.查看公钥文本4.将公钥文件上传至服务器并且导入5.最后进行密钥验证登录 TCP Wrapper(访问控制)定义TCP Wrapper保护机制的两种实现方式TCP Wrapper的格式(1)服务程序列表(2)客户端地址列表 TCP wrappers 机制的基本原则:示例

SSH远程管理服务 1,定义

SSH是一种安全通道协议,是用来实现字符界面的远程登陆,远程复制等功能的,我们日常生活可以使用该功能来进行远程操控,省去了很多麻烦。

SSH协议对通信双方的数据进行了加密处理,其中包括用户登陆时输入的用户口令。因此SSH协议具有很好的安全性

2,SSH支持的客户端和服务端 SSH客户端:Putty,Xshall,CRTSSH服务端:OpenSSH 3,配置文件

我们正在使用的centos7系统已经默认安装openssh相关的软件包,并且已经将sshd服务添加为开机自启。

执行“systemctl start sshd”命令即可启动sshd服务

sshd服务默认使用的是TCP的22端口

sshd服务的默认配置文件为/etc/ssh/sshd_config
注:ssh_config和sshd_config都是ssh服务器的配置文件前者是
针对客户端的配置文件,后者则是针对服务器的配置文件

下面是sshd_config的重要配置

Port 22 #监听端口22ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具体IPLoginGraceTime 2m #登陆验证时间为2分钟PermitRootLogin no #禁止root用户登录MaxAuthTries 6 #最大重试次数为6PermitEmptyPasswords no #禁止空密码用户登录UseDNS no #禁止DNS反向解析,以提高服务器的响应速度


示例

#只允许zhaohua,muzi,用户登录,且其中muzi用户仅能够从ip地址为192.168.199.30的主机远程登陆AllowUsers zhaohua muzi@192.168.199.30 #多个用户以空格分离#禁止某些用户登录,用法和Allowusers类似(不要同时使用)Denyusers zhaohua SSHD服务验证 两种验证方式 1.密码验证

最基本的对服务器中本地系统用户的登录名称,密码进行验证。非常简单,但容易被破解。所以我们不推荐如此使用。

2.密钥对验证

要求提供相匹配的密钥信息才能通过验证。通过先在客户端中创建一对密钥文件(公钥,私钥),然后将公钥文件放到服务器中的之的指定位置。远程登陆时,系统将公钥,私钥进行加密,解密关联验证。能增强安全性,并且还可以免交互登录。

公钥和私钥的关系 公钥和私钥是成双成对的,这两个密钥互不相同,可以互相加密和解密。不能根据一个密钥来推算出另一个密钥公钥对外公开,私钥只有私钥的持有人才知道

当我们密码验证和密钥对验证都开启时,优先使用密钥对验证。当然,我们也可以根据实际情况来进行设置验证方式。

1.开启密钥和密码验证 PasswordAuthentication yes #启用密码验证PubkeyAuthentication yes #启用密钥对验证AuthorizedKeysFile .ssh/authorized_keys #指定公钥库文件

2.使用SSH客户端程序

1,ssh远程登陆

当用户第一次登陆SSH服务器时,必须接受服务器发来的的ECDSA密钥(根据提示输入“yes”)然后再输入密码,验证成功就可以登录了。
命令

ssh 用户@IP地址例: ssh root@192.168.199.20-p :指定非默认的端口号,缺省时默认使用22端口

3.scp远程复制 下行复制
命令 scp root@192.168.199.20:/etc/locale.conf /root/sshfuzhi.txt scp -r root@192.168.199.20:/etc/lvm /root/sshfuzhi.txt #复制目录时需加-r,表示递归复制



上行复制
命令 scp -r /etc/ssh/ root@192.168.199.20:/opt

sftp(安全ftp)

因为ssh使用了加密和解密技术,所以安全性比普通的FTP要高,但是传输速率要更低。
命令

sftp root@192.168.199.20 #登录到root@192.168.199.20sftp> get [-r] 文件或目录 文件保存位置(可缺省,缺省时代表复制到当前目录) #当要传输目录时,需要加入-r代表递归复制 ,将远程主机的文件下载到我们的主机上sftp>put [-r] #将我们本机的文件,上传到远程主机上

首先,我们先要登录到远程主机上面;

登陆后,我们可以利用ls查看对方的目录,或者直接进行传输,将对方的an文件传输到我们的opt目录。


或者使用put指令,将我们主机上面的文件传输到对方主机

上传之后我们可以进行查询,看看是否传输成功。

或者我们可以指定接收目录,将我们的文件传输到该目录

配置密钥对验证 1,在客户端创建密钥对 通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA,ECDSA或DSA等(ssh-keygen命令的“-t”选项用于指定算法类型)

可以先建立一个admin用户

useradd adminecho "123123" | passwd --stdin adminsu -admin

然后再进行创建密钥对

ssh-keygen -t ecdsaGenerating public/private ecdsa key pair.Enter file in which to save the key (/home/admin/.ssh/id_ecdsa): #指定私钥位置,可以直接回车代表使用默认位置Created directory '/home/admin/.ssh'. #生成的私钥,存放在宿主目录中的隐藏目录.ssh/下Enter passphrase (empty for no passphrase): #设置私钥的密码Enter same passphrase again: #确认输入

2.查看密钥位置

在配置完密钥对之后,我们可以进行查看密钥对来确认,密钥对存放于.ssh中,通过以下命令可以进行查看

ls -l ~/.ssh/id_ecdsa*-rw------- 1 admin admin 314 12月 9 15:10 /home/admin/.ssh/id_ecdsa-rw-r--r-- 1 admin admin 189 12月 9 15:10 /home/admin/.ssh/id_ecdsa.pub

3.查看公钥文本 cat authorized_keys #这时已经在.ssh/目录下了,所以使用相对路径

4.将公钥文件上传至服务器并且导入

后面我们就应该将公钥导入服务器中,让服务器与客户端进行配对

ssh-copy-id -i id_ecdsa.pub zhao@192.168.199.30 #可以直接在服务器的/home/zhao/.ssh/目录中导入公钥文本

5.最后进行密钥验证登录 ssh zhao@192.168.199.30 #使用密钥对验证Enter passphrase for key '/home/admin/.ssh/id_ecdsa': #输入私钥的密码


TCP Wrapper(访问控制) 定义 将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测的过程,外来的连接请求必须先通过这层安全检测,获得许可后才能真正访问对应的服务程序。对于大多是的Linux发行版来说,TCP Wrappers 是默认提供的共嗯那个。 TCP Wrapper保护机制的两种实现方式 1,直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序2,由其他网络服务程序调用libwrap.so.*链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。 TCP Wrapper的格式

<服务程序列表>:<客户端地址列表>

(1)服务程序列表

ALL:代表所有的服务。
单个服务程序:如“vsftpd"。
多个服务程序组成的列表:如"vsftpd,sshd"。

(2)客户端地址列表

ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符“*”和“?”,前者代表任意长度字符,后者仅代表一个字符
网段地址,如“192.168.199.”或者192.168.199.0/255.255.255.0
区域地址,如".benet.com”匹配benet.com域中的所有主机。

TCP wrappers 机制的基本原则:

基本策略

首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。

常用情况

"允许所有,拒绝个别”
只需在/etc/ hosts.deny文件中添加相应的拒绝策略”允许个别,拒绝所有”
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置""ALL:ALL"的拒绝策略。 示例

比如我们在192.168.199.0网段中,我们只想让192.168.199.20访问192.168.199.30,需要做如下设置

先在/etc/hosts.allow设置只允许20IP通过

然后再在/etc/ hosts.deny中不允许所有网段通过

之后我们就发现10IP已经无法进入了,但20IP还是可以进入。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。