服务器端与客户端的密钥系统不一样,称为非对称式密钥系统
RSA算法的基础是模运算x mod n,事实上:
[(a mod n) + (b mod n)] mod n = (a+b) mod n
[(a mod n) - (b mod n)] mod n = (a-b) mod n
[(a mod n) * (b mod n)] mod n = (a*b) mod n
因此有(a mod n)^d mod n = a^d mod n
报文/信息(message)其实仅仅是一个比特模式(bit pattern),每个比特模式可以表示为一个唯一的整数,加密一个报文就等价于加密一个数
为了加密m,我们可以加密对应的数,得到一个新的数(即密文)
 
RAS生成公钥、私钥对的过程: 
  1. 选择2个1024bits的大质数p和q
  2. 计算n = pq,z = (p-1)(q-1)
  3. 选择e (满足e<n),使e与z 之间没有公因子,即e, z互质
  4. 选择d使得ed-1刚好可以被z整除(即: ed mod z = 1 )
  5. 得到公钥: (n,e);私钥:(n,d)
加密报文m (m<n)时,计算c = m^e mod n
解密密文c时,计算m = c^d mod n
有m = (m^e mod n)^d mod n = m^ed mod n = (m^d mod n)^e mod n 
利用公钥加密,可以利用私钥解密
利用私钥加密,可以利用公钥解密
RSA的安全性建立在“大数分解和素性检测”这个数论难题的基础上。将两个大素数相乘在计算上容易实现,而将该乘积分解的计算量相当大
 
已知公钥求解私钥,相当于在不知道两个因子p和q的前提下,找出n的因子,很难
但其计算速度很慢,因此往往利用公钥加密建立安全连接,然后建立第二个密钥-对称会话密钥,用于加密数据

远程连接服务器主要有三种:
文字接口明码:telnet,rsh等为主
文字接口密码:SSH(Secure SHELL protocol)为主
图形接口:Xdmcp,VNCRDP
 
SSH有两种加密算法,默认RSA加密算法
开启sshd服务:
[root@localhost ~]# rm /etc/ssh/ssh_host*
[root@localhost ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@localhost ~]# date
Tue Jul :: EDT
[root@localhost ~]# ll /etc/ssh/ssh_host*
-rw-r-----. root ssh_keys Jul : /etc/ssh/ssh_host_ecdsa_key
-rw-r--r--. root root Jul : /etc/ssh/ssh_host_ecdsa_key.pub
-rw-r-----. root ssh_keys Jul : /etc/ssh/ssh_host_ed25519_key
-rw-r--r--. root root Jul : /etc/ssh/ssh_host_ed25519_key.pub
-rw-r-----. root ssh_keys Jul : /etc/ssh/ssh_host_rsa_key
-rw-r--r--. root root Jul : /etc/ssh/ssh_host_rsa_key.pub
[root@localhost ~]# netstat -tlnp | grep ssh
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp6 ::: :::* LISTEN /sshd
ssh 账号@主机ip
不写账号会默认以本地端账号登入远程
ssh -f student@127.0.0.1find / &> ~/find1.log
-f  不登入远程主机只发送一个指令过去
 
服务器公钥记录文件 ~/.ssh/known_hosts
若接收到的公钥尚未记录,则询问用户是否记录
若接收到的公钥已经记录,则进行对比,不同会发出警告
 
scp XXX.tar root@ipaddress:/root/(目标)
scp student@127.0.0.1:/etc/bashrc /tmp
-r 递归地复制文件夹
[root@www ~]# sftp student@localhost
sftp> lls /etc/hosts
/etc/hosts
sftp> put /etc/hosts
Uploading /etc/hosts to /home/student/hosts
sftp> ls -a
. .. .bash_history .bash_logout
.bash_profile .bashrc .mozilla hosts
sftt> lcd /tmp
sftp> lpwd
Local working directory: /tmp
sftp> get .bashrc
Fetching /home/student/.bashrc to .bashrc
/home/student/.bashrc % .1KB/s :
sftp> lls -a
. .font-unix keyring-rNd7qX .X11-unix
.. .gdm_socket lost+found scim-panel-socket:-root
.bashrc .ICE-unix mapping-root .X0-lock
sftp> exit 
制作不用密码立刻可以登入的ssh用户
[root@localhost ~]# ssh-keygen -t rsa/dsa
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:
产生了两个文件~/.ssh/id_rsa(-rw-------)和~/.ssh/id_rsa.pub
将公钥内容放置到服务器端的~/.ssh/authorized_keys(-rw-r--r--)下
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host可以将key直接写入远程机器的authorized_keys中
之后通过SSH登录远程机器不再需要密码
[root@VM_6_187_centos ~]# ldd $(which sshd) | grep libwrap
libwrap.so. => /lib64/libwrap.so. (0x00007f0430674000)
[root@VM_6_187_centos ~]# ldd $(which httpd) | grep libwrap
SSH有支持tcp wrappers所提供的libwrap.so这个函式库档案,可以使用/etc/host.{allow,deny}进行类似防火墙的抵抗机制,http则不可以
控制远程访问设置:
[root@www ~]# vim /etc/hosts.allow
sshd: 127.0.0.1 192.168.1.0/255.255.255.0 192.168.100.0/255.255.255.0
[root@www ~]# vim /etc/hosts.deny
sshd : ALL
这两个文件的格式都是一样的<service(program_name)> : <IP, domain, hostname> : <action>
hosts.allow的action默认allow,hosts.deny的action默认deny 

