SSH2连接原理

摘要:
指纹是指公钥很长,很难比较,因此进行MD5/SHA256计算,将其转换为数字很短的指纹。主机'www.xxx。网络“无法”建立。RSAKeyfingerprintsSHA256:Z6DoSKxCQq4NGrGcQTcbWBC+hrZ38gqCLBNniHppaII。RSAKeyfingerprintsMD5:a2:78:ca:03:db:40:41:cc:c2:44:17:15:65:44:c:11。假设在风险测量之后,用户决定接受远程主机的公钥。收到请求后,YesB将其公钥发送给A。当远程主机的公钥被接受时,它将保存在文件$HOME/中。ssh2/主机密钥。在机器B上安装A的公钥,通常在$HOME/ssh2/authorized_keys。B从A接收结果,并将其与先前生成的随机数进行比较。如果一致,则允许A连接。

一,口令登录

(1)在A机使用命令<ssh|sftp user@host>连接B机

bash-4.2$ ssh user@www.xxx.net

  这段话的意思是,无法确认host主机的真实性,只知道它的fingerprint,问你还想继续连接吗?很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出fingerprint,以便用户自行核对。所谓fingerprint,是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5/SHA256计算,将它变成一个位位数很短的指纹。

The authenticity of host 'www.xxx.net (111.111.111.34)' can't be established.

RSA key fingerprint is SHA256:Z6DoSKxCQq4NGrGcQTcbWBC+hrZ38gqCLBNniHppaII.

RSA key fingerprint is MD5:a2:78:ca:03:db:40:41:cc:c2:44:17:15:65:44:4c:11.

(2)假定经过风险衡量以后,用户决定接受这个远程主机的公钥。

Are you sure you want to continue connecting (yes/no)? yes

(3)B机收到请求后,将自己的公钥发给A

  当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh2/hostkeys(SSH在$HOME/.ssh/known_hosts)之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

(4)A收到公钥后,用公钥加密B的登陆密码,生成加密密文,发送给B

  有时候我们连接的是一个冗余或负载均衡的Server,fingerprint不是固定的,这个时候会出现"Host key verification failed"这样的错误。可以加<-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null>这两个参数来忽略hostkey check。

Password: xxxxxx

(5)B收到加密密文后,用自己的私钥解密,得到解密信息,然后与B的登陆密码做比较,正确则允许A登陆。

sftp>

二,公钥(免密)登录

(1)在A机器上生成public key和private key,一般目录在$HOME/.ssh2中。

(2)在B机器上安装A的public key,一般在$HOME/.ssh2/authorized_keys(存放远程连接主机的公钥,一行一个公钥,权限为600,可自定义,比如/etc/ssh/keys/user/)中。

(3)A向B发送连接请求,并带上自己的公钥。

(4)B收到A的公钥,检查机器上的授权列表是否包含有A的公钥,若存在,再生成一个随机数,使用公钥加密,生成加密密文发送给A。

(5)A收到加密密文后,用私钥解密,得到的结果发送给B。

(6)B收到A发来的结果,与之前生成的随机数作比较,一致则允许A连接。

免责声明:文章转载自《SSH2连接原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XML Serializable Generic DictionaryMongoDB基础命令及操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ssh secure Shell连接阿里云服务器,报错的问题,openssh无法登录:server responded "algorithm negotiation failed”

1、putty登录连接到阿里云服务器 2、修改ssh的配置文件 vi /etc/ssh/sshd_config 切换编辑模式(i),设置参数 PasswordAuthentication yes 在配置文件末尾添加: Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-...

史上最全Linux提权后获取敏感信息方法

在本文开始之前,我想指出我不是专家。据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点)。下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物。我知道有更多的“东西”去寻找。这只是一个基本粗略的指南。并不是每一个命令,做好要注重细节. 文中的每行为一条命令,文中有的命令可能在你的主机上敲不出来,因为它可能是...

win7下用SSH连接linux虚拟机

本文来自转载:原文 [需求] 在win7环境下用SSH(SecureShell)连接本地的一台虚拟机上ubuntu(11.10)系统  [环境] win7,ubuntu,vmware(8.0) [方案] 首先要确定ubuntu上安装并且启动了ssh服务,然后还要确保linux系统上的防火墙要关闭,win7的防火墙可以正常开启 SSH可以google下...

访问局域网中的虚拟机(详细教程!)

访问局域网中的虚拟机(详细教程!) 如何利用局域网中的一台PC访问另一台PC中的虚拟机(例如VMware创建的Linux虚拟机)? 解决方案如下:(图中序号代表操作顺序) 1. 首先我们将虚拟机中的sshd的端口映射到主机的端口中 步骤如下: step1: 设置VMware中虚拟机的虚拟网络编辑器 1 step2: 经过以上操作,我们就完...

Python标准库

简介: ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。 有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。 Paramiko介绍: paramiko包含两个核心组件:...

apache mina sshd ,纯java的ssh工具包

Overview Apache SSHD is a 100% pure java library to support the SSH protocols on both the client and server side. This library is based on Apache MINA, a scalable and high perfor...