当前位置:   article > 正文

SSH常用指令与其中的密码学原理_ssh常用密码

ssh常用密码

SSH常用指令与其中的密码学原理

本文对密码学原理的解释只停留于表面,即应用层,非绝对专业,请注意甄别

  1. 登录指令:
  • 说明:

(a)user_name是用户名,一台主机上有很多用户,选择要登录的那个

(b)host_name是主机名

(c)命令格式:ssh user_name@host_name

(d)登陆到特定端口的命令:ssh user_name@host_name -p xxx

如果不加-p那就默认登录到服务器的22端口,-p xxx就是登录到xxx端口

  • 演示:

    (1)理论演示:

~$ ssh user_name@host_name
#host_name必须是ip一串IP地址或者是一串域名
  • 1
  • 2

​ (2)真正的上机演示:

这里的登录实验平台来自我的AcTerminal

#部分涉及个人隐私,我已经隐去
User: acs_***
HostName: 123.57.67.***
Password: ****** #密码我隐去了
acs@379b6375923d:~$ ssh acs_***@123.57.67.***
acs_9847@123.57.67.***'s password: *******   #我会输入密码
Welcome to AC Server  #ok登陆成功
 * Tutorial:        https://www.acwing.com/activity/content/57/
     __    __________      __ ______  ___ _______
    /  \  / ______/ /      \ \| ||  \ | |/  _____|
   / /\ \ | |     | |  /\  | || || \ \| || /   ___
  / /__\ \| |     | | /  \ | || || |\ \ || |   |_ |
 / ______ \ \_____\ \/ /\ \/ /| || | \  || \____| |
/_/      \_\_______\__/  \__/ |_||_|  \_|\________/

acs_***@acs:~$   #这就是另外一台机子的terminal了,可以在这里操作
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • !!!首次登陆必须注意,不会像上图一样立马显示"Welcome to xxx Server",而是会显示:
The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established.
ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  • 1
  • 2
  • 3
  • 我们通俗点说,这段话的意思就是:这个服务器是陌生的

    如何得知是陌生的?即这个机器的指纹(每个机器唯一对应一个指纹,除非改了),你之前没有见过,也就是你的花名册中没有这个机器,所以电脑就提示你,单纯善良被骗

  • Q:如何操作?

    A:直接键入yes,则该服务器的信息记录在~/.ssh/known_hosts文件中,下次登录就直接可以上去了,没有了这个提示

  1. SSH更简单的登录设置:

上述的方法的确可以登录ssh服务器,但是过于麻烦,每次都需要键入账号以及用户名,还有一长串的密码,但记住,人类总是懒惰的

说明:稍后我们会解释这些步骤的意义,同时,免密登录也就是基于密码学

  • 配置文件[可以免输入账号及用户名]:

具体步骤是:

  1. 创建文件~$ ~/.ssh/config

  2. 进入到文件中:

Host myserver1
	HostName IP #IP是地址或者域名
	User #用户名
	
Host myserver2
.....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

此后再使用服务器时,可以直接使用别名myserver1、myserver2登录服务器

  • 基于密钥的登录:

    具体步骤是:

  1. 生成密钥,注意,这里是非对称加密,在命令行中键入ssh-keygen,然后一路回车,当然,中间也可以选择很多选项,例如:密钥的存储地址密钥配置…详细请参考阮一峰老师的博客.

    • 注意:

      (1)执行上述命令之后,文件.ssh中会多出私钥:id_rsa公钥:id_rsa_pub

      (2)!!!私钥是不能公开的,否则就寄了,别人直接进到你的服务器里干翻...

  2. 将我们产生的密钥对中id_rsa_pub传到服务器中去,不过有两种传入的办法:

    • 法一:
  • (1)说明:

    直接输入指令,这个方法更简单ssh-copy-id xxxx,注意:这个xxxx是你在配置文件中写入的名字,然后系统就会提示你键入密码,当然也就是只输入这一次,后面可以直接一句话登录

    (2)演示:

    acs@379b6375923d:~$ ssh-copy-id myserver1  #键入指令
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/acs/.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
    acs_9847@123.57.67.128's password:    #在此处我会键入密码
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'myserver1'"
    and check to make sure that only the key(s) you wanted were added.
    #Ok了,这些终于搞定了,下次登录的时候:s直接sh myserver1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 法二:将id_rsa_pub手动放到服务器的.ss/authorized_keys文件中

    说明:

​ (1)这个举措就是将私钥放入对应服务器,这样就能验证来访者的身份

​ (2)实操:

  1. 登录时的密码学原理:
    • 先记住一个原则:私钥能解密公钥加密过的内容,公钥也能解开私钥加密过的内容
  • Q:根据上文的操作我们知道了服务器端只被写入公钥,而本机则同时拥有私钥公钥,为什么?

    A:要回答这个问题,就要知道免密识别登录的原理啦,首先,我们会产生一个公钥以及私钥,然后将公钥放到对应的远程服务器上去,下次我们需要访问的时候就可以:

  1. 向服务器发起一个请求,请求登录
  2. 服务器需要确认你的身份,所以会发一串随机数据,就像宫廷玉液酒一样
  3. 你收到数据之后,就用你手中的私钥进行签名,也就是对手中的数据进行加密,当然有人会问,这个数据会不会泄露?你要明白,这个数据是一串随机数据,没有什么用,别人拿走也就拿走了,又没法进行加密,所以这时候,你签名完了就将这个东西回传
  4. 服务器收到之后就会用公钥进行解密,与原始数据进行比对,如果一样,则允许登录
  • 一个小小讨论:

Q:公钥私钥是可以相互解密的,那这还有什么意义?

A:因为公钥对应着唯一私钥,反之亦然,所以黑客就算拿到了公钥也无济于事,因为无法对数据进行加密签名

后记:

鸣谢:

  1. 阮一峰老师

  2. 闫学灿老师

  3. 相关链接:https://wangdoc.com/ssh/basic

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/583471
推荐阅读
相关标签
  

闽ICP备14008679号