RSA加密算法和SSH远程连接服务器

服务器端与客户端的密钥系统不一样,称为非对称式密钥系统

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服务:

[[email protected] ~]# rm /etc/ssh/ssh_host*
[[email protected] ~]# service sshd restart
Redirecting to /bin/systemctl restart  sshd.service
[[email protected] ~]# date
Tue Jul 11 21:46:05 EDT 2017
[[email protected] ~]# ll /etc/ssh/ssh_host*
-rw-r-----. 1 root ssh_keys  227 Jul 11 21:45 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r--. 1 root root      162 Jul 11 21:45 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys  387 Jul 11 21:45 /etc/ssh/ssh_host_ed25519_key
-rw-r--r--. 1 root root       82 Jul 11 21:45 /etc/ssh/ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 1675 Jul 11 21:45 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 root root      382 Jul 11 21:45 /etc/ssh/ssh_host_rsa_key.pub
[[email protected] ~]# netstat -tlnp | grep ssh
Proto Recv-Q Send-Q Local Address    Foreign Address      State       PID/Program name
tcp         0              0         0.0.0.0:22              0.0.0.0:*               LISTEN          16016/sshd
tcp6       0              0               :::22                      :::*                     LISTEN          16016/sshd

ssh 账号@主机ip

不写账号会默认以本地端账号登入远程

ssh -f [email protected]find / &> ~/find1.log

-f  不登入远程主机只发送一个指令过去

服务器公钥记录文件 ~/.ssh/known_hosts

若接收到的公钥尚未记录,则询问用户是否记录

若接收到的公钥已经记录,则进行对比,不同会发出警告

scp XXX.tar [email protected]:/root/(目标)

scp [email protected]:/etc/bashrc /tmp

-r 递归地复制文件夹

[[email protected] ~]# sftp [email protected]
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 100% 124 0.1KB/s 00:00
sftp> lls -a
.    .font-unix   keyring-rNd7qX     .X11-unix
..   .gdm_socket   lost+found   scim-panel-socket:0-root
.bashrc    .ICE-unix mapping-root     .X0-lock
sftp> exit 

制作不用密码立刻可以登入的ssh用户

[[email protected] ~]# 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登录远程机器不再需要密码

[[email protected]_6_187_centos ~]# ldd $(which sshd) | grep libwrap
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f0430674000)
[[email protected]_6_187_centos ~]# ldd $(which httpd) | grep libwrap

SSH有支持tcp wrappers所提供的libwrap.so这个函式库档案,可以使用/etc/host.{allow,deny}进行类似防火墙的抵抗机制,http则不可以

控制远程访问设置:

[[email protected] ~]# 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
[[email protected] ~]# vim /etc/hosts.deny
sshd : ALL

这两个文件的格式都是一样的<service(program_name)> : <IP, domain, hostname> : <action>

hosts.allow的action默认allow,hosts.deny的action默认deny

原文地址:https://www.cnblogs.com/yangyuliufeng/p/9238075.html

时间: 2024-10-10 04:42:34

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

Paramiko模块基本使用,通过ssh远程连接服务器,并执行操作

Paramiko模块 通过ssh远程链接服务器并执行响应的操作,类似于XShell ps:ansible批量管理服务器工具,底层用的就是paramiko模块 安装 pip3 install paramiko 基本使用 远程链接服务器的方式 用户名和密码 公钥私钥的方式 paramiko上面两种方式都支持 执行命令 用户名和密码的方式 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许链接不在know_hosts文件中的主机 ssh.

Mac OS系统通过ssh远程连接服务器或VPS,类似window上的putty

Mac OS系统上其实终端Terminal就自带了. 起初,我使用命令 ssh [email protected],它是默认通过port 22的. 而我VPS的ssh端口并不是22,结果连不上,显示:ssh: connect to host localhost port 22: Connection refused 于是我Google了,发现是要改ssh_config,结果改了没有用:又有人说要改ssh.plist,结果改不了. 最后,我运行了ssh,提示有以下指令: usage: ssh [-

SSH远程连接与加密技术

一.数据加密的分类 数据加密算法通常可以分为三类:对称加密:非对称加密:单向加密.先对它们的区别与作用作说明 1.对称加密算法 所谓对称加密算法就是加密和解密使用同一个密钥.其基本算法有DES.3DES.AES等.特性:加密.解密使用同一个密钥:将原始数据分割成固定大小的块,逐个进行加密.缺陷:密钥过多:密钥分发. 2.非对称加密 密钥是成对出现.实现算法有RSA, DSA, ELGama等.公钥(pubkey):公开给所有人:私钥(secret key):自己留存,必须保证其私密性.特点:用公

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

mac 通过 终端 ssh 远程连接 centos 服务器 在终端下输入 ssh -l root 204.74.*.*      就可以连接了,这是端口没变的情况,还是原来的22 ssh -p 448(你改变的端口) -l root(连接用户名) 204.74.*.*      这个是端口改变后的连接 ssh 连接的时候 Host key verification failed. ssh ssh 连接的时候 Host key verification failed. 解决方法:vi ~/.ssh

远程连接服务器---SSH详解

对于系统管理员来说,远程连接服务器是一个很有用的操作,它使得服务器管理变得更加方便. 下面我就来科普一下有关远程连接服务器的知识: 目前,远程连接服务器的类型有以下几种: ① 文字接口的明文传输:Telnet.RSH为主,很少用到. ② 文字接口的加密传输:以SSH为主,已经取代了上面的明文传输方式. ③ 图形接口:XDMCP.VNC.XRDP等较为常见. 这篇文章只为实战,不为普及概念性知识.所以我只讲解在工作中最常用到的技术SSH.关于SFTP技术和VNC技术,请查阅我的其他博客. 好,先来

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

注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作为本安装指南的基础篇. 在 <为什么说每个程序员都应该有台Mac电脑>一文中我有提到 Mac 系统的命令行环境与 Linux 系统十分类似,这是因为 Mac OS X 的操作系统内核是 Darwin,它和 Linux 一样是一种优秀的类 Unix 系统.掌握 Linux Shell 命令行的使用,

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

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT.桥接和Host-only] 作者:天齐 一.Windows和linux虚拟机之间联网实现SSH远程连接 假如我们要给主机名为mini1的虚拟机配置ip地址,需要以下几个步骤: 在linux上查看ip地址,如果linux服务器有ip地址,让它的ip地址和windows的ip地址在同一个网段,它们之间才能联网.在linux上查看ip地址的命令为"ifconfig": 发现eth0网卡没有配置i

SSH 远程连接原理及故障排错详解

1.SSH 远程连接介绍 最常用的 Linux 提供远程连接服务的工具就是 SSH 软件,SSH 分为 SSH 客户端和 SSH 服务端两部分.其中,SSH服务端包含的软件程序主要有 openssl 和 openssh,在 Linux 系统中可以按如下方法查询 SSH 服务端工具的安装情况. # rpm -qa openssl openssh 其中,openssh 是提供 SSH 服务的程序,openssl 是为 SSH 提供连接加密的程序. 2.SSH 服务端介绍 启动 Linux 系统时,默

ssh远程连接介绍

一.ssh介绍 1.ssh客户端 SecureCRT.xshell.putty.Linux下的SSH客户端软件 2.ssh服务器端  openssh(ssh服务程序) 和 openssl(提供连接加密的程序) sshd 守护进程 二.查询服务器端工具安装情况: rpm -qa openssh openssl 三.ssh远程连接故障排查: 1.ping  serverIP 2.traceroute  serverIP  -n (linux系统) tracert  -d  serverIP