Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7171812
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 网络与安全

2015-02-18 11:16:46

建立Linux ssh信任及常见问题解决办法

[日期:2015-02-18] 来源:Linux社区  作者:Linux [字体:  ]
建立Linux ssh信任及常见问题解决办法

1、生成本地服务器ssh私钥,如已存在,可忽略。
$ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/root/.ssh/id_rsa):

一路回车,会在本地家目录~/.ssh/生成密钥文件,检查如果存在,则可忽略。(更多ssh-keygen使用帮助,见ssh-keygen -h)
生成以后,如下:
$ls -ltra ~/.ssh/id_rsa* 
-rw-r--r--. 1 root root  408 May  4 13:20 /root/.ssh/id_rsa.pub 
-rw-------. 1 root root 1675 May  4 13:20 /root/.ssh/id_rsa

2、ssh登陆远端服务器,开通防火墙,如已开通,可忽略
$/sbin/iptables -I INPUT -i eth0 -s 10.10.10.10 -p tcp -m tcp --dports 22 -j ACCEPT

开通防火墙以后,确认本地ssh 10.10.10.11 22能通(假设本地服务器IP:10.10.10.10,远端服务器IP为:10.10.10.11)

3、确认远端服务器存在~/.ssh/authorized_keys文件及对应目录,不存在则创建、否者可忽略。
$ls -ltra ~/ | grep ssh 
drwx------.  2 root root      4096 May  4 13:38 .ssh
$ls -ltr .ssh/authorized_keys 
-rw-------. 1 root root 408 May  4 13:38 .ssh/authorized_keys

注意:文件~/.ssh/authorized_keys的权限必须为600,目录~/.ssh/权限为700,用户家目录权限也必须是700,否者信任会失效。

4、拷贝本机生成的公钥文件(~/.ssh/id_rsa.pub)内容追加到远端服务器~/.ssh/authorized_keys中
$cat .ssh/id_rsa.pub

粘贴如上文件中的内容至目标服务器~/.ssh/authorized_keys中。

5、如觉得麻烦,可忽略3-4两步操作,使用ssh-copy-id命令一步到位。
$ssh-copy-id -i ~/.ssh/id_rsa.pub 10.10.10.11 
  
$ssh-copy-id -h 
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine

完成以后,正常情况下,我们就可以本地无密码直接ssh登陆远端服务器了。
如将本地用户luser公钥内容追加到远端用户ruser家目录~/.ssh/authorized_keys文件中,那么本地用户就可以ssh ruser@10.10.10.11(远端ip),需要访问用户的对应关系一定要搞清楚了。


6、非正常情况,我们会遇到一些错误,即使按照上面的步骤做完了以后,依然无法无密码登陆。
确认防火墙OK

确认远端~/.ssh/authorized_keys文件权限正确,并没有串行的情况。

确认公钥正确

快速使用ssh -vvv ip查看执行详细过程有无报错,并根据实际情况进行排查

查看 /var/log/audit/audit.log远端日志报错

检查远端目标服/etc/ssh/sshd_config及本地/etc/ssh/ssh_config配置是否正常

尝试重启sshd服务

7、开启sellinux以后ssh需使用密码登陆。
如下查看文件的安全上下文:
# ls -laZ .ssh/ 
drwx------  root root ?                                . 
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 .. 
-rw-r--r--  root root ?                                authorized_keys 
-rwx------  root root ?                                id_dsa 
-rwx------  root root ?                                id_dsa.pub 
-rwx------  root root ?                                id_rsa 
-rwx------  root root ?                                id_rsa.pub

如上,我的.ssh目录文件的安全上下文跟正常的不配,使用restorecon -r -vv .ssh/ 修复,并将sellinux设置为enforcing,并重启服务器以后生效。

修复以后如下:
# ls -laZ .ssh/ 
drwx------. root root system_u:object_r:ssh_home_t:s0  . 
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 .. 
-rw-r--r--. root root system_u:object_r:ssh_home_t:s0  authorized_keys 
-rwx------. root root system_u:object_r:ssh_home_t:s0  id_dsa 
-rwx------. root root system_u:object_r:ssh_home_t:s0  id_dsa.pub 
-rwx------. root root system_u:object_r:ssh_home_t:s0  id_rsa 
-rwx------. root root system_u:object_r:ssh_home_t:s0  id_rsa.pub

如果你发现如上面所显示的那样.ssh目录不是ssh_home_t,使用restorecon -r -vv /home/恢复目录文件安全上下文。

这种情况通常是因为我们最初home分区挂载根目录,未单独分区,格式化新分区并挂载家目录以后会导致这样的问题。

同样可以使用setenforce 0把SELinux关闭(或修改/etc/selinux/config 文件重启生效),不必修复文件安全上下文。

# getenforce  
Disabled 
[root@dbbak_bj_10 ~]# setenforce  
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

提高的SSH登陆认证速度的办法 

开启SSH服务让手机远程访问 Ubuntu 14.04  

如何为Linux系统中的SSH添加双重认证 

在 Linux 中为非 SSH 用户配置 SFTP 环境 

Linux 上SSH 服务的配置和管理 

SSH入门学习基础教程 

本文永久更新链接地址

阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~