RSA加密算法和SSH远程连接服务器的更多相关文章

  1. golang使用ssh远程连接服务器并执行命令

    安装golang.org/x 直接去github上面,把https://github.com/zieckey/golang.org,把整个目录拷贝下来放到你的gopath下面即可.记住在gopath的 ...

  2. mac 通过 终端 ssh 远程连接 centos 服务器

    mac 通过 终端 ssh 远程连接 centos 服务器 在终端下输入 ssh -l root 204.74.*.*      就可以连接了,这是端口没变的情况,还是原来的22 ssh -p 448 ...

  3. 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)

    注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作 ...

  4. SSH 远程连接

    ssh远程连接 准备工作: 1 准备两台linux pc 我们一般用的是VMware虚礼软件 2 这两台linux可以互通 3 linux1 :192.168.2.2 这台为你要连接的服务器 linu ...

  5. SSH远程连接服务

    一.SSH 原理图 二.SSH 原理描述 2.1:什么是SSH SSH是专门为了远程登录会话和其他网络服务提供的安全性协议,使用SSH协议可以有效的防止远程连接会话的时候出现信息泄密,在数据传输的时候 ...

  6. 虚拟机VMware网络类型&&SSH远程连接Linux

    前言: Linux专题是16年11月开始写,说来惭愧,已经5个月没学Linux,至今感觉连入门还没达到.暑假实习有投运维开发岗位,无奈对Linux不熟悉,校招简历也被刷了.so, 我打算先花1个月内的 ...

  7. Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

    Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT.桥接和Host-only] 作者:天齐 一.Windows和linux虚拟机之间联网实现SSH远程连接 ...

  8. ssh远程连接的故障排查详解

    排查故障: 1.两个机器之间是否通畅,看物理网络(网线网卡,IP是不是正确) ping ip -t 来检测物理网络是否通畅 通 不通 不通: 1.客户端到服务器端物理链路有问题 网卡 ,IP ,  网 ...

  9. VScode远程连接服务器

    VScode远程连接服务器 1.远程服务器安装rmate,在远程服务器上执行以下操作 wget https://raw.githubusercontent.com/sclukey/rmate-pyth ...

随机推荐

  1. linux的/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow

    1./etc/passwd  存储用户信息 [root@oldboy ~]# head /etc/passwd root:x:::root:/root:/bin/bash bin:x:::bin:/b ...

  2. Intellij IDEA 快速查找接口实现类的快捷键

    查找接口的实现类: IDEA 风格 ctrl + alt +B 在按F2查看详细文档注解 查看类或接口的继承关系: ctrl + h

  3. PHP is_nan() 函数

    实例 判断一个值是否为非数值: <?phpecho is_nan(200) . "<br>";echo is_nan(acos(1.01));?>高佣联盟  ...

  4. 我靠!Semaphore里面居然有这么一个大坑!

    这是why的第 59 篇原创文章 荒腔走板 大家好,我是why哥 ,欢迎来到我连续周更优质原创文章的第 59 篇. 上周写了一篇文章,一不小心戳到了大家的爽点,其中一个转载我文章的大号,阅读量居然突破 ...

  5. Git科普文,Git基本原理&各种骚操作

    Git简单介绍 Git是一个分布式版本控制软件,最初由Linus Torvalds创作,于2005年以GPL发布.最初目的是为更好地管理Linux内核开发而设计. Git工作流程以及各个区域 Work ...

  6. 虹软人脸识别—版本升级接口修改说明(C#)

    自虹软发布了免费.离线版本人脸识别SDK,在Github上陆续分享了各个版本对应的 C# Demo.因为公司项目一直在使用虹软的SDK,因此每当虹软官网有新版本发布,我都会进行了解,并结合Demo进行 ...

  7. 全球疫情爬取APP版

    全球疫情统计APP图表展示: 将该任务分解成三部分来逐个实现: ①爬取全球的疫情数据存储到云服务器的MySQL上 ②在web项目里添加一个servlet,通过参数的传递得到对应的json数据 ③设计A ...

  8. application.yml使用@符合问题:'@' that cannot start any token. (Do not use @ for indentation)

    在application配置文件中使用@出现异常: Exception in thread "main" while scanning for the next tokenfoun ...

  9. C语言学习笔记之switch有无break差别

    今天复习到了switch语句,我们正常的写法中,是经常把switch和break搭配在一起的 当我们把break去掉呢 可以看到,我们选择2时,的确会到case 2里面执行语句,可是没有break还是 ...

  10. java_String类、StringBuilder类、Arrays类、Math类的使用

    String类 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例 构造方法 java.lang.String :此类不需 ...