大家都说智能登录好用,hadoop ssh免密码登录登录好用,那到底什么是hadoop ssh免密码登录登录啊?

中国移动“一键免密登录”:免去注册登录的烦恼
对于你而言,手机号码意味着什么?联系你的唯一方式,众多App的绑定号码,还是银行预留号?很多人不愿意更换手机号都是出于以上理由。在移动互联网发展如此迅速的今天,手机号几乎已经成为了个人在网上的身份证明,尤其是在国家要求基于手机号码的网络实名制后——简而言之,所有的App都需要用户绑定手机号码。
不过,对于大多数用户而言,获取验证码,再绑定这个过程本身就很繁琐,这一步可能就会让很多人“望而却步“,尤其是一些年纪大的人,这一操作也许会让他们困扰,或者被不法分子诱骗他们的验证码。如何排除这些安全隐患?其实很简单,仅仅需要在 App中植入免密认证的 SDK即可。
通过移动网络进行免密认证则是运营商的得意领域——他们不仅拥有网络网关(免密认证需要通过运营商独有的数据网络和短信网关),还有拥有海量号码库和用户个人资料。中国移动作为国内最大的移动运营商,自然也盯上了这块蛋糕。他们开发了名为“一键免密登录”的 SDK,意图帮助开发者实现免密认证,并确保用户账号的安全。
手机号即移动互联网“身份证”
一键免密登录所带来的好处是显而易见的。相较于传统的验证码登录方式而言,免密认证可以做到一键登录,同时还能提高安全性,无需担心验证码泄露的风险。
移动互联网用户需要使用的应用数量已经不仅局限于微信,支付宝一类的常见应用,往往一部手机上会有很多常用服务。为了保证这些应用账号的安全性,用户最好是为所有的应用设置不同安全级别的不同样密码。如何管理这些密码本身就是很大的难题,要么求助于第三方管理软件,要么记下来,这些对于用户而言,都需要一定的成本(购买管理软件或者花时间精力)。如果不需要输入密码,而是通过手机号码进行认证,毫无疑问将会极大地提升用户体验。
目前,已经有一些应用开始尝试使用中国移动的“一键免密登录”了,比如金山词霸,Wi-Fi万能钥匙,航班管家,信贷之家等等。以“航班管家”为例,在用户使用数据网络的情况下,用户可以通过“一键登录”的方式进行免密身份认证。
除了进行身份认证之外,中国移动还推出了账号管理层面的“二次号查询”功能,能查询当前用户的卡号是否属于“二次号”——即运营商由于号码资源有限而再次启用的原销户卡号。很多用户虽然已经办理了“销号”业务,但却没有将号码与服务账号解绑。对于一些对安全性和保密性要求比较高的服务提供商,比如金融类应用,“二次卡查询功能”相当重要。
当运营商“二次发卡”之时,原来用户的账户可能会有风险。如果服务提供商能提前通过用户在网时间判断该用户是否更换手机号码,那么可以保证用户能在注销号码之后,权益不会受损,同时也能让重新使用该号码的用户不误收提示信息。
一键免密登录:减少开发负担,运营成本
对于开发者和产品经理而言,“一键免密登录”最大的好处在于产品的交互逻辑极大的简化和开发工程量的减少。如果仅采用机号码认证的方式,产品就无需考虑登录证等一系列的逻辑顺序,仅需集成中国移动免费向互联网应用开放的一键免密登录 SDK即可。
对于开发者而言,他们仅仅需要接入中国移动提供的 SDK而已。而在这套 SDK背后有一套完整的运行逻辑:如果它读取到了用户的号码,则实现一键免密登录;在失败的情况下,则会退回到以短信验证码登录的方式,避免用户无法登录。这一套认证闭环无需开发者担心,都将会集成在 SDK中,并能确保用户的信息不会被泄露。
对于平台运营方而言,这种方式降低了他们的运营成本,不用再绞尽脑汁地引导用户绑定手机号码,还能优化用户体验,降低注册登录环节的用户流失;同时,如果应用接入了“二次号查询服务”,还能更有效地保证用户的信息安全。
由于一键免密登录不会涉及到第三方账号的问题,因此不会出现第三方账号因为利益冲突互相封锁信息的问题。最后,相较于传统的验证码方式,一键免密登录不仅延迟更低,不会受制于短信通讯网络,并且无需填写账号和密码,让木马盗无可盗。与此同时,如果完全摒弃传统的验证码验证,那么还能节约下来一笔用于验证的服务费支出。
相信,未来这一项服务会逐渐被各个平台所使用,当应用的平台增多之后,使用平台方“反薅羊毛”的能力将会极大增强,同时个人用户的账户隐私和安全也能被增强。手机号也许会成为互联网时代的线上“身份证”。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!免密登录的意思就是不用密码就能登录看荐app?_百度知道
免密登录的意思就是不用密码就能登录看荐app?
我有更好的答案
是的,看荐支持免密登录,免密认证是要求本机号码的移动数据信号的正常连接,所以为了保证app能对本机号码的顺利获取,你在登录app的时候要先打开本机号码的移动数据连接,不要使用wifi连接。
采纳率:16%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。免密登录-python
时间: 21:58:29
&&&& 阅读:70
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX。
  在进行接口开发之前,还有一个重要的事情要处理,那就是对站点进行初始化,如果不进行初始化,那么独立文件编写的接口将会找不到,要将异常错误写入日志文件也会找不到路径,下面先上代码。
  打开main.py文件,改为下面代码(大家可以比较一下和之前代码有什么不同)
