SSH双机互信及错误解决大全-阿里云开发者社区

开发者社区> 科技小先锋> 正文

SSH双机互信及错误解决大全

简介:
+关注继续查看

    在linux系统管理中,设置免密码登录,进行机器的批量管理是最常用的一个方法。比如针对几十甚至上百台线上机器,通常我们会设置一台“发布机”作为中央控制机对其它线上机器免密码登录,然后进行软件、配置文件的分发、更新、部署。当然了,针对上面的问题,解决方案并非最优且唯一,比如你也可以用expect模拟自动输入来完成自动登录验证这一过程,或者用现在一些开源的软件自动化配置和部署工具,比如 Puppet,但这都不在本文的讨论范畴,今天咱们要说的就是这种最原始、最有效、最直接的方式:免密码登录。 

一、环境介绍

两台机器

1、个人机 192.168.1.2 主机名 jacken

2、服务器 192.168.1.3 主机名 lamp


二、操作步骤

1、个人机创建公钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@jacken ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): "回车"
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: "回车"
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
64:f3:67:a7:8e:11:d8:b1:fc:7d:34:f4:57:0d:e3:86 root@jacken
The key's randomart image is:
+--[ RSA 2048]----+
|              o  |
|             o o.|
|        + . E o.o|
|       o * o .. o|
|        S * o ..+|
|           = + .o|
|          . o . .|
|           +   . |
|          . .    |
+-----------------+
[root@jacken ~]#

2、复制公钥到服务器并被信任

1
2
3
4
5
6
[root@jacken ~]# ssh-copy-id root@192.168.1.3
root@192.168.1.3's password: 
Now try logging into the machine, with "ssh 'root@192.168.1.3'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@jacken ~]#

3、测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@jacken ~]# ssh 192.168.1.3 hostname
lamp
[root@jacken ~]# ping server01
PING server01 (192.168.1.3) 56(84) bytes of data.
64 bytes from server01 (192.168.1.3): icmp_seq=1 ttl=64 time=0.855 ms
^C
--- server01 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 509ms
rtt min/avg/max/mdev = 0.855/0.855/0.855/0.000 ms
[root@jacken ~]
[root@jacken ~]# ssh server01 'ifconfig eth0'
eth0      Link encap:Ethernet  HWaddr 00:0C:29:21:CB:7C  
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe21:cb7c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2756 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2072 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:266491 (260.2 KiB)  TX bytes:301395 (294.3 KiB)
[root@jacken ~]#


三、常见错误

1、在使用 ssh-copy-id 错误提示

错误提示:

ssh-copy-id:/usr/bin/ssh-copy-id: ERROR: No identities found 

解决方法:

缺少公钥路径,加上IP即可

ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote_ip 

2、ssh ip 可以成功登录,ssh hostname 却失败

错误提示:

ssh: connect to host localhost port 22: Connection refused

解决方法:

看下对方的主机名是不是在 /etc/hosts 文件中和 ip 做了映射,没有就加上即可。

3、ssh 的配置目录权限问题

错误提示:

登录的时候依旧让输入密码

由于 ssh 的权限直接关系到服务器的安全问题,因此 ssh 每次读取配置都会校验相关文件夹和文件的权限,以防止权限过大对外暴露。 

解决方法:

服务端的.ssh目录权限要是700 authorized_keys权限600

4、ssh localhost:publickey 授权失败

解决办法:

#vim /etc/ssh/sshd_config 

开启这3行,重启服务即可

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile     .ssh/authorized_keys

5、ssh localhost:需要密码 

解决方法:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

6、Selinux与Iptables阻拦

解决方法:

关闭Selinux:

#sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config (重启生效)

#setenforce 0 (警告模式,相当于临时关闭)

设置Iptables:

#iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#iptables -A INPUT -p tcp --dport 1234 -j ACCEPT

#/etc/rc.d/init.d/iptables save

#/etc/rc.d/init.d/iptables restart


本文转自Jacken_yang 51CTO博客,原文链接:http://blog.51cto.com/linuxnote/1641930,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iis中asp存取Access时报"Microsoft JET Database Engine (0x80004005)未指定错误"的解决方法
操作系统是winxp,在iis中asp存取Access时报"Microsoft JET Database Engine (0x80004005)未指定错误",把IIS里“目录安全性”中的“匿名访问和身份验证控制”取消,换成“集成 WINDOWS身份验证”即可。
626 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9497 0
VS2010调试失败,因为没有启用集成 Windows 身份验证错误的解决办法
  由于身份验证错误,无法对请求调试的用户进行身份验证。 当您尝试单步执行 Web 应用程序或 XML Web services 时,就可能出现此问题。
640 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13186 0
SSH 文件上传错误:encountered 1 errors during the transfer终极解决方法:
以下方法简单排序,从简单到复杂: 法一:在SSH Secure File Transfer(上传文件那个),打开“Operation”菜单,打开“File Transfer Mode”子菜单,再选择“Binary”,OK! 法二:把服务器上同名文件删掉再传 法三:如果文件在桌面上,将要上传的文件复制到其它分区,再上传! 法四:到 http://winscp.
831 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11508 0
Code::Blocks生成的EXE文件执行错误解决:The program can't start because libgcc_s_dw2-1.dll is missing
想用C++弄个简单东东,看有没有可行性, 开发软件,微软的太大太肿,就选用了Code::Blocks。 测试HELLO时,在工程环境中没问题的,但生成的EXE执行有问题, 报什么 libgcc_s_dw2-1.dll这个文件有问题。
927 0
ssh 登录出现的几种错误以及解决办法
首先、确保server端的ssh服务是开的(service shhd start) 然后在client端输入: ssh usrname@serverip (远程登录) scp filename usrname@serverip:/URL (远程传输)   常出现的问题:   问题一 ssh登录的时候链接端口失败 提示(1): # ssh 192.168.***.** ssh: connect to host 192.168.***.** port 22: No route to host 这由于server端没有开机或是网络不通(这个原因很多,最简单的是网线没有插。
1331 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6895 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载