赞
踩
本文对密码学原理的解释只停留于表面,即应用层,非绝对专业,请注意甄别
(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地址或者是一串域名
(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了,可以在这里操作
!!!首次登陆必须注意,不会像上图一样立马显示"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])?
我们通俗点说,这段话的意思就是:这个服务器是陌生的
如何得知是陌生的?即这个机器的指纹(每个机器唯一对应一个指纹,除非改了),你之前没有见过,也就是你的花名册中没有这个机器,所以电脑就提示你,单纯善良被骗
Q:如何操作?
A:直接键入yes,则该服务器的信息记录在~/.ssh/known_hosts文件中,下次登录就直接可以上去了,没有了这个提示
上述的方法的确可以登录ssh服务器,但是过于麻烦,每次都需要键入账号以及用户名,还有一长串的密码,但记住,人类总是懒惰的
说明:稍后我们会解释这些步骤的意义,同时,免密登录也就是基于密码学
具体步骤是:
创建文件~$ ~/.ssh/config
进入到文件中:
Host myserver1
HostName IP #IP是地址或者域名
User #用户名
Host myserver2
.....
此后再使用服务器时,可以直接使用别名myserver1、myserver2登录服务器
基于密钥的登录:
具体步骤是:
生成密钥,注意,这里是非对称加密,在命令行中键入ssh-keygen
,然后一路回车,当然,中间也可以选择很多选项,例如:密钥的存储地址
,密钥配置
…详细请参考阮一峰老师的博客.
注意:
(1)执行上述命令之后,文件.ssh
中会多出私钥:id_rsa
、公钥:id_rsa_pub
(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
法二:将id_rsa_pub
手动放到服务器的.ss/authorized_keys
文件中
说明:
(1)这个举措就是将私钥放入对应服务器,这样就能验证来访者的身份
(2)实操:略
私钥
能解密公钥
加密过的内容,公钥
也能解开私钥
加密过的内容Q:根据上文的操作我们知道了服务器端只被写入公钥
,而本机则同时拥有私钥
、公钥
,为什么?
A:要回答这个问题,就要知道免密识别登录的原理啦,首先,我们会产生一个公钥以及私钥,然后将公钥放到对应的远程服务器上去,下次我们需要访问的时候就可以:
宫廷玉液酒
一样Q:公钥私钥
是可以相互解密的,那这还有什么意义?
A:因为公钥
对应着唯一私钥
,反之亦然,所以黑客就算拿到了公钥
也无济于事,因为无法对数据进行加密签名
鸣谢:
阮一峰老师
闫学灿老师
相关链接:https://wangdoc.com/ssh/basic
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。