linux 远程ssh免密登录
时间:2022-07-24
本文章向大家介绍linux 远程ssh免密登录,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
写在前面
先说说需求:
我们平时开发、运维操作linux过程中经常需要实现将远程文件拷贝到本地或者本地文件拷贝到远程;执行远程命令等操作;这个时候建立ssh免密登录应该是一个比较好的选择;
原理
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的非对称加密算法;非对称加密算法会分别产生公钥和私钥;
现在有两台机器:ServerA和ServerB,ServerA需要免密登录ServerB,我们先在ServerA生成公钥和私钥,把公钥拷贝到ServerB指定的文件下,ServerA就可以免密登录ServerB了;
以下方法一和方法二都是使用依据上面的原理实现;
方法一:使用ssh-copy-id 命令拷贝密钥:
1、ServerA执行ssh-keygen
生成公私钥;
ssh-keygen
公私钥 默认生成路径
/root/.ssh
(这里的root是用户名,如果你是其他用户替换即可) 如图:这里会让你输入密钥的保护密码,我这里是一路回车(也就是不设置密钥密码)
生成的/root/.ssh
的文件:
2、使用ssh-copy-id
将公钥复制到ServerB中
ssh-copy-id -i id_rsa.pub文件 ServerB用户名@ServerB_Ip
#示例
ssh-copy-id -i /root/.ssh/id_rsa.pub root@139.199.196.67
这个过程需要输入ServerB对应用户密码。下图添加成功。
ok,搞定。
3、测试
ServerA执行:
ssh root@ServerB_Ip date
#示例
ssh root@139.199.196.67 date
得到:
Sat Jan 12 15:22:17 CST 2019
成功!
方法二:手工拷贝密钥
其实手工拷贝跟方法一的使用命令拷贝差不多,就是操作上原始一点;
1、生成公私钥:同方法一的步骤1;
2、手动将步骤1中ServerA生成的/root/.ssh/id_rsa.pub
拷贝到ServerB的/root/.ssh
目录下并重命名为authorized_keys
3、测试:同方法一的步骤3;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 给卷积神经网络动动刀:加法网络探究
- 用Python网络爬虫来看看最近电影院都有哪些上映的电影
- 使用 Azure Blob Stoage 实现一个静态文件服务器
- java学习--反射详解
- Redis中的管道Pipeline操作
- 查看YARN任务日志的几种方式
- 简易数字频率计(verilog HDL设计)(2020维护版本)
- C++核心准则CP.111:如果真的需要好双重检查锁,使用惯用模式
- C++核心准则CP.200:使用volatile只能表明该变量是非C++内存
- C++核心准则E.2:通过抛出异常来表明函数无法执行指定的任务
- C++核心准则E.3:异常应该只用于错误处理
- [Go] GO语言实战-gin框架项目实现中英文切换
- [Go] Go语言实战-基于websocket浏览器通知的实现
- 快10年的老前端了,我还分不清 slice 和 splice,这到底是谁的锅
- 第4章 Jenkins系统用户认证配置管理