ssh免密钥登录
说明:下文中说的
'客户端'指的是你所使用的本地机器;
'服务端'指的是远程你要连接的机器;
----------------------------------------------------------
1.首先在客户端打开shell窗口,输入能生成'公钥,私钥对'的命令:
ssh-keygen -t rsa -P '' #注意参数-P中的P是大写的
#-P后面的单引号对与大写P之前有空格
2.稍等会让你输入生成的文件保存在哪,默认的位置是家目录,一般直接回车即可
#在没改变存储位置的情况下,会在家目录生成一个隐藏的.ssh文件夹,并且在.ssh文件夹里又生成了一个公钥文件:id_rsa.pub,和一个私钥文件:id_rsa
#.ssh为隐藏文件,直接ls显示不出来,要用ls -a才能显示出来,看不看得见都不影响cd .ssh命令
3.利用scp或其它方式将.ssh文件夹中的公钥复制到服务器端(我是用scp复制的)
scp /home/pi/.ssh/id_rsa.pub yang@138.128.204.165:/home/yang/
#因为是利用scp方式传输的,所以会提示你输密码,如果已实现ssh的免密码登录了,再用scp的时候就不用再输密码了
#其实scp传输的时候也有几个坑,如果没系统的看过scp文档的话,简单说一下:1.其实我传文件的时候用的不是上面写的那条命令,而是scp -P 10022 /home/pi/.ssh/id_rsa.pub yang@138.128.204.165:/home/yang/,可以看到多了个'-P 10022',是因为我的ssh服务端设置的ssh连接端口号是10022,其实平时咱们看到的没有加端口的命令实际上是有一个隐式的-P 22在里面呢(22是ssh安装时默认的端口),就相当于你写了'scp 本地/远程 远程/本地后',scp还会处理一下,变成'scp -P 22 本地/远程 远程/本地'再发送到远端的服务器
4.在远程服务器的家目录下创建.ssh文件夹,然后将家目录的刚刚从本地传过去的id_rsa.pub复制到.ssh文件夹下,并且改名为authorized_keys
#我是在远程服务器上也执行了1中的命令系统给生成的,不过这样比直接用mkdir创建麻烦,当时就是考虑是不是自己创建不行,是不是在远程服务器的.ssh也是要用1中的命令创建的呢,保险起见那么办的
#!网上的教程不是先将id_rsa.pub复制到.ssh后改名为authorized_keys,而是在家目录就直接用cat id_rsa.pub >>.ssh/authorized_keys,我想应该是如果有多台机器都想免密码连接到这台远程服务器,可以将多台本地客户机生成的id_rsa.pub都追加到一个文件里面(我也只是猜测,有时间实践一下)
5.将authorized_keys的权限设置为600
#chmod 600 authorized_keys 我这里直接写的authorized_keys是因为当前路径就是在.ssh文件夹下,如果当前位置不是.ssh文件夹authorized_keys必须用绝对路径
#之后再连就能连上了,关于连接这里也有一点是需要注意的,平时大家都是写的'ssh 远程服务器ip'这种方式连的,但有些人这么连但连接不上,为什么呢?是因为用这种方式连的人是因为远程服务器上有和你正在登录的用户同名的用户,并且远程服务器上ssh默认的端口是22,才能用那种直接连的方式,否则,如果远程服务器上的ssh连接密码变了,你在连的时候就要加上'-P 端口号',如果远程服务器上的用户名没有和你在本地正在登录的这个用户重名的,你还需要指定'-l 用户名'才可以,所以我连接我的远程服务器是这样的'ssh -l yang -P 10022 aaa.bbb.ccc.ddd'.话又说回来了,就算是用'ssh ip地址'连接的,正如前面说的,在本机次命令发给远程服务器之前它还是加工了一下,将默认的用户名和密码参数加上了,即你写的是 ssh www.xxx.yyy.zzz,但发送之前ssh又处理了一下,ssh -l 本地当前登录的用户名 -P 22 www.xxx.yyy.zzz'然后将处理后的这条命令发到远程服务器进行登录操作;免密码登录是在前面说的基础上再参考http://os.51cto.com/art/201209/358478.htm
设置好免密码登录后还连接不上的可能原因与解决办法?
1.免密码登录设置以后用A用户可以连上去,但是用B用户就连不上了?
::记住最重要的一点,你要想用B免密码登录,则1.在/home/B/下必须有.ssh文件夹,2.并且.ssh文件夹里有一个authorized_keys文件(该文件其实就是将客户端的id_rsa.pub改了个名),3.且该文件的权限为600.这可能就能解释用A能连上用B连不上的问题了,就是因为A用户的家目录下有一个名叫.ssh的目标,一般该目录的权限为700;并且.ssh目录下有一个名为authorized_keys的文件,该文件权限为600(这里面还有一个坑!!!就是如果.ssh目录是自建的一定要看一下文件夹权限是不是700,最重要的是如果.ssh文件夹里的authorized是从其它目录里面复制过来的,千万千万要看看该文件的属主和属组,如果你你从A家目录下的.ssh文件夹里复制过来的,千万要看一下如果复制过来后authorized的属主和属组还是A的要用chown给改成B的,否则因为它的权限为600,只有属主可以读写,而当ssh无密码连接的时候又需要读取该文件和客户端的比较,因为B没有权限所以就无法进行读取操作,更别说比较了,故会登录失败(上面有一个关于免密码登录的原理链接,可以点进去看看,其中就说了,无密码登录会读取.ssh里的authorized_keys文件,如果你使用的用户对该文件没有读权限,结果肯定是失败的))
追加1:免密码登录的时候,因为我们是将客户端生成的公钥放在了某一个用户的主目录下的.ssh文件夹里并重命名为authorized_keys,这里强调的是'一个',比如说我在/home/yang/.ssh/个路径下我将客户端传过来的id_rsa.pub改名为authorized_keys,并设置文件权限为600,重启服务后,我在客户端连的时候只有两种情况可以连上,假设我的ssh连接端口改成了10022,第一种:客户端本地用户是yang,则可以用'ssh -P 10022 xxx.xxx.xxx.xxx'去连.还有一种情况就是客户端本地用户不是yang则用'ssh -l yang -P 10022 xxx.xxx.xxx.xxx'去连;所以这个免密码登录其实是对远程机器上的某一个或某几个用户而言的,而不是说你只要启动了免密码登录了,随便指定一个远程机器上有的用户就可以了,必须是你的公钥传到了哪个用户的家目录下的.ssh里(当然已改名为authorized.keys)你才可以用哪个用户去免密码登录,否则都要输入密码
ssh免密钥登录的更多相关文章
- linux系统ssh免密钥登录配置
linux主机配置ssh免密钥登录,具体配置如下: 1.执行命令ssh-keygen -t rsa,生成公钥和私钥(具体步骤详见下图) 2.会在当前用户的家目录的.ssh/生成公钥和私钥, 3.执行s ...
- Linux机器之间SSH免密钥登录设置
SSH免密钥登录 私钥:密钥留在本机 公钥:密钥发给其他机 hadoop01 生成密钥: ssh-keygen -t rsa (密钥存放路径:/root/.ssh) id_rsa:私钥 id_rsa. ...
- [CentOS] SSH 免密钥登录
一.环境说明: 操作系统:CentOS-7-x86_64-Minimal-1611 虚拟机:VMware® Workstation 12 Pro:12.5.5 build-5234757 服务器:no ...
- 014-配置SSH免密钥登录
问题:client端需要免密钥登录服务器server如何配置?1.前提:客户端已安装openssh-client;服务端已安装openssh-server;服务器端22号端口已经打开2.需要密钥登录时 ...
- ssh免密钥登录一例问题
今天遇到一个奇怪的问题,在同一机器上创建的普通用户使用 ssh-copy-id -i .ssh/id_rsa.pub root@192.168.3.254 建立与root用户的免密钥通信,结果死活还是 ...
- linux配置ssh免密钥登录
https://blog.csdn.net/xiaoyi23000/article/details/80597516 1.执行命令ssh-keygen -t rsa,生成公钥和私钥 2.会在当前用户的 ...
- Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】
本文转自https://blog.csdn.net/qjc_501165091/article/details/51278696 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...
- ssh免密码登录之分发密钥
ssh免密码登录之分发密钥 1.ssh免密码登录 密码登录和密钥登录有什么不同? 密码登录(口令登录),每次登录都需要发送密码(ssh) 密钥登录,分为公钥和私钥,公钥相当于锁,私钥相当于钥匙 1.1 ...
- ssh 免密码登录 与 密钥公钥原理讲解
前言 由于最近频繁需要登录几个服务器,每次登录都需要输入密码,故相对麻烦. 由于个人服务器用于实验,故对安全性要求不是很高,故想实现ssh免密登录. 通过阅读ssh 公钥私钥认证操作及原理以及ssh公 ...
随机推荐
- 利用UIScrollView和UIPageControl实现多页图片欢迎页面
在.h文件当中实现UIScrollViewDelegate协议,让控制器充当代理: #import <UIKit/UIKit.h> @interface RPRootViewControl ...
- Myeclipse2014 SVN安装方法以及项目上传到svn服务器
1. 打开 Myeclipse 工具栏下的Help下的Install from Site 2.打开后弹出窗口, 并点击Add标签,如下图: 3.现在是最重要的一步,填写相关信息. 在对话框Name输入 ...
- C#Excel导出导入
using System; using System.Collections.Generic; using NPOI; using NPOI.HPSF; using NPOI.HSSF; using ...
- 异常IllegalStateException终于解决了
还是由于一个类中使用xutils进行联网请求,开启了两个线程,导致在得到请求数据之前viewPagerAdapter就已经setAdapter了,setAdapter时getCount是0,但是数据加 ...
- java正则表达式,将字符串中\后的第一个字母变成大写
java正则表达式,将字符串中\后的第一个字母变成大写 例子是比较简单,注意的是java中的“\\”意义是:我要插入一个正则表达式的反斜线,所以其后面的字符有特殊有意义.所以普通反斜线应该是" ...
- jvm栈和堆详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...
- C# Attribute(特性)之---契约---[ServiceContract] 、 [OperationContract]
代码如下 : [ServiceContract] //服务协定定义 using System.ServiceModel; public interface IInterface1 { [Operati ...
- BZOJ 1146: [CTSC2008]网络管理Network( 树链剖分 + 树状数组套主席树 )
树链剖分完就成了一道主席树裸题了, 每次树链剖分找出相应区间然后用BIT+(可持久化)权值线段树就可以完成计数. 但是空间问题很严重....在修改时不必要的就不要新建, 直接修改原来的..详见代码. ...
- BZOJ 3261: 最大异或和( 可持久化trie )
搞成前缀和然后就可以很方便地用可持久化trie维护了.时间复杂度O((N+M)*25) -------------------------------------------------------- ...
- USACO Section 4.3 Street Race(图的连通性+枚举)
虽说是IOI'95,但是也是挺水的..for 第一问,n最大为50,所以可以直接枚举起点和终点之外的所有点,然后dfs判断是否连通:for 第二问,易知答案一定是第一问的子集,所以从第一问中的答案中枚 ...