1 #!/usr/bin/evn python
2 # coding=utf-8
4 import bottle
5 import sys
6 import os
7 import logging
8 import urllib.parse
9 from bottle import default_app, get, run, request, hook
10 from beaker.middleware import SessionMiddleware
12 # 导入工具函数包
13 from common import web_helper, log_helper
14 # 导入api代码模块(初始化api文件夹里的各个访问路由,这一句不能删除,删除后将无法访问api文件夹里的各个接口)
15 import api
17 #############################################
18 # 初始化bottle框架相关参数
19 #############################################
20 # 获取当前main.py文件所在服务器的绝对路径
21 program_path = os.path.split(os.path.realpath(__file__))[0]
22 # 将路径添加到python环境变量中
23 sys.path.append(program_path)
24 # 让提交数据最大改为2M(如果想上传更多的文件,可以在这里进行修改)
25 bottle.BaseRequest.MEMFILE_MAX = 1024 * 1024 * 2
27 #############################################
28 # 初始化日志相关参数
29 #############################################
30 # 如果日志目录log文件夹不存在,则创建日志目录
31 if not os.path.exists(‘log‘):
os.mkdir(‘log‘)
33 # 初始化日志目录路径
34 log_path = os.path.join(program_path, ‘log‘)
35 # 定义日志输出格式与路径
36 logging.basicConfig(level=logging.INFO,
format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,
filename="%s/info.log" % log_path,
filemode=‘a‘)
41 # 设置session参数
42 session_opts = {
‘session.type‘: ‘file‘,
‘session.cookie_expires‘: 3600,
‘session.data_dir‘: ‘/tmp/sessions/simple‘,
‘session.auto‘: True
50 @hook(‘before_request‘)
51 def validate():
"""使用勾子处理接口访问事件"""
# 获取当前访问的Url路径
path_info = request.environ.get("PATH_INFO")
# 过滤不用做任何操作的路由(即过滤不用进行判断是否登录和记录日志的url)
if path_info in [‘/favicon.ico‘, ‘/‘, ‘/api/verify/‘]:
### 记录客户端提交的参数 ###
# 获取当前访问url路径与ip
request_log = ‘url:‘ + path_info + ‘ ip:‘ + web_helper.get_ip()
# 添加json方式提交的参数
if request.json:
request_log = request_log + ‘ params(json):‘ + urllib.parse.unquote(str(request.json))
# 添加GET方式提交的参数
if request.query_string:
request_log = request_log + ‘ params(get):‘ + urllib.parse.unquote(str(request.query_string))
# 添加POST方式提交的参数
if request.method == ‘POST‘:
request_log = request_log + ‘ params(post):‘ + urllib.parse.unquote(str(request.params.__dict__))
# 存储到日志文件中
log_helper.info(request_log)
# 处理ajax提交的put、delete等请求转换为对应的请求路由(由于AJAX不支持RESTful风格提交,所以需要在这里处理一下,对提交方式进行转换)
if request.method == ‘POST‘ and request.POST.get(‘_method‘):
request.environ[‘REQUEST_METHOD‘] = request.POST.get(‘_method‘, ‘‘)
# 过滤不用进行登录权限判断的路由(登录与退出登录不用检查是否已经登录)
url_list = ["/api/login/", "/api/logout/"]
if path_info in url_list:
# 已经登录成功的用户session肯定有值,没有值的就是未登录
session = web_helper.get_session()
# 获取用户id
manager_id = session.get(‘id‘, 0)
login_name = session.get(‘login_name‘, 0)
# 判断用户是否登录
if not manager_id or not login_name:
web_helper.return_raise(web_helper.return_msg(-404, "您的登录已失效,请重新登录"))
100 # 函数主入口
101 if __name__ == ‘__main__‘:
app_argv = SessionMiddleware(default_app(), session_opts)
run(app=app_argv, host=‘0.0.0.0‘, port=9090, debug=True, reloader=True)
# 使用uwsgi方式处理python访问时,必须要添加这一句代码,不然无法访问
application = SessionMiddleware(default_app(), session_opts)
  main.py文件里有详细的注释说明,所以不进行细说,在这里讲一讲文件大体的思路。
  因为我们编写的接口文件都放在api文件夹中,当web服务启动后需要将api里的接口文件自动装载进来,让我们可以通过url访问里面的接口,所以需要在main.py这个入口函数中,对api文件夹里的接口文件进行导入,前面讲解到我们api文件夹里有一个__init__.py文件,它会自动帮我们导入当前文件夹里的所有文件,所以我们只需要在main.py中添加import api这一行代码就可以了。
  另外,我们需要告诉python服务当前程序所在的路径,所以需要将当前文件所在的绝对路径添加到python环境变量中(第21到23行)
  我们要记录异常信息到日志,要记录客户端访问的url与提交的请求参数,方便出错时帮助我们进行排查错误,所以要初始化日志文件格式与存储路径(第30到39行)
  bottle框架有两个好用的勾子处理函数(具体流程如下图),客户端访问接口时,首先会从bottle web服务绑定的入口进入,然后调用before_request这个勾子函数(第50到97行),执行完里面的代码后再进入对应的接口函数里,当接口函数运行完毕后,又会调用after_request这个勾子函数(我们使用了nginx处理前端访问服务不存在跨域问题,所以main.py就没有添加这个勾子函数),运行完里面的代码后才返回最终结果给客户端。所以我们有很多事情可以放在这两个勾子函数中进行处理。before_request中我们可以运行初始化操作、记录客户端访问的url与提交的请求参数操作、判断用户是否已经登录等操作(如果没有这个勾子函数,我们要判断用户是否登录,就必须在每个接口文件中处理,这样一方面代码会很冗余,出现大量重复的没有必要的代码,另一方面也很容易出错或遗漏掉,造成后端权限访问漏洞。而after_request这个函数通过是用来处理输出HTTP头信息等内容,比如跨域处理等。
  第55到78行,会将客户端访问的url与各种方式提交的请求参数记录到日志。对于一些不想记录到日志的访问,可以添加到第57行。(如下图)
  第90到96行,对登录用户访问进行处理,如果未登录的,则会返回-404状态,客户端的ajax接收到这个状态后,自行处理跳转到登录页面。
  验证码接口
  我们在api文件夹中创建verify.py文件
#!/usr/bin/python
#coding: utf-8
from io import BytesIO
from bottle import get, response
from common import verify_helper, log_helper, web_helper
@get(‘/api/verify/‘)
def get_verify():
"""生成验证码图片"""
# 获取生成验证码图片与验证码
code_img, verify_code = verify_helper.create_verify_code()
# 将字符串转化成大写保存到session中
s = web_helper.get_session()
s[‘verify_code‘] = verify_code.upper()
# 输出图片流
buffer = BytesIO()
code_img.save(buffer, "jpeg")
code_img.close()
response.set_header(‘Content-Type‘, ‘image/jpg‘)
return buffer.getvalue()
except Exception as e:
log_helper.error(str(e.args))
  code_img, verify_code = verify_helper.create_verify_code() :运行verify_helper.create_verify_code() ,会返回图片流和验证码,python语言执行函数后,可以直接返回字符串、数值、元组、字典、列表等各种类型的值,返回元组类型值时,就可以使用这样的方式进行接收。
  log_helper.error(str(e.args))& 这是我们前面工具函数包时所讲到的错误记录函数,当生成验证码出现异常时,它会将异常信息记录到日志文件中,并将异常发送到我们指定的邮箱。
  添加完这个文件后,我们就可以运行一下main.py,然后在浏览器中输入http://127.0.0.1:9090/api/verify/或http://127.0.0.1:81/api/verify/,就可以看到生成的验证码了(如果使用81端口无法访问)
  登录接口
  我们在api文件夹中创建login.py文件
1 #!/usr/bin/evn python
2 # coding=utf-8
4 from bottle import put
5 from common import web_helper, encrypt_helper, db_helper
8 @put(‘/api/login/‘)
9 def post_login():
"""用户登陆验证"""
##############################################################
# 获取并验证客户端提交的参数
##############################################################
username = web_helper.get_form(‘username‘, ‘帐号‘)
password = web_helper.get_form(‘password‘, ‘密码‘)
verify = web_helper.get_form(‘verify‘, ‘验证码‘)
ip = web_helper.get_ip()
##############################################################
# 从session中读取验证码信息
##############################################################
s = web_helper.get_session()
verify_code = s.get(‘verify_code‘)
# 删除session中的验证码(验证码每提交一次就失效)
if ‘verify_code‘ in s:
del s[‘verify_code‘]
# 判断用户提交的验证码和存储在session中的验证码是否相同
if verify.upper() != verify_code:
return web_helper.return_msg(-1, ‘验证码错误‘)
##############################################################
### 获取登录用户记录,并进行登录验证 ###
##############################################################
sql = """select * from manager where login_name=‘%s‘""" % (username,)
# 从数据库中读取用户信息
manager_result = db_helper.read(sql)
# 判断用户记录是否存在
if not manager_result:
return web_helper.return_msg(-1, ‘账户不存在‘)
##############################################################
### 验证用户登录密码与状态 ###
##############################################################
# 对客户端提交上来的验证进行md5加密将转为大写(为了密码的保密性,这里进行双重md5加密,加密时从第一次加密后的密串中提取一段字符串出来进行再次加密,提取的串大家可以自由设定)
# pwd = encrypt_helper.md5(encrypt_helper.md5(password)[1:30]).upper()
# 对客户端提交上来的验证进行md5加密将转为大写(只加密一次)
pwd = encrypt_helper.md5(password).upper()
# 检查登录密码输入是否正确
if pwd != manager_result[0].get(‘login_password‘, ‘‘):
return web_helper.return_msg(-1, ‘密码错误‘)
# 检查该账号虽否禁用了
if manager_result[0].get(‘is_enable‘, 0) == 0:
return web_helper.return_msg(-1, ‘账号已被禁用‘)
##############################################################
### 把用户信息保存到session中 ###
##############################################################
manager_id = manager_result[0].get(‘id‘, 0)
s[‘id‘] = manager_id
s[‘login_name‘] = username
##############################################################
### 更新用户信息到数据库 ###
##############################################################
# 更新当前管理员最后登录时间、Ip与登录次数(字段说明,请看数据字典)
sql = """update manager set last_login_time=%s, last_login_ip=%s, login_count=login_count+1 where id=%s"""
# 组合更新值
vars = (‘now()‘, ip, manager_id,)
# 写入数据库
db_helper.write(sql, vars)
return web_helper.return_msg(0, ‘登录成功‘)
  在编写登录接口前,我们首先要了解登录接口处理的流程是怎么样的
  login.py后台登录处理接口代码可以看到,路由我们使用的是@put(‘/api/login/‘),RESTful风格中,post是用于新增记录,put是用于修改或改变服务器数据,登录我理解它肯定不是新增,它是改变用户登录的状态,所以这里使用put方式接收
  登录接口的代码有详细的注释,还有上面的流程图,所以就不再深入解说,大家自己看代码,如有不明白的,文章后面留言。
  前端登录html页面(login.html)
1 &!DOCTYPE HTML&
&meta charset="utf-8"&
&meta name="renderer" content="webkit|ie-comp|ie-stand"&
&meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"&
&meta name="viewport"
content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/&
&meta http-equiv="Cache-Control" content="no-siteapp"/&
&!--[if lt IE 9]&
&script type="text/javascript" src="lib/html5shiv.js"&&/script&
&script type="text/javascript" src="lib/respond.min.js"&&/script&
&![endif]--&
&link href="static/h-ui/css/H-ui.min.css" rel="stylesheet" type="text/css"/&
&link href="static/h-ui.admin/css/H-ui.login.css" rel="stylesheet" type="text/css"/&
&link href="static/h-ui.admin/css/style.css" rel="stylesheet" type="text/css"/&
&link href="lib/Hui-iconfont/1.0.8/iconfont.css" rel="stylesheet" type="text/css"/&
&!--[if IE 6]&
&script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js"&&/script&
&script&DD_belatedPNG.fix(‘*‘);&/script&
&![endif]--&
&title&后台登录 - H-ui.admin v3.1&/title&
&meta name="keywords" content="H-ui.admin v3.1,H-ui网站后台模版,后台模版下载,后台管理系统模版,HTML后台模版下载"&
&meta name="description" content="H-ui.admin v3.1,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。"&
25 &/head&
27 &input type="hidden" id="TenantId" name="TenantId" value=""/&
28 &div class="header"&&/div&
29 &div class="loginWraper"&
&div id="loginform" class="loginBox"&
&form class="form form-horizontal"&
&div class="row cl"&
&label class="form-label col-xs-3"&&i class="Hui-iconfont"&&/i&&/label&
&div class="formControls col-xs-8"&
&input id="username" name="username" type="text" placeholder="账号" class="input-text size-L"&
&div class="row cl"&
&label class="form-label col-xs-3"&&i class="Hui-iconfont"&&/i&&/label&
&div class="formControls col-xs-8"&
&input id="password" name="password" type="password" placeholder="密码" class="input-text size-L"&
&div class="row cl"&
&div class="formControls col-xs-8 col-xs-offset-3"&
&input id="verify" name="verify" class="input-text size-L" type="text" value=""
style="width:150"&
&img style="width: 100height: 40padding: 0vertical-align:middle" id="verifycode"
src="/api/verify/" onclick="get_verify()"& &a href="javascript:;" onclick="get_verify()"&看不清,换一张&/a&&/div&
&div class="row cl"&
&h5 class="formControls col-xs-8 col-xs-offset-3"&&span id="msg" style="color:#F00"&&/span&&/h5&
&div class="row cl"&
&div class="col-xs-8 col-xs-offset-3"&
&input type="button" class="btn btn-success size-L" onclick="submit1()"
value="&登&&&&录&"&
65 &div class="footer"&Copyright 你的公司名称 by H-ui.admin v3.1&/div&
66 &script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"&&/script&
67 &script type="text/javascript" src="static/h-ui/js/H-ui.min.js"&&/script&
68 &script&
function submit1() {
if ($("#username").val().trim().length == ‘‘) {
$("#msg").html(‘‘).append(‘请输入用户名‘);
else if ($("#password").val().trim().length == ‘‘) {
$("#msg").html(‘‘).append(‘请输入登录密码‘);
else if ($("#verify").val().trim().length != 4) {
$("#msg").html(‘‘).append(‘请输入4位图形验证码‘);
username = $("#username").val();
password = $("#password").val();
verify = $("#verify").val();
type: ‘POST‘,
url: "/api/login/",
data: {‘_method‘: ‘put‘, ‘username‘: username, ‘password‘: password, ‘verify‘: verify},
dataType: ‘json‘,
success: function (data) {
if(data && data.state&-1){
$(location).prop(‘href‘, ‘main.html‘);
$("#msg").html(‘‘).append(data.msg);
get_verify();
error: function(data){
if (data){
alert(data.msg);
get_verify();
function get_verify() {
$("#verifycode").attr("src", "/api/verify/?" + 100 * Math.random());
110 &/script&
111 &/body&
112 &/html&
  对前面下载的login.html页面进行了微调,添加了请求的AJAX代码。
  由于火狐和谷歌运行AJAX不支持PUT、DELETE等提交方式,所以AJAX提交时type类型还是POST方式,在提交参数项里面,需要增加 _method 这个参数,值为put。(由于本系列使用的是RESTful风格,所以虽然有点麻烦,但不影响我们的使用)
  html和js我也不进行详细说明,大家自己看代码吧,如果大家都要求需要对js写注释的,我到时再添加注释进去。
  相关页面功能都完成了,接下来就是进行运行调试
  在浏览器中输入:http://127.0.0.1:81/login.html 然后输入账号:admin,密码:123456,还有验证码
  点击登录,能正常跳转到http://127.0.0.1:81/main.html 页面,就表示登录接口能正常使用了。
  大家想要熟悉登录接口代码的运行,最好使用debug运行跟踪一下,看看每一行代码是怎么运行的,就清楚了。当然如果想要加深理解,最佳方式是照着代码手打一次,每完成几行就debug运行一下,看看执行效果。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:https://www.cnblogs.com/klb561/p/8688218.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!扫一扫体验手机阅读
SSH免密登录,最简版
<span type="1" blog_id="1705490" userid='
212篇文章,35W+人气,0粉丝
高并发架构之路
¥51.0051人订阅
新西兰资深网工运维之道
¥51.00385人订阅
前百度高级工程师的架构高可用实战
¥51.00223人订阅
<span type="1" blog_id="1705490" userid='我们启动linux系统之后,打开Xshell链接两个虚拟机,像我们这样的小白我是使用两个虚拟机(自己配置一个可以克隆一个,改变一下静态IP就可以),练习的时候在Xshell里链接两个虚拟机。
在其中一个虚拟机中敲入命令:ssh-keygen -t &rsa & 其中 rsa是密钥对的格式,回车之后会出来交互语句:
第一句话的意思是将生成的密钥对放在哪个文件夹,
第二句话的意思是给密钥对设置密码(我选择空=直接回车)
第三句话的意思是确认一遍密码(继续回车)
进入当前用户的家目录中,查看已经生成的公钥和密钥,因为使用自动生成的命令,在linux系统中,默认将密钥对放在家目录的.ssh文件中,因为.ssh文件是隐藏文件,所以我们用 ls -al 查看就可以看到.ssh文件夹。
.pub结尾的文件就是公钥的意思,下一步我们就要将公钥放到你想要登录的另一台虚拟机上,我们一般使用ssh-copy-id &另一台用户名@ip地址(主机名) &【我们加入 -i的命令可以指定特定的文件夹下的文件】,输入命令行之后回车,他会提醒我们是否确定链接 &我们输入 &(yes)我们在设置免密码登录,第一次的时候需要你输入当前用户的密码,之后输入 密码回车,系统提示您链接并且传输成功。
现在我们可以登录另一台的虚拟机,对应用户的家目录下查找.ssh文件夹中就会多出authorized-keys 文件
在这里我们要注意一点,我们使用的都是命令自动生成的密钥对,那么我们必须保证的两点就是.ssh文件的权限是700而 authorized-keys的权限必须是600,为了防止不必要的错误发生,这种情况使我们在不使用自动的命令下我们在一台虚拟机中将公钥拷贝到另一台虚拟机中,那就需要我们自己创建.ssh文件夹和authorized-keys文件,我们在要拷贝的文件目录下使用scp &文件名 &用户名@ip地址 :目标目录,这时候我们就需要注意 &.ssh的权限必须是700 同时 公钥的名字必须叫authorized-keys 并且权限必须是 600。
这样我们就基本配置成功了远程登录的操作,直接在 有密钥的虚拟机上 &ssh &ip地址 &就可以进行测试 。
在我们的配置过程中可能会出现一种情况就是虚拟机阻止root用户远程登录(为了系统安全),如果我们要使用root用户远程登录的话,就需要修改配置文件中的内容,我们必须切换到root用户,然后vim /etc/ssh/sshd_config &,我们在修改配置文件的时候再好进行一下备份,这样不会出现误操作导致系统崩溃。
在这个配置文件中我们可以修改系统的默认端口号(链接xshell时候选择的22就是默认端口号)
接下来往下走我们会看到是否允许root用户登录,在这我们可以根据需求更改是否同意root用户登录
往下走我们还可以看到公钥的存储位置,我们也可以修改公钥的默认存储位置 (刚学最好不要改 嘻嘻)
我在学习的时候使用的是xshell客户端学习的,所以我给大家说一下在xshell里配置免密登录,其实就是一个密钥在本地,公钥在虚拟机里,很好理解的。
在xshell中进行如下操作:
点击下一步,可以自动生成密钥对,下一步会显示是否需要密钥对密码,一般我不会填写直接略过,下一步之后我们就可以看到公钥里面的内容了,我们可以直接选择复制,然后将他粘贴到我们的.ssh下的authorized_keys,没有可以进行新建。注意文件名和权限千万不要写错了,我就犯过这种低级的错误,然后在xshell中选择工具,把密钥添加进去,然后就可以不需要密码登录了!~
&接下来,你就可以喝个咖啡庆祝一下了!!!!
阅读(...) 评论()}

我要回帖

更多关于 linux ssh免密码登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信