ssh登录

登录ssh一般情况有两种方法
  • 密码登录
  • 秘钥登录(免密)
大部分情况我们选择都是输入密码登录,平常使用暂时没有遇到什么问题。最近我编写了一些使用scp来传输文件的脚本,每一次scp都需要输入密码,甚是麻烦。又或者是服务器集群需要多台服务器的通信等,这个时候免密登录就至关重要了。

基本原理

免密登录的原理大概了解一下就可以啦,Client即需要免密登录的客户端,Server表示被免密登录的服务器,本文后续也以此命名。
Client生成密钥对并将公钥发给Server,Server将公钥保存;
Client要登录Server时,Server生成随机字符串并用Client的公钥加密后,发给Client;
Client用私钥将其解密后发回给Server,验证成功后登录。
在Server的秘钥文档~/.ssh/authorized_keys有Client的公钥文件id_<加密算法>.pub的条目,这个时候Client可以免密登录上Server了。图中以rsa为例。

Client秘钥

在Client生成公钥和私钥,只需要:
ssh-keygen
后面一直按回车就可以啦
当然ssh-keygen也有一些参数可选
  • -t 选择密钥类型,可选dsa、ecdsa、ed25519、rsa(默认)
  • -b 指定生成的密钥的大小,单位字节Byte
  • -C 生成密钥的描述信息,默认内容是user@hostname。(会追加到公钥.pub 内容的末尾)
  • -f 选择文件输出名字或路径
  • -N 指定新密码,'' 表示密码为空
  • -q 快速生成,不而外显示内容在终端
 ssh-keygen -t ed25519 -b 2048
在完成ssh-keygen后私钥和公钥文件生成在~/.ssh中(Windows在C:\Users\用户名\.ssh中)。
  • 私钥:id_ <加密算法>
    • id_rsa、id_dsa、id_ed25519、id_ecdsa
  • 公钥:id_<加密算法>.pub
    • id_rsa.pub、id_dsa.pub、id_ed25519.pub、id_ecdsa.pub

Server授权

Client生成的公钥,我们需要追加在Server的文件~.ssh/authorized_keys末尾。免密登录,可以存放多条。
可以使用ftp、sftp(scp命令)、http(wget、curl)等多种方法将Client公钥追加在Server授权authorized_keys文件中。也可以直接使用ssh-copy-id。
在Client执行ssh-copy-id <sever的ip>
ssh-copy-id root@192.168.2.159 -p 22
只要把Client的公钥追加到Sever的authorized_keys就可以了,哪怕你ssh连接进去vim authorized_keys粘贴效果也一样的。
对了随便说一下,know_hosts : 已知的主机公钥清单

请注意权限问题:

  • ssh目录的权限必须是700(即rwx------)
chmod 700 ~/.ssh
  • .ssh/authorized_keys文件权限必须是600(即rw------)
chmod 600 ~/.ssh/authorized_keys
  • 将sshd服务重新启动一下,退出登录,发现已经生效了,不需要输入密码登录。
systemctl restart sshd.service

命令总结

#Client中
ssh-keygen -t [dsa|ecdsa|ed25519|rsa] -d 2048
ssh-ssh-copy-id root@ip -p 22
#Sever中
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
systemctl restart sshd.service

