1、Windows生成密钥对
在cmd运行ssh-keygen -t rsa ,在目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub。
2、将公钥复制到远程主机
在Linux中有ssh-copy-id命令将公钥复制到远程主机,但是Windows下可没有哦,那么就需要手动分发。下面使用scp命令来远程传递文件,也可以使用winscp可视化 *** 作。
scp id_rsa.pub [email protected]:/home/pi/.ssh
然后进入到远程主机将id_rsa.pub重命名为authorized_keys。
mv id_rsa.pub authorized_keys
为了保存公钥也可以cat id_rsa.pub >>authorized_keys,或cp id_rsa.pub authorized_keys 。
3、配置完成后测试正常。
上面的是Windows登陆树莓派免密配置,但是笔者配置Windows登陆centos7虚拟机时无法完成公钥认证,导致免密失败。
查看调试信息:ssh -v [email protected] ,感觉是无法认证公钥。
关闭centos7的/etc/ssh/sshd_config配置文件中秘密认证登陆后:Permission denied (publickey,gssapi-keyex,gssapi-with-mic),应该是配置文件的错误。密钥在树莓派上可以正常识别认证的。但是笔者测试修改了一个几个配置条目都不行,都不知道那里有问题,带以后再工作中解决吧,一时半会也搞不定。
2021年3月9日:
笔者在红帽redhag生产系统上查看/etc/ssh/sshd_config配置文件,发现配置文件是保持默认的,都没有修改,但是在末尾添加了一个AllowUsers,笔者将其修改后加入到centos系统中但是还是不行。
AllowUsers *@192.168.*.*
最后找到了一个权限问题,即使authorized_keys文件权限问题,因为是笔者在.ssh目录下新建的文件的默认权限是-rw-rw-r-- (664),对于authorized_keys来说权限过大,修改为644后就可以了。
测试结果如下。
还有可以免去输入用户的麻烦,这就需要解决解决本地登陆用户与远程登陆用户不一致的问题。在.ssh文件夹下新建config文件,并写入ip和用户名信息。接下来就可以使用ssh mycentos来免密免用户登陆了。
在 linux 系统管理中,设置免密码登录,进行机器的批量管理是最常用的一个方法。比如针对几十甚至上百台线上机器,通常我们会设置一台“发布机”作为中央控制机对其它线上机器免密码登录,然后进行软件、配置文件的分发、更新、部署。当然了,针对上面的问题,解决方案并非最优且唯一,比如你也可以用 expect 模拟自动输入来完成自动登录验证这一过程,或者用现在一些开源的软件自动化配置和部署工具,比如 Puppet,但这都不在本文的讨论范畴,今天咱们要说的就是这种最原始、最有效、最直接的方式:免密码登录。
(1)问题:
假设:现有2台机器
1、个人机192.168.1.110
2、服务器192.168.1.112
要使110无需密码通过ssh登入112
(2)步骤
1、创建密钥
2、复制公密到服务器
3、添加公密到192.168.112的信任区域
注: 2,3两步可由命令ssh-copy-id一步到位
4、测试
此时整个步骤已经完成,你可以尝试 ssh ip 或者 /etc/hosts 中的主机名试试。
(3)可能遇到的问题
1、在使用 ssh-copy-id 错误提示
表现:
公钥,私钥已经生成,执行上述命令完毕出现如下错误:
$ ssh-copy-id remote-machine
/usr/bin/ssh-copy-id: ERROR: No identities found
解决方法:
g 之发现缺少公钥路径,通过 -i 加上即可:
2、ssh ip 可以成功登录,ssh hostname 却失败
表现:
ssh hostname
ssh: connect to host localhost port 22: Connection refused
解决方法:
看下对方的主机名是不是在 /etc/hosts 文件中和 ip 做了映射,没有就加上即可。
3、ssh 的配置目录权限问题
由于 ssh 的权限直接关系到服务器的安全问题,因此 ssh 每次读取配置都会校验相关文件夹和文件的权限,以防止权限过大对外暴露。
表现:
设置了.ssh目录,在authorized_keys设置了key后登录还提示需要输入密码。
解决方法:
注意权限,.ssh权限700,authorized_keys权限600,就KO啦!
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
4、ssh localhost:publickey 授权失败
注:ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。
如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;
如果publickey授权失败,依然会继续使用password授权。
不要设置 PasswordAuthentication no ,它的意思是禁止密码登录,这样就只能本机登录了!
5、ssh localhost:Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
最后重启你的 linux 执行 ssh localhost
6、ssh localhost:需要密码
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
7、ssh ip 或 hostname 均提示:connection refused
目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口;
是否允许该用户登录;
本机是否设置了iptables规则,禁止了ssh的连入/连出;
具体请参考: http://hi.baidu.com/leejun_2005/item/bfc0ded296cb8ebf32db907e
(4)最后的问题
本文介绍的建立基于免密码登录,双机互信的管理方式简单、直接,但是安全就是个问题了,稍有不慎容易被一锅端,建议加上防火墙的端口、ip 策略,有条件的话试试动态口令,这样会更稳妥些。再有就是当机器规模达到上百、上千台的时候,如果对文件数据、机器状态的实时同步、一致性的要求很高的时候,这种管理方式的弊端就出来了。
(5)Refer:
http://blogread.cn/it/article/6103?f=wb ssh-copy-id帮你建立信任
http://www.lvtao.net/server/54.html ssh无密码登入设置 ssh-keygen ssh-copy-id
http://hi.baidu.com/leejun_2005/item/bfc0ded296cb8ebf32db907e SSH的安装及登录提示:connection refused的解决办法
http://www.cnblogs.com/qcly/archive/2013/07/27/3219535.html 一次由SELinux引起的ssh公钥认证失败问题
本文介绍如何通过 SSH 实现免密登录。
工作环境:
SSH 是一种网络协议,用于计算机之间的加密登录。SSH是英文Secure Shell的简写形式。
通过使用SSH,你可以把所有传输的数据进行加密更加安全可靠。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替 Telnet,又可以为FTP、Pop、甚至为 PPP 提供一个安全的"通道"。
SSH 协议更多内容看最后附的链接,有兴趣的朋友可以了解一下。
什么是免密登录呢?
通常我们登录 SSH 是通过账号和免密来登录的,输入 ssh username@ip-server 然后输入密码。
如果每次都输入密码会很麻烦,而且要对多台主机进行自动化管理,每次都要输入密码不现实。我们可以配置公钥和密钥进行免密登录。 免密登录做的事情其实就是通过 SSH 的公钥和密钥来校验身份信息。
首先你要知道每台主机有一份公钥和一份私钥。我们要做的事情可以用一张图来表示:
图片的 *** 作依次为
1.生成密匙对
之后可以在 /root/.ssh 中看到生成的密匙对
2.拷贝一份 A 的公钥给 B
此时在 B 的 authorized_keys 中就会有一份 A 的 id_rsa.pub 公钥信息。
注:第二步 *** 作的做的事情其实就是一个拷贝密钥的工作,也可以手动拷贝,但是用上面的命令更方便。
3.最后我们就可以免密登录,也就是不输入密码 A 就可以登录 B
192.168.0.10 为 B 的 ip 地址
如果要退出登录,输入 exit 即可。
192.168.0.10 是 ip 地址,也就是说登录的时候我们还要输入一次 ip。我们可以给每个主机配置一个别名,用 ssh ip-server 的方式登录。
就像人有身份z也有名字一样,我们可以通过 ip 来辨识主机。给他一个别名就是给一个 hostname 。
可以用 hostname 来查看你的主机名,要改主机名改他的配置文件
重启生效
这样主机名已经改掉了,还差一步。我们要让主机名和我们的 ip 关联在一起,修改 /etc/hosts 文件
例如:
两边都配置完成可以用 ssh slave 直接连接 slave 。如果你想自己免密连接自己那就按照上面的步骤给自己配置一份密匙就行了,动手试试吧。
SSH 协议介绍
数字签名是什么
SSH原理与运用(一):远程登录
SSH原理与运用(二):远程 *** 作与端口转发
如何在CentOS 7上修改主机名
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)