开发者社区> 科技小能手> 正文

来吧~不要互相伤害,ssh之间要互相信任

简介:
+关注继续查看

两台服务器之间scp也好,pssh也好,每一次互相传输文件或者远距离控制都要输入对方账号对应的密码,这是一个很麻烦很讨厌的事儿。这么麻烦又讨厌的事儿应该怎么避免呢?这就是ssh的信任登陆。


假设A与B是两台服务器,其中A是server,B是client。A是发起ssh请求的一方,B是接收ssh请求的一方。


在A机器上,# ssh-keygen -t dsa,这一步是生成一个ssh的共/私密匙对。回车之后,会出现如下的信息:

Generating public/private dsa key pair.

Enter file in which to save the key (/root/.ssh/id_dsa): 这一步,是选择保存密匙的目录,直接回车就行

Enter passphrase (empty for no passphrase): 这一步是询问这个信任关系是否需要密码,如果是过的硬的关系,自然不需要密码的,所以继续回车

Enter same passphrase again:对上一步进行确认,三联回车,然后就是这样,不但生成了“key指纹”还生成了一个图案。

wKioL1cPsteBsBB-AABIkcjMw6Q331.png

然后来到/root/.ssh里,就会发现多了两个文件:id_dsa 和 id_dsa.pub,其中id_dsa.pub是需要给B服务器的。这样一个钥匙一式两份,A一份B一份,两个是一对所以就这样建立了信任关系。


在B服务器输入 #scp A的ip地址:/root/.ssh/id_dsa.pub /root/.ssh,这样就把A服务器的id_dsa.pub文件拽到自己的/root/.ssh文件夹里,然后#mv id_dsa.pub authorized_keys ,如果改名叫authorized_keys2 的话,就是通过SSH2的方式连接。


现在A与B之间就建立了ssh信任关系,注意!目前这个信任关系是单向的,即A找B的root用户(文件在/root文件下)要文件,是不需要B的 root用户密码,如果B反过来找A要文件的话,还是要A的密码的。


改完之后,别忘了确认authorized_keys 的chmod 是644。


要是对方机器把authorized_keys删除掉,那么scp或者pssh的话就恢复要密码的环节了。linux历史连接信息在/var/log/secure中。


ssh采用公钥要比使用密码登录安全许多倍!!!所以这种方法要大力推广!!!


无法建立信任关系时排错步骤

1.AB主机名是默认的Localhost,如果AB之间的主机名相同,可能会导致无法成功。要修改主机名用hostname 命令,修改/etc/sysconfig/network,then restart your server.

2.查看SSH配置文件/etc/ssh/ssh_config,找到IdentityFile所指定的文件是什么,有的不是默认的id_rsa,这里指定的文件要和第一部分生成的文件名要相同,这里是id_rsa.

请检查/etc/ssh/sshd_config 里面是否设置Allowusers了。

3.查看B机authorized-keys的文件权限是否为600或者644 (linux文件权限详解),如直接在server机器上vi或touch建立文件authorized_keys,可能会导致信任关系无法建立。

(实践证明:如果是root之间建信任,直接644就ok,如果是非root用户,644权限是不行的。必须要改成700,600好像也行)

4.查看/var/log/secure日志,里面应该有一些蛛丝马迹可以供你参考

  

ssh-copy-id 的缺憾

ssh-copy-id有一个很要命的问题,那就是缺省它仅仅支持SSH运行在22端口的情况,不过实际上出于安全的需要,我们往往都会更改服务器的SSH端口,比如说改成10022端口,这时候你运行ssh-copy-id就会报错了,直接修改ssh-copy-id脚本当然可以修正这个问题,但是那样显得太生硬了,实际上还有更好的办法:

[注: ssh-copy-id 把密钥追加到远程主机的 .ssh/authorized_key 上.]

# vi ~/.ssh/config 加上内容: Host server Hostname ip Port 10022 你也可以单独只加入Port一行配置,那样就是一个全局配置,保存后再运行ssh-copy-id命令就不会报错了。 


补充:经网友提示,如果端口不是22,不修改config文件,按如下方式也可以: ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"

附:

# ssh-keygen

# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"


参考资料:http://www.dongwm.com/archives/%E5%85%B3%E4%BA%8Essh%E5%91%BD%E4%BB%A4%E7%A0%94%E7%A9%B6%E4%BB%A5%E5%8F%8Assh%E4%BF%A1%E4%BB%BB%E8%AF%A6%E8%A7%A3/


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1763978


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

相关文章
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
13374 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
18624 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
18525 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11694 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
12393 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
34526 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
13762 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
8942 0
23705
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载