当前位置: 首页 > news >正文

SSH 免密登录

理想案例

假设一切都很顺利的话,最简单的方式如下:

  1. 使用 ssh-keygen 命令在本地生成一对密钥(Public/Private Key)
  2. 使用 ssh-copy-id username@your-server-ip 命令将本地的公钥上传到远程服务器
  3. 现在使用 ssh username@your-server-ip 命令即可免密登录了

如果之前已经在本地生成过密钥了,那第一步都可以省了。怎么看有没有生成过:使用 ls -a ~/.ssh 命令看下是否已经存在 id_rsa 和 id_rsa.pub 文件,有即生成过。

现实情况

但往往看别人玩的很嗨,到自己实操了就会出现各种问题。还是那句话:该踩的坑一个都不会少! 如果遇到问题了可以看看下面列举出来的常见的 TROUBLESHOOTING

  1. 如果你在执行 ssh-copy-id 命令时指定了某个公钥,比如 ssh-copy-id -i ~/.ssh/id_rsa_another.pub username@your-server-ip,此时注意在使用 ssh 命令远程连接的时候也需要指定这个公钥,否则默认是会拿 ~/.ssh/id_rsa.pub 去匹配的,所以你的连接命令应该是类似这样:ssh -i ~/.ssh/id_rsa_another.pub username@your-server-ip
  2. SSH 服务端可能配置了不允许公钥授权登录。查看服务器上的 /etc/ssh/sshd_config 文件里是否配置正确:PubkeyAuthentication yes
  3. SSH 服务端可能配置了不允许 root 用户登录。查看服务器上的 /etc/ssh/sshd_config 文件,其中如果包含 PermitRootLogin no 则将其改为 yes

基本原理

一张时序图最能说明问题了 :P

参考资料

  • Ssh-copy-id for copying SSH keys to servers | SSH.COM

相关文章:

  • Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)
  • vivo Z3i标准版评测 强劲配置带来酣畅体验
  • PAT A1120
  • 都是 HBase 上的 SQL 引擎,Kylin 和 Phoenix 有什么不同?
  • 2019年web前端发展趋势预测(附web前端视频教程全集)
  • 理清楚Vue的结构
  • 阿里云ACE认证之理解CDN技术
  • 数据分析沙龙杭州站,邀您报名!
  • 利用Qrcode生成二维码
  • Java到底能干嘛?
  • 【Linux】- SSH免密登陆配置
  • 企业 SpringBoot+SpringCloud(九)springboot整合Redis
  • 一文看透浏览器架构
  • 智能媒体管理(IMM)视频分析中明星识别介绍
  • 云大使推广中的常见热门问题
  • $translatePartialLoader加载失败及解决方式
  • 【mysql】环境安装、服务启动、密码设置
  • CEF与代理
  • FastReport在线报表设计器工作原理
  • HashMap ConcurrentHashMap
  • javascript数组去重/查找/插入/删除
  • Laravel5.4 Queues队列学习
  • Less 日常用法
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python 基础起步 (十) 什么叫函数?
  • ReactNativeweexDeviceOne对比
  • spring + angular 实现导出excel
  • Vue.js 移动端适配之 vw 解决方案
  • 产品三维模型在线预览
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 第2章 网络文档
  • 对JS继承的一点思考
  • 基于游标的分页接口实现
  • 微服务入门【系列视频课程】
  • 小程序button引导用户授权
  • 延迟脚本的方式
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • UI设计初学者应该如何入门?
  • ​linux启动进程的方式
  • ​Spring Boot 分片上传文件
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)常见O(n^2)排序算法解析
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (循环依赖问题)学习spring的第九天
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)setTimeout 和 setInterval 的区别
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net反编译的九款神器
  • .net生成的类,跨工程调用显示注释
  • .so文件(linux系统)