SSH免密登录的配置的更多相关文章

  1. SSH免密登录详解

    SSH免密登录详解 SSH(Security Shell)安全外壳协议,是较为可靠的,专为远程登录会话和其他网络服务提供安全保证的协议. ​ 对于传统的网络服务程序(例如,FTP,Telnet等)来说 ...

  2. Ubuntu如何配置SSH免密登录

    前言 在搭建hadoop集群时,需要主机和副机之间实现SSH免密登录 一.环境准备 1.ubuntu两台 二.安装SSH 1.首先检测一下本机有没有安装SSH服务,如果没有任何打印说明未安装 sudo ...

  3. (11)ssh免密登录配置

    ***在Linux命令行中登录到另一台虚拟机(需要用到ssh协议) Linux中默认有ssh的服务器端和客户端,客户端的名字就叫ssh 前提是当前使用的用户名在待连接的虚拟机中存在 格式:  ssh ...

  4. 配置ssh免密登录后,仍需要密码才能登陆其中某台机器

    提示:如果是三台机器A.B.C配置了ssh免密登录,从A和B上登录C需要密码,则需要修改C的配置 修改配置文件如下: sudo vi /etc/ssh/sshd_config #禁用root账户登录, ...

  5. SSH免密登录配置

    SSH免密登录配置 本地生成密钥文件: $ ssh-keygen 输出: Generating public/private rsa key pair. Enter file in which to ...

  6. Ubuntu16.04下配置ssh免密登录

    Ubuntu16.04下配置ssh免密登录 环境准备:新建两台虚拟机,而且两台虚拟机上都装有Ubuntu16.04的系统,使两台虚拟机之间保持互通状态.分别为两台虚拟机命名为A,B.假设我们要使A虚拟 ...

  7. Centos7配置ssh免密登录群发

    ssh免密登录是客户端发送自己的公钥到服务器.用公钥进行解密,自己生成的私钥进行加密. 首先在客户端查看sshd服务是否启动 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd; ...

  8. Cmder下ssh免密登录配置

    1.本地生成ssh-key 在本地cmder终端下运行下面的命令生成ssh的公钥和私钥文件: ssh-keygen -t rsa 其中,.ssh/id_rsa为私钥文件,留在本地使用,而.ssh/id ...

  9. jsch配置sftp服务器ssh免密登录

    前期对接了一个通过ssh免密登录的需求,是基于原先密码登录sftp服务器的代码上进行改造,实际上代码改动量非常少,趁此机会对自己整理的资料做一下总结. 1. 什么是SFTP SFTP是一个安全文件传送 ...

随机推荐

  1. php判断客户端浏览器类型

    /** * 判断浏览器名称和版本 */ function get_user_browser() { if (empty($_SERVER['HTTP_USER_AGENT'])) { return ' ...

  2. 编程技巧│提高 Javascript 代码效率的技巧

    目录 一.变量声明 二.三元运算符 三.解构赋值 四.解构交换 五.箭头函数 六.字符串模版 七.多值匹配 八.ES6对象简写 九.字符串转数字 十.次方相乘 十一.数组合并 十二.查找数组最大值最小 ...

  3. 全新升级的AOP框架Dora.Interception[6]: 框架设计和实现原理

    本系列前面的五篇文章主要介绍Dora.Interception(github地址,觉得不错不妨给一颗星)的编程模式以及对它的扩展定制,现在我们来聊聊它的设计和实现原理.(拙著<ASP.NET C ...

  4. 校验日期格式为yyyy-MM-dd

    /** * 校验时间 * * @param text * @return */ public static boolean checkTime(String text) { DateFormat fo ...

  5. Codeforces Round #783 (Div. 2)

    A. Direction Change 题意 从(1,1)点出发到(n,m),每次可以向上下左右四个方向移动,但是不能与上次移动方向相同 最少要移动多少不,如果不能到达输出 -1 思路 假设n< ...

  6. 北京市行政村边界shp数据/北京市乡镇边界/北京市土地利用分类数据/北京市气象数据/降雨量分布数据/太阳辐射数据

     数据下载链接:数据下载链接​ 北京是一座有着三千多年历史的古都,在不同的朝代有着不同的称谓,大致算起来有二十多个别称.北京地势西北高.东南低.西部.北部和东北部三面环山,东南部是一片缓缓向渤海倾斜的 ...

  7. 基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  8. vue this.getOptions is not a function

    错误提示截图: 问题原因:是由于sass-loader引用的版本过低导致 解决方法:在package.json中增加以下配置后 "sass-loader": "^10&q ...

  9. shell脚本语句

    条件语句 1.if语句 语法格式: if [ expression ] then 命令 elif [ expression ] then 命令 -- else 命令 fi if语句有单分支结构,双分支 ...

  10. Harbor企业级私服Docker镜像仓库搭建及应用

    一.简介 Docker Hub作为Docker默认官方公共镜像,如果想要自己搭建私有镜像,Harbor是企业级镜像库非常好的选择. 所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭 ...