在两台linux主机上由于环境的需要,经常要配置两台主机之间免密码登录,这就要用到key认证,也就是所谓的公私钥认证。便于理解,我这里指定两台主机为 A 和 B 。如果A主机想免密码登录到B主机上,则A主机上存放私钥,B 主机上存放公钥。通过ssh-keygen 命令生成的两个文件为:公钥文件 ~/.ssh/id_rsa.pub; 私钥文件 ~/.ssh/id_rsa 。而B主机上存放公钥时,需要将id_rsa.pub的内容存放到~/.ssh/authorized_keys 文件内,并且保证权限为600 。

一、生成和导入KEY

A主机上生成key

$ ssh-keygen -t rsa

$ ls

id_rsa id_rsa.pub

将key导入到远程的B主机上,并修改权限

A主机上操作

$ cat /root/.ssh/id_rsa.pub | ssh root@xxx.xxx.xxx.xxx 'cat - >> ~/.ssh/authorized_keys'

B主机上操作

$ chmod 600 ~/.ssh/authorized_keys

不过还有更简单的方法,不需要在B主机上再修改权限 ,而直接将公钥内容导入到远程主机上,使用ssh-copy-id命令,如下:

$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx

二、配置sshd_config

配置完key后,需要在sshd_config文件中开启key认证

$ vim /etc/ssh/sshd_config

PubkeyAuthentication yes //将该项改为yes

修改完成后,通过/etc/init.d/sshd restart 重启ssh服务重新加载配置。如果想要禁用密码认证,更改如下项:

$ vim /etc/ssh/sshd_config

UsePAM yes

UserPAM no

更多配置参数及其意义,可以通过man sshd_config 查看。

三、ssh_config及多私钥配置

sshd_config是一个全局服务端的配置文件(即本机开启sshd服务的相关配置),而ssh_config则是一个全局客户端的配置文件。例如,ssh_config中其中两行就定义了每个用户下默认私钥key的路径:

# IdentityFile ~/.ssh/id_rsa

# IdentityFile ~/.ssh/id_dsa

如果出现多台server 多个私钥文件,在client主机上怎么配置呢?全部追加到 ~/.ssh/id_rsa(或id_dsa)中?经测试,这是行不通的,只有第一个私钥可以用,后面的都不行。

在多台server时,可以有两种解决方案。

1、在不同的主机上,使用相同的公钥,则这些机器的私钥也相同。客户端上只需要配置这一个私钥就可以登录所有的主机。

2、不同的主机上使用不同的公钥时, 这时会有多个不同的私钥。这就需要为不同的主机指定不同的私钥文件,这个配置可以在ssh_config中配置(具体可以参看该文件的配置样例)。当然更多情况下,我们只会在要使用的用户做个情化的配置,配置文件为~/.ssh/config(该文件不存在时,请创建之),格式如下:

Host xxxx

IdentityFile 私钥文件名

Port 端口号

User 你登陆xxxx服务器用的账号

注:这里的配置文件同样可以参看ssh_config里的配置,也可以通过man ssh_config获取更多有用信息。

Host *

User www

Port 22

CheckHostIP no

Compression yes

ForwardAgent yes

Host 10.1.100.*

User dev

Port 22

IdentityFile ~/.ssh/dev.key

如上面的配置,默认我们连接所有的主机(除后面给出的10.1.100.*之外的所有主机)时,默认使用户名为www ,即 ssh 172.20.1.100 = ssh www@172.20.1.100 -p 22 。当我们连接10.1.100.* 下的所有主机时,默认会使用dev用户,默认的私钥会用 ~/.ssh/dev.key 文件。同理,可以增加更多配置。

注:出于安全等考虑,一定要将 ~/.ssh/config文件和 ~/.ssh/key文件的权限设为600

linux ssh公钥文件,linux配置ssh公钥认证相关推荐

  1. Linux下使用Google Authenticator配置SSH登录动态验证码

    说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个 验证码,只有输入正确的验证码之后,再输入 密码才能登录.这样就增强了ssh登录的安全性. 3.账 ...

  2. windows ssh传文件linux,利用SSH secure Shell实现windows与linux之间传输文件

    在windows下安装SSH secure Shell.默认安装后有两个快捷方式. linux下需要安装openssh-server utuntu默认安装了opens是-client,所以不需要安装, ...

  3. linux上hosts文件如何配置

    linux上hosts文件如何配置 一.什么是host Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏 ...

  4. linux的头文件下载,Linux内核头文件(linux headers)

    更新 Linux 内核头文件(linux headers) 三 8th, 2013 2,474 views | 发表评论 | Trackback 一般来说,如果不是自己编译 kernel,那么更新头文 ...

  5. linux配置ssh密码远程登录,配置ssh 无需密码即可登录远程服务器

    在平时工作或者开发自己的项目时,经常需要登录部署了项目代码的服务器来做一些调试,配置等相关的操作,像sftp.rsync之类的工具也是基于ssh通道来工作的.但是经常输密码登录服务器又会让人觉得很烦, ...

  6. linux git ssh 配置文件,git bash配置ssh 登录 Linux的方法

    1.首先在 Linux 服务器上生成公钥和私钥文件,默认的存放目录在~/.ssh下. ssh-keygen 可以将密码留空,这样之后就可以免密码登录. 2.将私钥文件拷贝到本机. scp root@1 ...

  7. Linux环境非root用户配置SSH免密登录(配置原理)

    问题产生背景: 有三台CentOS 7.5机器要部署hadoop分布式环境,机器信息如下 IP 地址 主机名 192.168.119.100 node01 192.168.119.110 node02 ...

  8. windows ssh传文件linux,linux与windows通过SSH文件传输

    windows SSH 客户端下载地址:点击打开链接 linux操作系统:CentOS 7 开启SSH服务:chkconfig sshd on 然后在windows上安装SSH. 在linux上查询I ...

  9. xp和linux的引导文件,Linux与XP双系统中grub引导配置笔记

    今天自己试验了一下,恢复Linux启动的问题,现在感觉启动变得很方便了.在网上找了些资料,自己也总结了一种方法,下面介绍一下怎么解决. 一般,硬盘安装Linux都是用grub做引导,那么安装后,系统每 ...

最新文章

  1. 精心分享7个小巧却强大的电脑端小软件,让人大开眼界!
  2. java fix_Java中的低延迟FIX引擎
  3. 判断两个数组有相同的数据
  4. 《go程序设计语言》读书笔记
  5. JavaScript_Object.assign(目标对象,源对象1,源对象2,...)
  6. 澳大利亚短租市场火爆 “祖母房”成为热搜
  7. dismiss ios pop效果_iOS实现自定义炫酷的弹出视图(popView)
  8. Spring Cloud Ribbon 负载均衡客户端调用示例
  9. 中压变频器行业现状调研及趋势分析报告
  10. Unity WebGL 修改鼠标指针
  11. 高斯-马尔科夫过程的充要条件(正态随机过程又是马尔科夫过程的充要条件)
  12. C盘爆满?简单几招教你释放、清理C盘几十G空间,最有效的C盘清理方法
  13. 编写一个JSP页面,显示大写英文字母表
  14. 大数据分析数据挖掘工具有哪些
  15. 从零开始山寨Caffe·伍:Protocol Buffer简易指南
  16. 数据库SQL实战 --43.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
  17. 我对ML和DL的看法
  18. RINEX 2.11 观测值文件格式说明
  19. 通过SIM900A使用GPRS发送数据至阿里云ECS服务器
  20. 笔记(二)maxflow

热门文章

  1. 魔众工具箱系统 v1.1.0 随机串生成器工具、日期计算器工具、ASCII码对照表工具
  2. VTK+Qt使用BoxWidget包围盒对三维模型进行手动交互切割
  3. 聊聊 SQL 注入那些事儿
  4. 可推导出幂律分布的模型的文献小结
  5. 宇视服务器常用linux命令
  6. 小区物业智能收费系统 怎么用
  7. JS判断字符串是否全为中文
  8. 苹果11怎么查计算机记录,iPhone11充电次数怎么查 查询iPhone11充电次数的方法
  9. DataStage 配置ODBC
  10. Java基础笔记(2)——HashMap的源码,实现原理,底层结构是怎么样的