ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

安全和加密_SSH

2021-04-11 20:52:21  阅读:180  来源: 互联网

标签:公钥 加密 服务端 安全 SSH key root ssh 客户端


ssh 安全的远程登录
22/tcp
软件实现
openssh:centos默认安装
dropbear
ssh协议版本
v1:基于crc-32做MAC 不安全;man-in-middle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA实现身份认证
相关包
openssh
openssh-clients
openssh-server
工具
基于C/S结构
linux client:ssh scp sftp slogin
windows client:xshell putty securecrt sshsecureshellclient
server :sshd
客户端
配置文件
[root @ centos7 CA]#vim  /etc/ssh/ssh_config
 StrictHostKeyChecking  no 首次登录不显示检查提示
格式:ssh[user@]   host [COMMAND]
          ssh[-l user] host [COMMAND]
[root @ centos7 ~]#ssh root@192.168.47.103 ls /data
[root @ centos7 ~]#ssh -l root 192.168.47.103 ls /data

常见选项
-p port:远程服务器监听的端口
-b:指定连接的源IP
-v:调试模式
-C:压缩方式
-X:支持x11转发
-t:强制伪tty分配

ssh -t remoteserver1 ssh -t remoteserver2 ssh remoteserver3
用户远程连接ssh服务器,会复制shh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机的~./ssh/know_hosts中,下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接

image

1)客户端发起链接请求服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
2)客户端生成密钥对客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密客户端发送加密后的值到服务端,服务端用私钥解密,得到Res服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
3)最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

image

用户登录认证方式:
1)基于password
2)基于key

image

1.客户端发起ssh请求,服务器会把自己的公钥发送给用户
2.用户会根据服务器发来的公钥对服务器用户的密码进行加密
3.加密后的信息回传给服务器,服务器用自己的私钥解密,用得到的密码与shadow文件中密码进行比对,如果密码正确,则用户登录成功

image

1.首先在客户端生成一对密钥(ssh-keygen)
2.并将客户端的公钥ssh-copy-id 拷贝到服务端
3. 当客户端再次发送一个连接请求,包括ip、用户名
4.服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:gesila
5.服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6.得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7.服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

基于key验证方式

1)客户端生成密钥对
ssh-keygen [-t [rsa|dsa]] [-P ''] [-f "~/.ssh/id_rsa"]
    -P  对私钥加密的口令,可以不指定
    -f  指定文件 默认家目录的.ssh下,隐藏文件
如果在生成密钥对的时候-P 加入了密码,ssh连接的时候 需要输私钥的密
重设私钥口令:ssh-keygen -p
如果你不想输入密码直接登录,可以托管 1.ssh-agent bash #启用代理
                                                              2.ssh-add        #把口令托管给代理
2)公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id [-i[identity_file]] [user@]host  #拷贝到 ~/.ssh/authorized_keys文件中去

[root @ centos7 ~]#ssh-keygen
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:37hopStfoXk3QLINB3cwIGkxstFiID8KvU9sCow24UQ root@centos7.1
The key's randomart image is:
+---[RSA 2048]----+
|.E..o.+oo.+..    |
|.+  o++o o o     |
|.o+..o  o o      |
|*..+     B       |
|+=. +   S +      |
|...=     +.=     |
|  . .   oo= +    |
|      . o+ o .   |
|       ++..      |
+----[SHA256]-----+
[root @ centos7 ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub  root@192.168.47.103
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/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.47.103's password: 
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@192.168.47.103'"
and check to make sure that only the key(s) you wanted were added.
[root @ centos7 ~]#ssh  root@192.168.47.103
Last login: Mon Apr 12 02:27:47 2021 from 192.168.47.100


标签:公钥,加密,服务端,安全,SSH,key,root,ssh,客户端
来源: https://blog.51cto.com/u_14814545/2699798

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有