当前位置:网站首页>SSH免密码登录详解
SSH免密码登录详解
2022-07-05 13:53:00 【星哥玩云】
为了更好的理解SSH免密码登录原理,我们先来说说SSH的安全验证,SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别。
1. 基于口令的安全验证
这种方式使用用户名密码进行联机登录,一般情况下我们使用的都是这种方式。整个过程大致如下:
(1)客户端发起连接请求。
(2)远程主机收到用户的登录请求,把自己的公钥发给客户端。
(3)客户端接收远程主机的公钥,然后使用远程主机的公钥加密登录密码,紧接着将加密后的登录密码连同自己的公钥一并发送给远程主机。
(4)远程主机接收客户端的公钥及加密后的登录密码,用自己的私钥解密收到的登录密码,如果密码正确则允许登录,到此为止双方彼此拥有了对方的公钥,开始双向加密解密。
PS:当网络中有另一台冒牌服务器冒充远程主机时,客户端的连接请求被服务器B拦截,服务器B将自己的公钥发送给客户端,客户端就会将密码加密后发送给冒牌服务器,冒牌服务器就可以拿自己的私钥获取到密码,然后为所欲为。因此当第一次链接远程主机时,在上述步骤的第(3)步中,会提示您当前远程主机的”公钥指纹”,以确认远程主机是否是正版的远程主机,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到 ~/.ssh/known_hosts文件中。
2. 基于密匙的安全验证
这种方式你需要在当前用户家目录下为自己创建一对密匙,并把公匙放在需要登录的服务器上。当你要连接到服务器上时,客户端就会向服务器请求使用密匙进行安全验证。服务器收到请求之后,会在该服务器上你所请求登录的用户的家目录下寻找你的公匙,然后与你发送过来的公匙进行比较。如果两个密匙一致,服务器就用该公匙加密“质询”并把它发送给客户端。客户端收到“质询”之后用自己的私匙解密再把它发送给服务器。与第一种级别相比,第二种级别不需要在网络上传送口令。
PS:简单来说,就是将客户端的公钥放到服务器上,那么客户端就可以免密码登录服务器了,那么客户端的公钥应该放到服务器上哪个地方呢?默认为你要登录的用户的家目录下的 .ssh 目录下的 authorized_keys 文件中(即:~/.ssh/authorized_keys)。
3. 使用场景
rsync自动备份时免密码登录,集群环境中需要主机间互相通信如:Hadoop,目前小编只涉及到这两处,日后有其它地方用到再来补充~
3. 相关配置项
SSHD服务的配置文件位于/etc/ssh/sshd_config
配置项一:PubkeyAuthentication 是否允许使用密钥验证方式登录
配置项二:AuthorizedKeysFile允许登录主机的公钥存放文件,默认为用户家目录下的 .ssh/authorized_keys
4. 权限问题
.ssh文件夹 700 chmod 700 .ssh
authorized_keys文件 644 chmod 644 .ssh/authorized_keys
5. 配置实现
服务器:192.168.0.10 用户:server
客户端:192.168.0.11 用户:client
# 客户端配置
# 使用client用户登录并进入家目录
# cd /home/client
# 建立认证公钥和私钥
# ssh-keygen -t rsa (会有提示输入密码,直接回车即可)
# 之后会在家目录下建立 .ssh 文件夹,内有id_rsa(私钥)和id_rsa.pub(公钥)两个文件
# 将公钥文件上传到服务器上server的家目录
# scp ~/.ssh/id_rsa.pub [email protected]:~
# 服务器端配置
# 使用server用户登录并进入家目录
# cd /home/server
# 建立 .ssh 文件夹
# mkdir .ssh;
# 修改文件夹权限
# chmod 700 .ssh
# 将客户端传过来的id_rsa.pub文件中的内容加入到authorized_keys中
# cat id_rsa.pub >> .ssh/authorized_keys
# chmod 644 .ssh/authorized_keys
之后你从客户端使用 client 用户登录服务器的server用户时就不需要再输入密码了,但是第一次连接时还是会提示你进行远程主机公钥指纹核对并将其存入 ~/.ssh/known_hosts 文件。
边栏推荐
- PostgreSQL Usage Summary (PIT)
- [South China University of technology] information sharing of postgraduate entrance examination and re examination
- Attack and defense world web WP
- Routing in laravel framework
- Zhubo Huangyu: these spot gold investment skills are not really bad
- About the problem and solution of 403 error in wampserver
- asp. Net read TXT file
- ::ffff:192.168.31.101 是一个什么地址?
- [js] basic syntax - for loop
- Ueditor + PHP enables Alibaba cloud OSS upload
猜你喜欢

IP packet header analysis and static routing

redis6主从复制及集群

Rk3566 add LED

Xampp configuring multiple items

Can graduate students not learn English? As long as the score of postgraduate entrance examination English or CET-6 is high!

瑞能实业IPO被终止:年营收4.47亿 曾拟募资3.76亿

【云资源】云资源安全管理用什么软件好?为什么?

牛客网:拦截导弹

PHP basic syntax

几款分布式数据库的对比
随机推荐
金融壹賬通香港上市:市值63億港元 葉望春稱守正篤實,久久為功
通讯录(链表实现)
Zhubo Huangyu: these spot gold investment skills are not really bad
Usage, installation and use of TortoiseSVN
Address book (linked list implementation)
Getting started with rce
Attack and defense world crypto WP
2022 driller (drilling) examination question bank and simulation examination
Hide Chinese name
清大科越冲刺科创板:年营收2亿 拟募资7.5亿
【公开课预告】:视频质量评价基础与实践
国富氢能冲刺科创板:拟募资20亿 应收账款3.6亿超营收
Ordering system based on wechat applet
Set up a website with a sense of ceremony, and post it to the public 2/2 through the intranet
When there are too many input boxes such as input transmitted at one time in the form, the post data is intercepted
Etcd database source code analysis -- rawnode simple package
redis6事务和锁机制
leetcode 10. Regular Expression Matching 正则表达式匹配 (困难)
Personal component - message prompt
Idea remote debugging agent