服务器端与客户端的密钥系统不一样,称为非对称式密钥系统
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服务:
  1. [root@localhost ~]# rm /etc/ssh/ssh_host*
  2. [root@localhost ~]# service sshd restart
  3. Redirecting to /bin/systemctl restart sshd.service
  4. [root@localhost ~]# date
  5. Tue Jul :: EDT
  6. [root@localhost ~]# ll /etc/ssh/ssh_host*
  7. -rw-r-----. root ssh_keys Jul : /etc/ssh/ssh_host_ecdsa_key
  8. -rw-r--r--. root root Jul : /etc/ssh/ssh_host_ecdsa_key.pub
  9. -rw-r-----. root ssh_keys Jul : /etc/ssh/ssh_host_ed25519_key
  10. -rw-r--r--. root root Jul : /etc/ssh/ssh_host_ed25519_key.pub
  11. -rw-r-----. root ssh_keys Jul : /etc/ssh/ssh_host_rsa_key
  12. -rw-r--r--. root root Jul : /etc/ssh/ssh_host_rsa_key.pub
  13. [root@localhost ~]# netstat -tlnp | grep ssh
  14. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  15. tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
  16. 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 递归地复制文件夹
  1. [root@www ~]# sftp student@localhost
  2. sftp> lls /etc/hosts
  3. /etc/hosts
  4. sftp> put /etc/hosts
  5. Uploading /etc/hosts to /home/student/hosts
  6. sftp> ls -a
  7. . .. .bash_history .bash_logout
  8. .bash_profile .bashrc .mozilla hosts
  9. sftt> lcd /tmp
  10. sftp> lpwd
  11. Local working directory: /tmp
  12. sftp> get .bashrc
  13. Fetching /home/student/.bashrc to .bashrc
  14. /home/student/.bashrc % .1KB/s :
  15. sftp> lls -a
  16. . .font-unix keyring-rNd7qX .X11-unix
  17. .. .gdm_socket lost+found scim-panel-socket:-root
  18. .bashrc .ICE-unix mapping-root .X0-lock
  19. sftp> exit 
制作不用密码立刻可以登入的ssh用户
  1. [root@localhost ~]# ssh-keygen -t rsa/dsa
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/root/.ssh/id_rsa):
  4. Enter passphrase (empty for no passphrase):
  5. 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登录远程机器不再需要密码
  1. [root@VM_6_187_centos ~]# ldd $(which sshd) | grep libwrap
  2. libwrap.so. => /lib64/libwrap.so. (0x00007f0430674000)
  3. [root@VM_6_187_centos ~]# ldd $(which httpd) | grep libwrap
SSH有支持tcp wrappers所提供的libwrap.so这个函式库档案,可以使用/etc/host.{allow,deny}进行类似防火墙的抵抗机制,http则不可以
控制远程访问设置:
  1. [root@www ~]# vim /etc/hosts.allow
  2. sshd: 127.0.0.1 192.168.1.0/255.255.255.0 192.168.100.0/255.255.255.0
  3. [root@www ~]# vim /etc/hosts.deny
  4. 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. 【JMicro】微服务部署example.provider应用

    JMicro是一个用Java语言实现的开源微服务全家桶, 源码地址:https://github.com/mynewworldyyl/jmicro, Demo地址:http://124.70.152. ...

  2. PHP array_diff_ukey() 函数

    实例 比较两个数组的键名(使用用户自定义函数比较键名),并返回差集: <?phpfunction myfunction($a,$b){if ($a===$b){return 0;}return ...

  3. Python time altzone()方法

    描述 Python time altzone() 函数返回格林威治西部的夏令时地区的偏移秒数.高佣联盟 www.cgewang.com 如果该地区在格林威治东部会返回负值(如西欧,包括英国).对夏令时 ...

  4. PHP sort() 函数

    实例 对数组 $cars 中的元素按字母进行升序排序: <?php $cars=array("Volvo","BMW","Toyota" ...

  5. PHP substr_count() 函数

    实例 计算 "world" 在字符串中出现的次数: <?php高佣联盟 www.cgewang.comecho substr_count("Hello world. ...

  6. Python性能分析与优化PDF高清完整版免费下载|百度云盘

    百度云盘|Python性能分析与优化PDF高清完整版免费下载 提取码:ubjt 内容简介 全面掌握Python代码性能分析和优化方法,消除性能瓶颈,迅速改善程序性能! 对于Python程序员来说,仅仅 ...

  7. 牛客挑战赛39 D 牛牛的数学题 NTT FMT FWT

    LINK:牛牛的数学题 题目看起来很不可做的样子. 但是 不难分析一下i,j之间的关系. 对于x=i|j且i&j==0, i,j一定是x的子集 我们可以暴力枚举子集来处理x这个数组. 考虑 x ...

  8. react - 多层级嵌套路由支持

    routerCofing配置 { path: '/route1/someModel', children: [ { path: '/route2', component: RouteBase.Cps1 ...

  9. [转] SpringBoot返回json 数据以及数据封装

    作者:武哥     来源:武哥聊编程   https://mp.weixin.qq.com/s/QZk0sKxBX4QZiCTHQIA6pg 1. Spring Boot关于Json的知识点 在项目开 ...

  10. 【FZYZOJ】「Paladin」瀑布 题解(期望+递推)

    题目描述 CX在Minecraft里建造了一个刷怪塔来杀僵尸.刷怪塔的是一个极高极高的空中浮塔,边缘是瀑布.如果僵尸被冲入瀑布中,就会掉下浮塔摔死.浮塔每天只能工作 $t$秒,刷怪笼只能生成 $N$  ...