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. SAP JSON 格式化及解析。

    一.首选:/ui2/cl_json     {'key':'value'} /ui2/cl_json=>deserialize( EXPORTING json = json CHANGING d ...

  2. Linux用户、组 管理

    Linux安全模型 3A: Authentication:认证,验证用户身份 Authorization:授权,不同的用户设置不同权限 Accouting|Audition:审计 Linux用户: 管 ...

  3. Kingbase重新数据初始化,设置大小写

    KingbaseV8数据库安装完成后,删除/opt/Kingbase/ES/V8/data下所有内容,重新在其他目录初始化数据库,设置为忽略大小写 [kingbase@dbserver bin]$ . ...

  4. 常用类-Instant、DateTimeFormatter类的使用

    一.Instant 我们所处的时间点是在东八区,Java中Instant所计算出来的时间是按本初子午线的时间来算的,与我们的时间相差8个小时,也就是说当我的北京时间是上午九点时,本初子午线的时间是凌晨 ...

  5. IDEA快捷键-03

    用了很久的eclipse,换了新的公司,跟着团队的习惯也转到idea上来了.在这里记录下对idea的认识,常用的idea快捷键及使用技巧. 对比eclipse每个workspace打开一个窗口,ide ...

  6. Winsock Client Code

    以下代码来自MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/ms737591(v=vs.85).aspx #define W ...

  7. Scala(二)IO流 读取文件和保存文件

    package com.shujia.scala import java.io.{BufferedReader, FileReader, FileWriter} import scala.io.{Bu ...

  8. 常见加密算法C#实现(一)

    前言:最近项目中需要用到字符串加解密,遂研究了一波,发现密码学真的是博大精深,好多算法的设计都相当巧妙,学到了不少东西,在这里做个小小的总结,方便后续查阅. 文中关键词: 明文(P,Plaintext ...

  9. 【AcWing】周赛

    A.糖果 题目链接 链接 题目描述 给定三个正整数 a,b,c. 请计算 ⌊a+b+c2⌋,即 a,b,c 相加的和除以 2 再下取整的结果. 输入格式 第一行包含整数 T,表示共有 T 组测试数据. ...

  10. tokitsukaze and Soldier 来源:牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28886/1004 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K, ...